diff --git a/htmlparser-scm-0.rockspec b/htmlparser-scm-0.rockspec new file mode 100644 index 0000000..2718288 --- /dev/null +++ b/htmlparser-scm-0.rockspec @@ -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" + } +} diff --git a/src/htmlparser.lua b/src/htmlparser.lua index ea74485..99a2f2c 100644 --- a/src/htmlparser.lua +++ b/src/htmlparser.lua @@ -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