From 8937c1d49612d31ebac023819305eb4902120810 Mon Sep 17 00:00:00 2001 From: Guilian Date: Sat, 18 Jan 2025 13:03:01 +0100 Subject: [PATCH] feat: DOM element child index and next siblings methods --- html.lua | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/html.lua b/html.lua index d2da1b3..5272233 100644 --- a/html.lua +++ b/html.lua @@ -35,10 +35,38 @@ local VOID_TAGS = { function M.make_dom_element( tag_name, parent_elem ) local o = { tag_name = tag_name, - parent = parent_elem, - children = {}, attributes = {}, - content = "" + content = "", + + children = {}, + parent = parent_elem, + + get_child_index = function( self ) + if not self.parent then + return -1 + end + + for i, child in ipairs(self.parent.children) do + if child == self then return i end + end + end, + + get_next_siblings = function( self ) + if not self.parent then return nil end + + local found_self = false + for _, child in ipairs(self.parent.children) do + if found_self then + return child + end + + if child == self then + found_self = true + end + end + + return nil + end, } if parent_elem then @@ -376,6 +404,8 @@ function M.parse_tokens_into_document( TOKENS ) i = i+1 end + DOCUMENT = M.clean_text_nodes( DOCUMENT ) + return DOCUMENT end @@ -461,9 +491,7 @@ function M.parse( html_string ) local document = M.parse_tokens_into_document( tokens ) - local cleaned_doc = M.clean_text_nodes( document ) - - return cleaned_doc + return document end return M