Skip to content

Commit 6d14fe1

Browse files
committed
Eval functions if passed directly to element()
1 parent bd70369 commit 6d14fe1

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/XMLNode.coffee

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ module.exports = class XMLNode
2828
if _.isArray name
2929
for item in name
3030
lastChild = @element item
31+
else if _.isFunction name
32+
name = name.apply()
33+
lastChild = @element name
3134
else if _.isObject name
3235
# evaluate functions
3336
for own key, val of name
@@ -62,6 +65,7 @@ module.exports = class XMLNode
6265

6366
else
6467
name = '' + name
68+
6569
# text node
6670
if @stringify.convertTextKey and name.indexOf(@stringify.convertTextKey) == 0
6771
lastChild = @text text

test/object.coffee

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,5 +180,27 @@ vows
180180
'</myroot>'
181181

182182
assert.strictEqual topic.end(), xml
183+
184+
'From JS object (simple array)':
185+
topic: () ->
186+
obj = [
187+
"one"
188+
"two"
189+
() -> return "three"
190+
]
191+
192+
xmlbuilder.create('root', { headless: true })
193+
.ele(obj)
194+
195+
'resulting XML': (topic) ->
196+
xml = '<root>' +
197+
'<one/>' +
198+
'<two/>' +
199+
'<three/>' +
200+
'</root>'
201+
202+
assert.strictEqual topic.end(), xml
203+
204+
183205
.export(module)
184206

0 commit comments

Comments
 (0)