xmltree minor improvement (#16085)
This commit is contained in:
parent
dd57d46f2f
commit
3040f05505
2 changed files with 88 additions and 87 deletions
|
|
@ -312,7 +312,7 @@ proc add*(father, son: XmlNode) {.inline.} =
|
||||||
add(father.s, son)
|
add(father.s, son)
|
||||||
|
|
||||||
proc insert*(father, son: XmlNode, index: int) {.inline.} =
|
proc insert*(father, son: XmlNode, index: int) {.inline.} =
|
||||||
## Insert the child `son` to a given position in `father`.
|
## Inserts the child `son` to a given position in `father`.
|
||||||
##
|
##
|
||||||
## `father` and `son` must be of `xnElement` kind.
|
## `father` and `son` must be of `xnElement` kind.
|
||||||
##
|
##
|
||||||
|
|
@ -335,7 +335,7 @@ proc insert*(father, son: XmlNode, index: int) {.inline.} =
|
||||||
insert(father.s, son, len(father.s))
|
insert(father.s, son, len(father.s))
|
||||||
|
|
||||||
proc delete*(n: XmlNode, i: Natural) =
|
proc delete*(n: XmlNode, i: Natural) =
|
||||||
## Delete the `i`'th child of `n`.
|
## Deletes the `i`'th child of `n`.
|
||||||
##
|
##
|
||||||
## See also:
|
## See also:
|
||||||
## * `add proc <#add,XmlNode,XmlNode>`_
|
## * `add proc <#add,XmlNode,XmlNode>`_
|
||||||
|
|
@ -388,7 +388,7 @@ proc `[]`*(n: var XmlNode, i: int): var XmlNode {.inline.} =
|
||||||
result = n.s[i]
|
result = n.s[i]
|
||||||
|
|
||||||
proc clear*(n: var XmlNode) =
|
proc clear*(n: var XmlNode) =
|
||||||
## Recursively clear all children of an XmlNode.
|
## Recursively clears all children of an XmlNode.
|
||||||
##
|
##
|
||||||
## .. code-block::
|
## .. code-block::
|
||||||
## var g = newElement("myTag")
|
## var g = newElement("myTag")
|
||||||
|
|
@ -788,87 +788,3 @@ macro `<>`*(x: untyped): untyped =
|
||||||
## <a href="http://nim-lang.org">Nim rules.</a>
|
## <a href="http://nim-lang.org">Nim rules.</a>
|
||||||
##
|
##
|
||||||
result = xmlConstructor(x)
|
result = xmlConstructor(x)
|
||||||
|
|
||||||
|
|
||||||
when isMainModule:
|
|
||||||
var
|
|
||||||
x: XmlNode
|
|
||||||
|
|
||||||
x = <>a(href = "http://nim-lang.org", newText("Nim rules."))
|
|
||||||
assert $x == """<a href="http://nim-lang.org">Nim rules.</a>"""
|
|
||||||
|
|
||||||
x = <>outer(<>inner())
|
|
||||||
assert $x == """<outer>
|
|
||||||
<inner />
|
|
||||||
</outer>"""
|
|
||||||
|
|
||||||
x = <>outer(<>middle(<>inner1(), <>inner2(), <>inner3(), <>inner4()))
|
|
||||||
assert $x == """<outer>
|
|
||||||
<middle>
|
|
||||||
<inner1 />
|
|
||||||
<inner2 />
|
|
||||||
<inner3 />
|
|
||||||
<inner4 />
|
|
||||||
</middle>
|
|
||||||
</outer>"""
|
|
||||||
|
|
||||||
x = <>l0(<>l1(<>l2(<>l3(<>l4()))))
|
|
||||||
assert $x == """<l0>
|
|
||||||
<l1>
|
|
||||||
<l2>
|
|
||||||
<l3>
|
|
||||||
<l4 />
|
|
||||||
</l3>
|
|
||||||
</l2>
|
|
||||||
</l1>
|
|
||||||
</l0>"""
|
|
||||||
|
|
||||||
x = <>l0(<>l1p1(), <>l1p2(), <>l1p3())
|
|
||||||
assert $x == """<l0>
|
|
||||||
<l1p1 />
|
|
||||||
<l1p2 />
|
|
||||||
<l1p3 />
|
|
||||||
</l0>"""
|
|
||||||
|
|
||||||
x = <>l0(<>l1(<>l2p1(), <>l2p2()))
|
|
||||||
assert $x == """<l0>
|
|
||||||
<l1>
|
|
||||||
<l2p1 />
|
|
||||||
<l2p2 />
|
|
||||||
</l1>
|
|
||||||
</l0>"""
|
|
||||||
|
|
||||||
x = <>l0(<>l1(<>l2_1(), <>l2_2(<>l3_1(), <>l3_2(), <>l3_3(<>l4_1(), <>l4_2(), <>l4_3())), <>l2_3(), <>l2_4()))
|
|
||||||
assert $x == """<l0>
|
|
||||||
<l1>
|
|
||||||
<l2_1 />
|
|
||||||
<l2_2>
|
|
||||||
<l3_1 />
|
|
||||||
<l3_2 />
|
|
||||||
<l3_3>
|
|
||||||
<l4_1 />
|
|
||||||
<l4_2 />
|
|
||||||
<l4_3 />
|
|
||||||
</l3_3>
|
|
||||||
</l2_2>
|
|
||||||
<l2_3 />
|
|
||||||
<l2_4 />
|
|
||||||
</l1>
|
|
||||||
</l0>"""
|
|
||||||
|
|
||||||
let
|
|
||||||
innermost = newElement("innermost")
|
|
||||||
middle = newXmlTree("middle", [innermost])
|
|
||||||
innermost.add newText("innermost text")
|
|
||||||
x = newXmlTree("outer", [middle])
|
|
||||||
assert $x == """<outer>
|
|
||||||
<middle>
|
|
||||||
<innermost>innermost text</innermost>
|
|
||||||
</middle>
|
|
||||||
</outer>"""
|
|
||||||
|
|
||||||
x = newElement("myTag")
|
|
||||||
x.add newText("my text")
|
|
||||||
x.add newElement("sonTag")
|
|
||||||
x.add newEntity("my entity")
|
|
||||||
assert $x == "<myTag>my text<sonTag />&my entity;</myTag>"
|
|
||||||
|
|
|
||||||
85
tests/stdlib/txmltree.nim
Normal file
85
tests/stdlib/txmltree.nim
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
import xmltree
|
||||||
|
|
||||||
|
|
||||||
|
block:
|
||||||
|
var
|
||||||
|
x: XmlNode
|
||||||
|
|
||||||
|
x = <>a(href = "http://nim-lang.org", newText("Nim rules."))
|
||||||
|
assert $x == """<a href="http://nim-lang.org">Nim rules.</a>"""
|
||||||
|
|
||||||
|
x = <>outer(<>inner())
|
||||||
|
assert $x == """<outer>
|
||||||
|
<inner />
|
||||||
|
</outer>"""
|
||||||
|
|
||||||
|
x = <>outer(<>middle(<>inner1(), <>inner2(), <>inner3(), <>inner4()))
|
||||||
|
assert $x == """<outer>
|
||||||
|
<middle>
|
||||||
|
<inner1 />
|
||||||
|
<inner2 />
|
||||||
|
<inner3 />
|
||||||
|
<inner4 />
|
||||||
|
</middle>
|
||||||
|
</outer>"""
|
||||||
|
|
||||||
|
x = <>l0(<>l1(<>l2(<>l3(<>l4()))))
|
||||||
|
assert $x == """<l0>
|
||||||
|
<l1>
|
||||||
|
<l2>
|
||||||
|
<l3>
|
||||||
|
<l4 />
|
||||||
|
</l3>
|
||||||
|
</l2>
|
||||||
|
</l1>
|
||||||
|
</l0>"""
|
||||||
|
|
||||||
|
x = <>l0(<>l1p1(), <>l1p2(), <>l1p3())
|
||||||
|
assert $x == """<l0>
|
||||||
|
<l1p1 />
|
||||||
|
<l1p2 />
|
||||||
|
<l1p3 />
|
||||||
|
</l0>"""
|
||||||
|
|
||||||
|
x = <>l0(<>l1(<>l2p1(), <>l2p2()))
|
||||||
|
assert $x == """<l0>
|
||||||
|
<l1>
|
||||||
|
<l2p1 />
|
||||||
|
<l2p2 />
|
||||||
|
</l1>
|
||||||
|
</l0>"""
|
||||||
|
|
||||||
|
x = <>l0(<>l1(<>l2_1(), <>l2_2(<>l3_1(), <>l3_2(), <>l3_3(<>l4_1(), <>l4_2(), <>l4_3())), <>l2_3(), <>l2_4()))
|
||||||
|
assert $x == """<l0>
|
||||||
|
<l1>
|
||||||
|
<l2_1 />
|
||||||
|
<l2_2>
|
||||||
|
<l3_1 />
|
||||||
|
<l3_2 />
|
||||||
|
<l3_3>
|
||||||
|
<l4_1 />
|
||||||
|
<l4_2 />
|
||||||
|
<l4_3 />
|
||||||
|
</l3_3>
|
||||||
|
</l2_2>
|
||||||
|
<l2_3 />
|
||||||
|
<l2_4 />
|
||||||
|
</l1>
|
||||||
|
</l0>"""
|
||||||
|
|
||||||
|
let
|
||||||
|
innermost = newElement("innermost")
|
||||||
|
middle = newXmlTree("middle", [innermost])
|
||||||
|
innermost.add newText("innermost text")
|
||||||
|
x = newXmlTree("outer", [middle])
|
||||||
|
assert $x == """<outer>
|
||||||
|
<middle>
|
||||||
|
<innermost>innermost text</innermost>
|
||||||
|
</middle>
|
||||||
|
</outer>"""
|
||||||
|
|
||||||
|
x = newElement("myTag")
|
||||||
|
x.add newText("my text")
|
||||||
|
x.add newElement("sonTag")
|
||||||
|
x.add newEntity("my entity")
|
||||||
|
assert $x == "<myTag>my text<sonTag />&my entity;</myTag>"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue