From beabb0a0e4be001979c052c1026cf0c5569ba65a Mon Sep 17 00:00:00 2001 From: "N0\\A" Date: Mon, 13 Jul 2026 23:52:37 +0200 Subject: [PATCH] Header parsing --- src/main.odin | 4 ++-- src/parser.odin | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) 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)