added a kludge for cases of closing non-opened tags

Signed-off-by: Vadim A. Misbakh-Soloviov <git@mva.name>
This commit is contained in:
Vadim A. Misbakh-Soloviov 2015-09-03 18:37:38 +06:00
parent 74e189b9e8
commit 2a876887d2
No known key found for this signature in database
GPG Key ID: 26503D349B3B334B
2 changed files with 27 additions and 1 deletions

26
htmlparser-scm-0.rockspec Normal file
View File

@ -0,0 +1,26 @@
package = "htmlparser"
version = "scm-0"
source = {
url = "git://github.com/wscherphof/lua-htmlparser.git",
branch = "master"
}
description = {
summary = "Parse HTML text into a tree of elements with selectors",
detailed = [[
Call parse() to build up a tree of element nodes. Each node in the tree, including the root node that is returned by parse(), supports a basic set of jQuery-like selectors. Or you could walk the tree by hand.
]],
homepage = "http://msva.github.io/lua-htmlparser/",
license = "LGPL+"
}
dependencies = {
"lua >= 5.2"
}
build = {
type = "builtin",
copy_directories = {"doc", "tst"},
modules = {
htmlparser = "src/htmlparser.lua",
["htmlparser.ElementNode"] = "src/htmlparser/ElementNode.lua",
["htmlparser.voidelements"] = "src/htmlparser/voidelements.lua"
}
}

View File

@ -53,7 +53,7 @@ local function parse(text)
local closestart, closing, closename
closestart, closeend, closing, closename = string.find(root._text, "[^<]*<(/?)(%w+)", closeend)
if not closing or closing == "" then break end
tag = table.remove(opentags[closename])
tag = table.remove(opentags[closename]) or tag -- kludge for cases of closing tag that wasn't opened
closestart = string.find(root._text, "<", closestart)
tag:close(closestart, closeend + 1)
node = tag.parent