From 43d0638fd8c43fba7d05bc2335d8affa43b8d092 Mon Sep 17 00:00:00 2001 From: Gareth Pendleton Date: Thu, 9 Oct 2025 18:32:12 +0100 Subject: [PATCH] feat: Added comment parsing in elements --- src/glxml.gleam | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/glxml.gleam b/src/glxml.gleam index b1ec66e..25f3638 100644 --- a/src/glxml.gleam +++ b/src/glxml.gleam @@ -36,11 +36,12 @@ pub type Element { EmptyElem(name: String, attrs: List(Attribute)) Element(name: String, attrs: List(Attribute), elements: List(Element)) Text(content: String) + Comment(content: String) } pub fn main() { parse_document( - "\r\n \n", + "\r\n \n", ) |> echo } @@ -147,7 +148,20 @@ fn parse_content( case doc { "<" <> _ -> { - case try_parsers([parse_element(_, doctype)], doc) { + case + try_parsers( + [ + parse_element(_, doctype), + fn(doc) { + case parse_comment(doc) { + Ok(#(comment, doc)) -> Ok(#(Comment(comment), doc)) + Error(_) -> Error(Nil) + } + }, + ], + doc, + ) + { Ok(#(element, doc)) -> parse_content(doc, doctype, [element, ..content]) Error(_) -> Ok(#(list.reverse(new_content), doc)) }