parent
cb0450398a
commit
fa5707e7e2
2 changed files with 26 additions and 3 deletions
|
|
@ -472,16 +472,19 @@ proc parseEntity(my: var XmlParser, dest: var string) =
|
||||||
inc(pos, 4)
|
inc(pos, 4)
|
||||||
else:
|
else:
|
||||||
my.bufpos = pos
|
my.bufpos = pos
|
||||||
parseName(my, dest)
|
var name = ""
|
||||||
|
parseName(my, name)
|
||||||
pos = my.bufpos
|
pos = my.bufpos
|
||||||
if my.err != errNameExpected:
|
if my.err != errNameExpected and my.buf[pos] == ';':
|
||||||
my.kind = xmlEntity
|
my.kind = xmlEntity
|
||||||
else:
|
else:
|
||||||
add(dest, '&')
|
add(dest, '&')
|
||||||
|
add(dest, name)
|
||||||
if my.buf[pos] == ';':
|
if my.buf[pos] == ';':
|
||||||
inc(pos)
|
inc(pos)
|
||||||
else:
|
else:
|
||||||
markError(my, errSemicolonExpected)
|
my.err = errSemicolonExpected
|
||||||
|
# do not overwrite 'my.state' here, it's a benign error
|
||||||
my.bufpos = pos
|
my.bufpos = pos
|
||||||
|
|
||||||
proc parsePI(my: var XmlParser) =
|
proc parsePI(my: var XmlParser) =
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@ discard """
|
||||||
output: '''
|
output: '''
|
||||||
@[]
|
@[]
|
||||||
true
|
true
|
||||||
|
https://example.com/test?format=jpg&name=orig##
|
||||||
|
https://example.com/test?format=jpg&name=orig##text
|
||||||
|
https://example.com/test?format=jpg##text
|
||||||
'''
|
'''
|
||||||
"""
|
"""
|
||||||
import htmlparser
|
import htmlparser
|
||||||
|
|
@ -136,3 +139,20 @@ block t6154:
|
||||||
doAssert ps[6].attr("quux") == ""
|
doAssert ps[6].attr("quux") == ""
|
||||||
doAssert ps[6].attr("whatever") == ""
|
doAssert ps[6].attr("whatever") == ""
|
||||||
doassert ps[6].len == 0
|
doassert ps[6].len == 0
|
||||||
|
|
||||||
|
# bug #11713, #1034
|
||||||
|
var content = """
|
||||||
|
# with &
|
||||||
|
<img src="https://example.com/test?format=jpg&name=orig" alt="">
|
||||||
|
<img src="https://example.com/test?format=jpg&name=orig" alt="text">
|
||||||
|
|
||||||
|
# without &
|
||||||
|
<img src="https://example.com/test?format=jpg" alt="text">
|
||||||
|
"""
|
||||||
|
|
||||||
|
var
|
||||||
|
stream = newStringStream(content)
|
||||||
|
body = parseHtml(stream)
|
||||||
|
|
||||||
|
for y in body.findAll("img"):
|
||||||
|
echo y.attr("src"), "##", y.attr("alt")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue