opal 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -1
  3. data/lib/opal/cli.rb +9 -1
  4. data/lib/opal/cli_options.rb +12 -3
  5. data/lib/opal/cli_runners/nodejs.rb +3 -2
  6. data/lib/opal/version.rb +1 -1
  7. data/opal/corelib/kernel.rb +7 -0
  8. data/opal/corelib/runtime.js +4 -0
  9. data/spec/lib/cli_spec.rb +16 -0
  10. data/stdlib/nodejs.rb +1 -2
  11. data/stdlib/nodejs/{process.rb → kernel.rb} +7 -4
  12. data/stdlib/nodejs/node_modules/.bin/js-yaml +140 -0
  13. data/stdlib/nodejs/node_modules/glob/LICENSE +15 -0
  14. data/stdlib/nodejs/node_modules/glob/README.md +357 -0
  15. data/stdlib/nodejs/node_modules/glob/common.js +177 -0
  16. data/stdlib/nodejs/node_modules/glob/glob.js +649 -0
  17. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +17 -0
  18. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/LICENSE +15 -0
  19. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/README.md +37 -0
  20. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +44 -0
  21. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE +15 -0
  22. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +36 -0
  23. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +52 -0
  24. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +51 -0
  25. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +33 -0
  26. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +61 -0
  27. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +97 -0
  28. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  29. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/README.md +42 -0
  30. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  31. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  32. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +51 -0
  33. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +25 -0
  34. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +1 -0
  35. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +4 -0
  36. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +23 -0
  37. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/README.md +216 -0
  38. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +15 -0
  39. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +1181 -0
  40. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/minimatch.js +845 -0
  41. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +2 -0
  42. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +3 -0
  43. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +121 -0
  44. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
  45. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
  46. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
  47. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +4 -0
  48. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
  49. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
  50. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
  51. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
  52. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +73 -0
  53. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
  54. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +4 -0
  55. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
  56. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
  57. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
  58. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
  59. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +83 -0
  60. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
  61. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +75 -0
  62. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +32 -0
  63. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +1075 -0
  64. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +182 -0
  65. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +9 -0
  66. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +10 -0
  67. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +24 -0
  68. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +15 -0
  69. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +16 -0
  70. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +10 -0
  71. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +13 -0
  72. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +7 -0
  73. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +50 -0
  74. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +60 -0
  75. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +399 -0
  76. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +45 -0
  77. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +274 -0
  78. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  79. data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +27 -0
  80. data/stdlib/nodejs/node_modules/glob/node_modules/once/README.md +51 -0
  81. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE +15 -0
  82. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
  83. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +52 -0
  84. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
  85. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
  86. data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +21 -0
  87. data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +60 -0
  88. data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +23 -0
  89. data/stdlib/nodejs/node_modules/glob/package.json +72 -0
  90. data/stdlib/nodejs/node_modules/glob/sync.js +409 -0
  91. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +277 -0
  92. data/stdlib/nodejs/node_modules/js-yaml/LICENSE +21 -0
  93. data/stdlib/nodejs/node_modules/js-yaml/README.md +288 -0
  94. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +140 -0
  95. data/stdlib/nodejs/node_modules/js-yaml/bower.json +23 -0
  96. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.js +3666 -0
  97. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +3 -0
  98. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +102 -0
  99. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +18 -0
  100. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +31 -0
  101. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +22 -0
  102. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +18 -0
  103. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +197 -0
  104. data/stdlib/nodejs/node_modules/js-yaml/index.js +7 -0
  105. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +39 -0
  106. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +62 -0
  107. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +554 -0
  108. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +25 -0
  109. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +1581 -0
  110. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +78 -0
  111. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +103 -0
  112. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
  113. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
  114. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
  115. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
  116. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
  117. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
  118. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +133 -0
  119. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +37 -0
  120. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +110 -0
  121. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +183 -0
  122. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +85 -0
  123. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +84 -0
  124. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +27 -0
  125. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
  126. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
  127. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +36 -0
  128. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +56 -0
  129. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +61 -0
  130. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
  131. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +33 -0
  132. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
  133. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +98 -0
  134. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esparse +117 -0
  135. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esvalidate +177 -0
  136. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +115 -0
  137. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/LICENSE +21 -0
  138. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +239 -0
  139. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +36 -0
  140. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +22 -0
  141. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +59 -0
  142. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +13 -0
  143. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +33 -0
  144. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +28 -0
  145. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +23 -0
  146. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +49 -0
  147. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +35 -0
  148. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +270 -0
  149. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +1 -0
  150. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +146 -0
  151. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +55 -0
  152. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +47 -0
  153. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +40 -0
  154. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +48 -0
  155. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +50 -0
  156. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +43 -0
  157. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +27 -0
  158. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +26 -0
  159. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +148 -0
  160. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +50 -0
  161. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +481 -0
  162. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +14 -0
  163. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +50 -0
  164. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +54 -0
  165. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +75 -0
  166. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +1168 -0
  167. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +18 -0
  168. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +88 -0
  169. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +798 -0
  170. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +77 -0
  171. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +2 -0
  172. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +8 -0
  173. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +825 -0
  174. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +33 -0
  175. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +11 -0
  176. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +10 -0
  177. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +26 -0
  178. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +673 -0
  179. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  180. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +107 -0
  181. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +23 -0
  182. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +22 -0
  183. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +69 -0
  184. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +6 -0
  185. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +1415 -0
  186. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +62 -0
  187. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +73 -0
  188. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +117 -0
  189. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +177 -0
  190. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +3908 -0
  191. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +69 -0
  192. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +239 -0
  193. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +422 -0
  194. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +66 -0
  195. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +387 -0
  196. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +20238 -0
  197. data/stdlib/nodejs/node_modules/js-yaml/package.json +83 -0
  198. data/{package.json → stdlib/nodejs/package.json} +0 -3
  199. data/stdlib/phantomjs.rb +1 -6
  200. data/tasks/testing.rake +1 -4
  201. metadata +191 -6
  202. data/stdlib/nodejs/runtime.rb +0 -26
@@ -0,0 +1,121 @@
1
+ # brace-expansion
2
+
3
+ [Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html),
4
+ as known from sh/bash, in JavaScript.
5
+
6
+ [![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion)
7
+
8
+ [![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion)
9
+
10
+ ## Example
11
+
12
+ ```js
13
+ var expand = require('brace-expansion');
14
+
15
+ expand('file-{a,b,c}.jpg')
16
+ // => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
17
+
18
+ expand('-v{,,}')
19
+ // => ['-v', '-v', '-v']
20
+
21
+ expand('file{0..2}.jpg')
22
+ // => ['file0.jpg', 'file1.jpg', 'file2.jpg']
23
+
24
+ expand('file-{a..c}.jpg')
25
+ // => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
26
+
27
+ expand('file{2..0}.jpg')
28
+ // => ['file2.jpg', 'file1.jpg', 'file0.jpg']
29
+
30
+ expand('file{0..4..2}.jpg')
31
+ // => ['file0.jpg', 'file2.jpg', 'file4.jpg']
32
+
33
+ expand('file-{a..e..2}.jpg')
34
+ // => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg']
35
+
36
+ expand('file{00..10..5}.jpg')
37
+ // => ['file00.jpg', 'file05.jpg', 'file10.jpg']
38
+
39
+ expand('{{A..C},{a..c}}')
40
+ // => ['A', 'B', 'C', 'a', 'b', 'c']
41
+
42
+ expand('ppp{,config,oe{,conf}}')
43
+ // => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf']
44
+ ```
45
+
46
+ ## API
47
+
48
+ ```js
49
+ var expand = require('brace-expansion');
50
+ ```
51
+
52
+ ### var expanded = expand(str)
53
+
54
+ Return an array of all possible and valid expansions of `str`. If none are
55
+ found, `[str]` is returned.
56
+
57
+ Valid expansions are:
58
+
59
+ ```js
60
+ /^(.*,)+(.+)?$/
61
+ // {a,b,...}
62
+ ```
63
+
64
+ A comma seperated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.
65
+
66
+ ```js
67
+ /^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
68
+ // {x..y[..incr]}
69
+ ```
70
+
71
+ A numeric sequence from `x` to `y` inclusive, with optional increment.
72
+ If `x` or `y` start with a leading `0`, all the numbers will be padded
73
+ to have equal length. Negative numbers and backwards iteration work too.
74
+
75
+ ```js
76
+ /^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
77
+ // {x..y[..incr]}
78
+ ```
79
+
80
+ An alphabetic sequence from `x` to `y` inclusive, with optional increment.
81
+ `x` and `y` must be exactly one character, and if given, `incr` must be a
82
+ number.
83
+
84
+ For compatibility reasons, the string `${` is not eligible for brace expansion.
85
+
86
+ ## Installation
87
+
88
+ With [npm](https://npmjs.org) do:
89
+
90
+ ```bash
91
+ npm install brace-expansion
92
+ ```
93
+
94
+ ## Contributors
95
+
96
+ - [Julian Gruber](https://github.com/juliangruber)
97
+ - [Isaac Z. Schlueter](https://github.com/isaacs)
98
+
99
+ ## License
100
+
101
+ (MIT)
102
+
103
+ Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
104
+
105
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
106
+ this software and associated documentation files (the "Software"), to deal in
107
+ the Software without restriction, including without limitation the rights to
108
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
109
+ of the Software, and to permit persons to whom the Software is furnished to do
110
+ so, subject to the following conditions:
111
+
112
+ The above copyright notice and this permission notice shall be included in all
113
+ copies or substantial portions of the Software.
114
+
115
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
116
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
117
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
118
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
119
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
120
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
121
+ SOFTWARE.
@@ -0,0 +1,8 @@
1
+ var expand = require('./');
2
+
3
+ console.log(expand('http://any.org/archive{1996..1999}/vol{1..4}/part{a,b,c}.html'));
4
+ console.log(expand('http://www.numericals.com/file{1..100..10}.txt'));
5
+ console.log(expand('http://www.letters.com/file{a..z..2}.txt'));
6
+ console.log(expand('mkdir /usr/local/src/bash/{old,new,dist,bugs}'));
7
+ console.log(expand('chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}'));
8
+
@@ -0,0 +1,191 @@
1
+ var concatMap = require('concat-map');
2
+ var balanced = require('balanced-match');
3
+
4
+ module.exports = expandTop;
5
+
6
+ var escSlash = '\0SLASH'+Math.random()+'\0';
7
+ var escOpen = '\0OPEN'+Math.random()+'\0';
8
+ var escClose = '\0CLOSE'+Math.random()+'\0';
9
+ var escComma = '\0COMMA'+Math.random()+'\0';
10
+ var escPeriod = '\0PERIOD'+Math.random()+'\0';
11
+
12
+ function numeric(str) {
13
+ return parseInt(str, 10) == str
14
+ ? parseInt(str, 10)
15
+ : str.charCodeAt(0);
16
+ }
17
+
18
+ function escapeBraces(str) {
19
+ return str.split('\\\\').join(escSlash)
20
+ .split('\\{').join(escOpen)
21
+ .split('\\}').join(escClose)
22
+ .split('\\,').join(escComma)
23
+ .split('\\.').join(escPeriod);
24
+ }
25
+
26
+ function unescapeBraces(str) {
27
+ return str.split(escSlash).join('\\')
28
+ .split(escOpen).join('{')
29
+ .split(escClose).join('}')
30
+ .split(escComma).join(',')
31
+ .split(escPeriod).join('.');
32
+ }
33
+
34
+
35
+ // Basically just str.split(","), but handling cases
36
+ // where we have nested braced sections, which should be
37
+ // treated as individual members, like {a,{b,c},d}
38
+ function parseCommaParts(str) {
39
+ if (!str)
40
+ return [''];
41
+
42
+ var parts = [];
43
+ var m = balanced('{', '}', str);
44
+
45
+ if (!m)
46
+ return str.split(',');
47
+
48
+ var pre = m.pre;
49
+ var body = m.body;
50
+ var post = m.post;
51
+ var p = pre.split(',');
52
+
53
+ p[p.length-1] += '{' + body + '}';
54
+ var postParts = parseCommaParts(post);
55
+ if (post.length) {
56
+ p[p.length-1] += postParts.shift();
57
+ p.push.apply(p, postParts);
58
+ }
59
+
60
+ parts.push.apply(parts, p);
61
+
62
+ return parts;
63
+ }
64
+
65
+ function expandTop(str) {
66
+ if (!str)
67
+ return [];
68
+
69
+ return expand(escapeBraces(str), true).map(unescapeBraces);
70
+ }
71
+
72
+ function identity(e) {
73
+ return e;
74
+ }
75
+
76
+ function embrace(str) {
77
+ return '{' + str + '}';
78
+ }
79
+ function isPadded(el) {
80
+ return /^-?0\d/.test(el);
81
+ }
82
+
83
+ function lte(i, y) {
84
+ return i <= y;
85
+ }
86
+ function gte(i, y) {
87
+ return i >= y;
88
+ }
89
+
90
+ function expand(str, isTop) {
91
+ var expansions = [];
92
+
93
+ var m = balanced('{', '}', str);
94
+ if (!m || /\$$/.test(m.pre)) return [str];
95
+
96
+ var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
97
+ var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
98
+ var isSequence = isNumericSequence || isAlphaSequence;
99
+ var isOptions = /^(.*,)+(.+)?$/.test(m.body);
100
+ if (!isSequence && !isOptions) {
101
+ // {a},b}
102
+ if (m.post.match(/,.*}/)) {
103
+ str = m.pre + '{' + m.body + escClose + m.post;
104
+ return expand(str);
105
+ }
106
+ return [str];
107
+ }
108
+
109
+ var n;
110
+ if (isSequence) {
111
+ n = m.body.split(/\.\./);
112
+ } else {
113
+ n = parseCommaParts(m.body);
114
+ if (n.length === 1) {
115
+ // x{{a,b}}y ==> x{a}y x{b}y
116
+ n = expand(n[0], false).map(embrace);
117
+ if (n.length === 1) {
118
+ var post = m.post.length
119
+ ? expand(m.post, false)
120
+ : [''];
121
+ return post.map(function(p) {
122
+ return m.pre + n[0] + p;
123
+ });
124
+ }
125
+ }
126
+ }
127
+
128
+ // at this point, n is the parts, and we know it's not a comma set
129
+ // with a single entry.
130
+
131
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
132
+ var pre = m.pre;
133
+ var post = m.post.length
134
+ ? expand(m.post, false)
135
+ : [''];
136
+
137
+ var N;
138
+
139
+ if (isSequence) {
140
+ var x = numeric(n[0]);
141
+ var y = numeric(n[1]);
142
+ var width = Math.max(n[0].length, n[1].length)
143
+ var incr = n.length == 3
144
+ ? Math.abs(numeric(n[2]))
145
+ : 1;
146
+ var test = lte;
147
+ var reverse = y < x;
148
+ if (reverse) {
149
+ incr *= -1;
150
+ test = gte;
151
+ }
152
+ var pad = n.some(isPadded);
153
+
154
+ N = [];
155
+
156
+ for (var i = x; test(i, y); i += incr) {
157
+ var c;
158
+ if (isAlphaSequence) {
159
+ c = String.fromCharCode(i);
160
+ if (c === '\\')
161
+ c = '';
162
+ } else {
163
+ c = String(i);
164
+ if (pad) {
165
+ var need = width - c.length;
166
+ if (need > 0) {
167
+ var z = new Array(need + 1).join('0');
168
+ if (i < 0)
169
+ c = '-' + z + c.slice(1);
170
+ else
171
+ c = z + c;
172
+ }
173
+ }
174
+ }
175
+ N.push(c);
176
+ }
177
+ } else {
178
+ N = concatMap(n, function(el) { return expand(el, false) });
179
+ }
180
+
181
+ for (var j = 0; j < N.length; j++) {
182
+ for (var k = 0; k < post.length; k++) {
183
+ var expansion = pre + N[j] + post[k];
184
+ if (!isTop || isSequence || expansion)
185
+ expansions.push(expansion);
186
+ }
187
+ }
188
+
189
+ return expansions;
190
+ }
191
+
@@ -0,0 +1,80 @@
1
+ # balanced-match
2
+
3
+ Match balanced string pairs, like `{` and `}` or `<b>` and `</b>`.
4
+
5
+ [![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match)
6
+ [![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match)
7
+
8
+ [![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match)
9
+
10
+ ## Example
11
+
12
+ Get the first matching pair of braces:
13
+
14
+ ```js
15
+ var balanced = require('balanced-match');
16
+
17
+ console.log(balanced('{', '}', 'pre{in{nested}}post'));
18
+ console.log(balanced('{', '}', 'pre{first}between{second}post'));
19
+ ```
20
+
21
+ The matches are:
22
+
23
+ ```bash
24
+ $ node example.js
25
+ { start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' }
26
+ { start: 3,
27
+ end: 9,
28
+ pre: 'pre',
29
+ body: 'first',
30
+ post: 'between{second}post' }
31
+ ```
32
+
33
+ ## API
34
+
35
+ ### var m = balanced(a, b, str)
36
+
37
+ For the first non-nested matching pair of `a` and `b` in `str`, return an
38
+ object with those keys:
39
+
40
+ * **start** the index of the first match of `a`
41
+ * **end** the index of the matching `b`
42
+ * **pre** the preamble, `a` and `b` not included
43
+ * **body** the match, `a` and `b` not included
44
+ * **post** the postscript, `a` and `b` not included
45
+
46
+ If there's no match, `undefined` will be returned.
47
+
48
+ If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']`.
49
+
50
+ ## Installation
51
+
52
+ With [npm](https://npmjs.org) do:
53
+
54
+ ```bash
55
+ npm install balanced-match
56
+ ```
57
+
58
+ ## License
59
+
60
+ (MIT)
61
+
62
+ Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
63
+
64
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
65
+ this software and associated documentation files (the "Software"), to deal in
66
+ the Software without restriction, including without limitation the rights to
67
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
68
+ of the Software, and to permit persons to whom the Software is furnished to do
69
+ so, subject to the following conditions:
70
+
71
+ The above copyright notice and this permission notice shall be included in all
72
+ copies or substantial portions of the Software.
73
+
74
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
75
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
76
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
77
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
78
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
79
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
80
+ SOFTWARE.
@@ -0,0 +1,5 @@
1
+ var balanced = require('./');
2
+
3
+ console.log(balanced('{', '}', 'pre{in{nested}}post'));
4
+ console.log(balanced('{', '}', 'pre{first}between{second}post'));
5
+
@@ -0,0 +1,38 @@
1
+ module.exports = balanced;
2
+ function balanced(a, b, str) {
3
+ var bal = 0;
4
+ var m = {};
5
+ var ended = false;
6
+
7
+ for (var i = 0; i < str.length; i++) {
8
+ if (a == str.substr(i, a.length)) {
9
+ if (!('start' in m)) m.start = i;
10
+ bal++;
11
+ }
12
+ else if (b == str.substr(i, b.length) && 'start' in m) {
13
+ ended = true;
14
+ bal--;
15
+ if (!bal) {
16
+ m.end = i;
17
+ m.pre = str.substr(0, m.start);
18
+ m.body = (m.end - m.start > 1)
19
+ ? str.substring(m.start + a.length, m.end)
20
+ : '';
21
+ m.post = str.slice(m.end + b.length);
22
+ return m;
23
+ }
24
+ }
25
+ }
26
+
27
+ // if we opened more than we closed, find the one we closed
28
+ if (bal && ended) {
29
+ var start = m.start + a.length;
30
+ m = balanced(a, b, str.substr(start));
31
+ if (m) {
32
+ m.start += start;
33
+ m.end += start;
34
+ m.pre = str.slice(0, start) + m.pre;
35
+ }
36
+ return m;
37
+ }
38
+ }