mirror of
https://github.com/TangentFoxy/lua-htmlparser.git
synced 2025-10-02 14:52:29 +00:00
fixes #25
This commit is contained in:
@@ -4,7 +4,8 @@ local voidelements = require("htmlparser.voidelements")
|
||||
local HtmlParser = {}
|
||||
|
||||
local function parse(text)
|
||||
local root = ElementNode:new(text)
|
||||
local index = 0
|
||||
local root = ElementNode:new(index, text)
|
||||
|
||||
local node, descend, tpos, opentags = root, true, 1, {}
|
||||
while true do
|
||||
@@ -15,7 +16,8 @@ local function parse(text)
|
||||
"[^>]*>", -- include, but not capture everything up to the next ">"
|
||||
tpos)
|
||||
if not name then break end
|
||||
local tag = ElementNode:new(name, node, descend, openstart, tpos)
|
||||
index = index + 1
|
||||
local tag = ElementNode:new(index, name, node, descend, openstart, tpos)
|
||||
node = tag
|
||||
|
||||
local tagst, apos = tag:gettext(), 1
|
||||
|
@@ -3,8 +3,9 @@ local Set = require("Set")
|
||||
|
||||
local ElementNode = {}
|
||||
ElementNode.mt = {__index = ElementNode}
|
||||
function ElementNode:new(nameortext, node, descend, openstart, openend)
|
||||
function ElementNode:new(index, nameortext, node, descend, openstart, openend)
|
||||
local instance = {
|
||||
index = index,
|
||||
name = nameortext,
|
||||
level = 0,
|
||||
parent = nil,
|
||||
@@ -167,6 +168,8 @@ local function select(self, s)
|
||||
subjects = Set:new(resultset)
|
||||
::nextpart::
|
||||
end
|
||||
resultset = resultset:tolist()
|
||||
table.sort(resultset, function (a, b) return a.index < b.index end)
|
||||
return resultset
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user