mirror of
https://github.com/msva/lua-htmlparser.git
synced 2024-11-04 23:34:20 +00:00
Allow custom tag HTML5 tags to include hyphens.
This commit is contained in:
parent
66c03644e0
commit
9dc0715503
@ -12,7 +12,7 @@ local function parse(text)
|
|||||||
local openstart, name
|
local openstart, name
|
||||||
openstart, tpos, name = string.find(root._text,
|
openstart, tpos, name = string.find(root._text,
|
||||||
"<" .. -- an uncaptured starting "<"
|
"<" .. -- an uncaptured starting "<"
|
||||||
"(%w+)" .. -- name = the first word, directly following the "<"
|
"([%w-]+)" .. -- name = the first word, directly following the "<"
|
||||||
"[^>]*>", -- include, but not capture everything up to the next ">"
|
"[^>]*>", -- include, but not capture everything up to the next ">"
|
||||||
tpos)
|
tpos)
|
||||||
if not name then break end
|
if not name then break end
|
||||||
@ -51,7 +51,7 @@ local function parse(text)
|
|||||||
local closeend = tpos
|
local closeend = tpos
|
||||||
while true do
|
while true do
|
||||||
local closestart, closing, closename
|
local closestart, closing, closename
|
||||||
closestart, closeend, closing, closename = string.find(root._text, "[^<]*<(/?)(%w+)", closeend)
|
closestart, closeend, closing, closename = string.find(root._text, "[^<]*<(/?)([%w-]+)", closeend)
|
||||||
if not closing or closing == "" then break end
|
if not closing or closing == "" then break end
|
||||||
tag = table.remove(opentags[closename] or {}) or tag -- kludges for the cases of closing void or non-opened tags
|
tag = table.remove(opentags[closename] or {}) or tag -- kludges for the cases of closing void or non-opened tags
|
||||||
closestart = string.find(root._text, "<", closestart)
|
closestart = string.find(root._text, "<", closestart)
|
||||||
|
11
tst/init.lua
11
tst/init.lua
@ -277,3 +277,14 @@ function test_order()
|
|||||||
assert_equal(i, tonumber(v.name), "notn order")
|
assert_equal(i, tonumber(v.name), "notn order")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function test_tagnames_with_hyphens()
|
||||||
|
local tree = htmlparser.parse([[
|
||||||
|
<tag-name id="9999">
|
||||||
|
<m id="10000"></m>
|
||||||
|
</tag-name>
|
||||||
|
]])
|
||||||
|
assert_equal(1, #tree.nodes, "top level")
|
||||||
|
assert_equal("tag-name", tree("#9999")[1].name, "#9999")
|
||||||
|
assert_equal("m", tree("#10000")[1].name, "#10000")
|
||||||
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user