Skip to content

Commit fbb3518

Browse files
committed
Update flatten helper without recursion
1 parent 0f02c50 commit fbb3518

File tree

8 files changed

+37
-30
lines changed

8 files changed

+37
-30
lines changed

docs/v2/browser-compiler-legacy/coffeescript.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/v2/browser-compiler-modern/coffeescript.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/coffeescript-browser-compiler-legacy/coffeescript.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/coffeescript-browser-compiler-modern/coffeescript.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/coffeescript/helpers.js

Lines changed: 11 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/coffeescript/nodes.js

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/coffeescript/sourcemap.js

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/helpers.coffee

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,14 @@ extend = exports.extend = (object, properties) ->
4848
# Handy for getting a list of `children` from the nodes.
4949
exports.flatten = flatten = (array) ->
5050
flattened = []
51-
for element in array
52-
if '[object Array]' is Object::toString.call element
53-
flattened = flattened.concat flatten element
54-
else
55-
flattened.push element
51+
stack = [array]
52+
while stack.length
53+
current = stack.pop()
54+
for element in current
55+
if '[object Array]' is Object::toString.call element
56+
stack.push(element)
57+
else
58+
flattened.push(element)
5659
flattened
5760

5861
# Delete a key from an object, returning the value. Useful when a node is

0 commit comments

Comments
 (0)