@@ -163,56 +163,48 @@ proc newNode(name: string, text = ""): XmlNode =
163163 new (result )
164164 result .name = name
165165 result .text = text
166+ result .attributes = newStringTable (modeCaseInsensitive)
167+ result .children = @ []
166168
167169proc child * (node: XmlNode , name: string ): XmlNode =
168170 # # finds the first element of `node` with name `name`
169171 # # returns `nil` on failure
170- if not node.children.isNil:
171- for n in node.children:
172- if n.name == name:
173- result = n
174- break
172+ for n in node.children:
173+ if n.name == name:
174+ result = n
175+ break
175176
176177proc `$` * (node: XmlNode ): string =
177178 result = " <"
178179 result .add (node.name)
179- if not node.attributes.isNil:
180- for k, v in node.attributes.pairs:
181- result .add (fmt" { k} ="" { v} "" " )
182- if node.text.len == 0 and node.children.isNil :
180+
181+ for k, v in node.attributes.pairs:
182+ result .add (fmt" { k} ="" { v} "" " )
183+ if node.text.len == 0 and node.children.len == 0 :
183184 result .add (" />" )
184185 return
185186 elif node.text.len > 0 :
186187 result .add (" >" & node.text)
187188 else :
188189 result .add (" >" )
189190
190- if not node.children.isNil:
191- for child in node.children:
192- result .add ($ child)
191+ for child in node.children:
192+ result .add ($ child)
193193 result .add (" </" & node.name & " >" )
194194
195195
196196proc addChild * (node, child: XmlNode ) =
197- if node.children.isNil:
198- node.children = @ []
199197 node.children.add (child)
200198
201199proc hasAttr * (node: XmlNode , name: string ): bool =
202200 # # returns `true` if `node` has attribute `name`
203- if node.attributes.isNil:
204- result = false
205- else :
206- result = node.attributes.hasKey (name)
201+ result = node.attributes.hasKey (name)
207202
208203proc attr * (node: XmlNode , name: string ): string =
209204 # # returns value of attribute `name`, returns "" on failure
210- if not node.attributes.isNil:
211- result = node.attributes.getOrDefault (name)
205+ result = node.attributes.getOrDefault (name)
212206
213207proc setAttr (node: XmlNode , name, value: string ) =
214- if node.attributes.isNil:
215- node.attributes = newStringTable (modeCaseInsensitive)
216208 node.attributes[name] = value
217209
218210proc parseNode (tokens: seq [XmlToken ], start = 0 ): (XmlNode , int ) =
0 commit comments