diff --git a/src/main.odin b/src/main.odin index b21bb0c..5046078 100644 --- a/src/main.odin +++ b/src/main.odin @@ -25,8 +25,8 @@ print_token :: proc(token: Token, depth: int = 0) { type_str = "Bold" case TokenType.BreakLine: type_str = "BreakLine" - case TokenType.Heading: - type_str = "Heading" + case TokenType.Header: + type_str = "Header" case TokenType.Paragraph: type_str = "Paragraph" } diff --git a/src/parser.odin b/src/parser.odin index ceac532..0daed2e 100644 --- a/src/parser.odin +++ b/src/parser.odin @@ -8,7 +8,7 @@ TokenType :: enum { Italics, Bold, BreakLine, - Heading, + Header, Paragraph, Root, } @@ -69,6 +69,18 @@ parse :: proc(lines: []string, allocator := context.allocator) -> Token { continue } + header_level, text := parse_header(line) + if header_level > 0 { + append( + ¤t_token.children, + Token{TokenType.Header, header_level, nil, current_token}, + ) + current_token = ¤t_token.children[len(current_token.children) - 1] + append(¤t_token.children, Token{TokenType.Text, text, nil, current_token}) + current_token = current_token.parent + continue + } + append(¤t_token.children, Token{TokenType.Text, line, nil, current_token}) // lvl, text := parse_header(trimmed)