feat: DOM element child index and next siblings methods
							parent
							
								
									9cbbc529b6
								
							
						
					
					
						commit
						bbb4676a67
					
				
							
								
								
									
										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