#ifndef TERRACE_PARSER_H #define TERRACE_PARSER_H struct terrace_linedata_s { char indent; unsigned int level; unsigned int offsetHead; unsigned int offsetTail; }; typedef struct terrace_linedata_s terrace_linedata_t; void terrace_parse_line(char* line, terrace_linedata_t *lineData) { if (line == 0) { // Reuse lineData->level from previous line. lineData->offsetHead = 0; lineData->offsetTail = 0; } else { unsigned int level = 0; while (line[level] == lineData->indent && level <= lineData->level + 1) ++level; lineData->level = level; lineData->offsetHead = level; lineData->offsetTail = level; while (line[lineData->offsetTail] != '\0' && line[lineData->offsetTail] != ' ') ++lineData->offsetTail; } } #endif