blob: d59e8b3029e8f0962a06a6a29b5db66ea1cc909e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
discard """
output: '''
@[]
true
'''
"""
import htmlparser
import xmltree
import strutils
from streams import newStringStream
block t2813:
const
html = """
<html>
<head>
<title>Test</title>
</head>
<body>
<table>
<thead>
<tr><td>A</td></tr>
<tr><td>B</td></tr>
</thead>
<tbody>
<tr><td></td>A<td></td></tr>
<tr><td></td>B<td></td></tr>
<tr><td></td>C<td></td></tr>
</tbody>
<tfoot>
<tr><td>A</td></tr>
</tfoot>
</table>
</body>
</html>
"""
var errors: seq[string] = @[]
let tree = parseHtml(newStringStream(html), "test.html", errors)
echo errors # Errors: </thead> expected,...
var len = tree.findAll("tr").len # len = 6
var rows: seq[XmlNode] = @[]
for n in tree.findAll("table"):
n.findAll("tr", rows) # len = 2
break
assert tree.findAll("tr").len == rows.len
block t2814:
## builds the two cases below and test that
## ``//[dd,li]`` has "<p>that</p>" as children
##
## <dl>
## <dt>this</dt>
## <dd>
## <p>that</p>
## </dd>
## </dl>
##
## <ul>
## <li>
## <p>that</p>
## </li>
## </ul>
for ltype in [["dl","dd"], ["ul","li"]]:
let desc_item = if ltype[0]=="dl": "<dt>this</dt>" else: ""
let item = "$1<$2><p>that</p></$2>" % [desc_item, ltype[1]]
let list = """ <$1>
$2
</$1> """ % [ltype[0], item]
var errors : seq[string] = @[]
let parseH = parseHtml(newStringStream(list),"statichtml", errors =errors)
if $parseH.findAll(ltype[1])[0].child("p") != "<p>that</p>":
echo "case " & ltype[0] & " failed !"
quit(2)
echo "true"
|