feat: DOM element child index and next siblings methods
parent
111da7d663
commit
8937c1d496
40
html.lua
40
html.lua
|
@ -35,10 +35,38 @@ local VOID_TAGS = {
|
||||||
function M.make_dom_element( tag_name, parent_elem )
|
function M.make_dom_element( tag_name, parent_elem )
|
||||||
local o = {
|
local o = {
|
||||||
tag_name = tag_name,
|
tag_name = tag_name,
|
||||||
parent = parent_elem,
|
|
||||||
children = {},
|
|
||||||
attributes = {},
|
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
|
if parent_elem then
|
||||||
|
@ -376,6 +404,8 @@ function M.parse_tokens_into_document( TOKENS )
|
||||||
i = i+1
|
i = i+1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
DOCUMENT = M.clean_text_nodes( DOCUMENT )
|
||||||
|
|
||||||
return DOCUMENT
|
return DOCUMENT
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -461,9 +491,7 @@ function M.parse( html_string )
|
||||||
|
|
||||||
local document = M.parse_tokens_into_document( tokens )
|
local document = M.parse_tokens_into_document( tokens )
|
||||||
|
|
||||||
local cleaned_doc = M.clean_text_nodes( document )
|
return document
|
||||||
|
|
||||||
return cleaned_doc
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
Loading…
Reference in New Issue