spade 0.0.8.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. data/.gitignore +0 -1
  2. data/.gitmodules +4 -4
  3. data/README.md +4 -0
  4. data/bin/spade +1 -1
  5. data/lib/spade.rb +0 -51
  6. data/lib/spade/cli.rb +10 -4
  7. data/lib/spade/version.rb +1 -1
  8. data/spade.gemspec +4 -21
  9. metadata +13 -482
  10. data/Gemfile +0 -3
  11. data/Gemfile.lock +0 -40
  12. data/lib/index.js +0 -14
  13. data/lib/node/loader.js +0 -146
  14. data/lib/node/sandbox.js +0 -44
  15. data/lib/spade.js +0 -1130
  16. data/lib/spade/bundle.rb +0 -171
  17. data/lib/spade/cli/base.rb +0 -354
  18. data/lib/spade/cli/owner.rb +0 -45
  19. data/lib/spade/cli/project_generator.rb +0 -58
  20. data/lib/spade/compiler.rb +0 -34
  21. data/lib/spade/console.rb +0 -39
  22. data/lib/spade/context.rb +0 -116
  23. data/lib/spade/credentials.rb +0 -36
  24. data/lib/spade/dependency_installer.rb +0 -103
  25. data/lib/spade/environment.rb +0 -35
  26. data/lib/spade/exports.rb +0 -71
  27. data/lib/spade/installer.rb +0 -40
  28. data/lib/spade/loader.rb +0 -238
  29. data/lib/spade/local.rb +0 -46
  30. data/lib/spade/package.rb +0 -157
  31. data/lib/spade/reactor.rb +0 -159
  32. data/lib/spade/remote.rb +0 -99
  33. data/lib/spade/repository.rb +0 -18
  34. data/lib/spade/server.rb +0 -66
  35. data/lib/spade/shell.rb +0 -36
  36. data/lib/spade/templates/project/LICENSE +0 -19
  37. data/lib/spade/templates/project/README.md +0 -21
  38. data/lib/spade/templates/project/lib/main.js +0 -9
  39. data/lib/spade/templates/project/project.json +0 -31
  40. data/lib/spade/templates/project/tests/main-test.js +0 -8
  41. data/package.json +0 -27
  42. data/packages/coffee-script/.gitignore +0 -8
  43. data/packages/coffee-script/.npmignore +0 -11
  44. data/packages/coffee-script/Cakefile +0 -229
  45. data/packages/coffee-script/LICENSE +0 -22
  46. data/packages/coffee-script/README +0 -47
  47. data/packages/coffee-script/Rakefile +0 -78
  48. data/packages/coffee-script/bin/cake +0 -7
  49. data/packages/coffee-script/bin/coffee +0 -7
  50. data/packages/coffee-script/documentation/coffee/aliases.coffee +0 -11
  51. data/packages/coffee-script/documentation/coffee/array_comprehensions.coffee +0 -2
  52. data/packages/coffee-script/documentation/coffee/block_comment.coffee +0 -6
  53. data/packages/coffee-script/documentation/coffee/cake_tasks.coffee +0 -9
  54. data/packages/coffee-script/documentation/coffee/classes.coffee +0 -25
  55. data/packages/coffee-script/documentation/coffee/comparisons.coffee +0 -5
  56. data/packages/coffee-script/documentation/coffee/conditionals.coffee +0 -13
  57. data/packages/coffee-script/documentation/coffee/default_args.coffee +0 -8
  58. data/packages/coffee-script/documentation/coffee/do.coffee +0 -4
  59. data/packages/coffee-script/documentation/coffee/embedded.coffee +0 -5
  60. data/packages/coffee-script/documentation/coffee/existence.coffee +0 -10
  61. data/packages/coffee-script/documentation/coffee/expressions.coffee +0 -9
  62. data/packages/coffee-script/documentation/coffee/expressions_assignment.coffee +0 -3
  63. data/packages/coffee-script/documentation/coffee/expressions_comprehension.coffee +0 -3
  64. data/packages/coffee-script/documentation/coffee/expressions_try.coffee +0 -7
  65. data/packages/coffee-script/documentation/coffee/fat_arrow.coffee +0 -6
  66. data/packages/coffee-script/documentation/coffee/functions.coffee +0 -2
  67. data/packages/coffee-script/documentation/coffee/heredocs.coffee +0 -7
  68. data/packages/coffee-script/documentation/coffee/heregexes.coffee +0 -11
  69. data/packages/coffee-script/documentation/coffee/interpolation.coffee +0 -6
  70. data/packages/coffee-script/documentation/coffee/multiple_return_values.coffee +0 -7
  71. data/packages/coffee-script/documentation/coffee/object_comprehensions.coffee +0 -4
  72. data/packages/coffee-script/documentation/coffee/object_extraction.coffee +0 -13
  73. data/packages/coffee-script/documentation/coffee/objects_and_arrays.coffee +0 -19
  74. data/packages/coffee-script/documentation/coffee/objects_reserved.coffee +0 -5
  75. data/packages/coffee-script/documentation/coffee/overview.coffee +0 -28
  76. data/packages/coffee-script/documentation/coffee/parallel_assignment.coffee +0 -6
  77. data/packages/coffee-script/documentation/coffee/patterns_and_splats.coffee +0 -7
  78. data/packages/coffee-script/documentation/coffee/prototypes.coffee +0 -3
  79. data/packages/coffee-script/documentation/coffee/range_comprehensions.coffee +0 -2
  80. data/packages/coffee-script/documentation/coffee/scope.coffee +0 -5
  81. data/packages/coffee-script/documentation/coffee/slices.coffee +0 -7
  82. data/packages/coffee-script/documentation/coffee/soaks.coffee +0 -1
  83. data/packages/coffee-script/documentation/coffee/splats.coffee +0 -27
  84. data/packages/coffee-script/documentation/coffee/splices.coffee +0 -5
  85. data/packages/coffee-script/documentation/coffee/strings.coffee +0 -8
  86. data/packages/coffee-script/documentation/coffee/switch.coffee +0 -10
  87. data/packages/coffee-script/documentation/coffee/try.coffee +0 -8
  88. data/packages/coffee-script/documentation/coffee/while.coffee +0 -10
  89. data/packages/coffee-script/documentation/css/docs.css +0 -374
  90. data/packages/coffee-script/documentation/css/idle.css +0 -64
  91. data/packages/coffee-script/documentation/docs/browser.html +0 -25
  92. data/packages/coffee-script/documentation/docs/cake.html +0 -43
  93. data/packages/coffee-script/documentation/docs/coffee-script.html +0 -51
  94. data/packages/coffee-script/documentation/docs/command.html +0 -161
  95. data/packages/coffee-script/documentation/docs/docco.css +0 -186
  96. data/packages/coffee-script/documentation/docs/grammar.html +0 -399
  97. data/packages/coffee-script/documentation/docs/helpers.html +0 -31
  98. data/packages/coffee-script/documentation/docs/index.html +0 -3
  99. data/packages/coffee-script/documentation/docs/lexer.html +0 -490
  100. data/packages/coffee-script/documentation/docs/nodes.html +0 -1338
  101. data/packages/coffee-script/documentation/docs/optparse.html +0 -78
  102. data/packages/coffee-script/documentation/docs/repl.html +0 -24
  103. data/packages/coffee-script/documentation/docs/rewriter.html +0 -251
  104. data/packages/coffee-script/documentation/docs/scope.html +0 -54
  105. data/packages/coffee-script/documentation/docs/underscore.html +0 -295
  106. data/packages/coffee-script/documentation/images/background.png +0 -0
  107. data/packages/coffee-script/documentation/images/banding.png +0 -0
  108. data/packages/coffee-script/documentation/images/button_bg.png +0 -0
  109. data/packages/coffee-script/documentation/images/button_bg_dark.gif +0 -0
  110. data/packages/coffee-script/documentation/images/button_bg_green.gif +0 -0
  111. data/packages/coffee-script/documentation/images/favicon.ico +0 -0
  112. data/packages/coffee-script/documentation/images/logo.png +0 -0
  113. data/packages/coffee-script/documentation/images/screenshadow.png +0 -0
  114. data/packages/coffee-script/documentation/index.html.erb +0 -1607
  115. data/packages/coffee-script/documentation/js/aliases.js +0 -17
  116. data/packages/coffee-script/documentation/js/array_comprehensions.js +0 -6
  117. data/packages/coffee-script/documentation/js/block_comment.js +0 -4
  118. data/packages/coffee-script/documentation/js/cake_tasks.js +0 -10
  119. data/packages/coffee-script/documentation/js/classes.js +0 -44
  120. data/packages/coffee-script/documentation/js/comparisons.js +0 -3
  121. data/packages/coffee-script/documentation/js/conditionals.js +0 -12
  122. data/packages/coffee-script/documentation/js/default_args.js +0 -7
  123. data/packages/coffee-script/documentation/js/do.js +0 -10
  124. data/packages/coffee-script/documentation/js/embedded.js +0 -4
  125. data/packages/coffee-script/documentation/js/existence.js +0 -6
  126. data/packages/coffee-script/documentation/js/expressions.js +0 -15
  127. data/packages/coffee-script/documentation/js/expressions_assignment.js +0 -2
  128. data/packages/coffee-script/documentation/js/expressions_comprehension.js +0 -9
  129. data/packages/coffee-script/documentation/js/expressions_try.js +0 -7
  130. data/packages/coffee-script/documentation/js/fat_arrow.js +0 -9
  131. data/packages/coffee-script/documentation/js/functions.js +0 -7
  132. data/packages/coffee-script/documentation/js/heredocs.js +0 -2
  133. data/packages/coffee-script/documentation/js/heregexes.js +0 -2
  134. data/packages/coffee-script/documentation/js/interpolation.js +0 -4
  135. data/packages/coffee-script/documentation/js/multiple_return_values.js +0 -5
  136. data/packages/coffee-script/documentation/js/object_comprehensions.js +0 -15
  137. data/packages/coffee-script/documentation/js/object_extraction.js +0 -10
  138. data/packages/coffee-script/documentation/js/objects_and_arrays.js +0 -17
  139. data/packages/coffee-script/documentation/js/objects_reserved.js +0 -4
  140. data/packages/coffee-script/documentation/js/overview.js +0 -35
  141. data/packages/coffee-script/documentation/js/parallel_assignment.js +0 -4
  142. data/packages/coffee-script/documentation/js/patterns_and_splats.js +0 -4
  143. data/packages/coffee-script/documentation/js/prototypes.js +0 -3
  144. data/packages/coffee-script/documentation/js/range_comprehensions.js +0 -9
  145. data/packages/coffee-script/documentation/js/scope.js +0 -8
  146. data/packages/coffee-script/documentation/js/slices.js +0 -4
  147. data/packages/coffee-script/documentation/js/soaks.js +0 -2
  148. data/packages/coffee-script/documentation/js/splats.js +0 -15
  149. data/packages/coffee-script/documentation/js/splices.js +0 -3
  150. data/packages/coffee-script/documentation/js/strings.js +0 -2
  151. data/packages/coffee-script/documentation/js/switch.js +0 -23
  152. data/packages/coffee-script/documentation/js/try.js +0 -8
  153. data/packages/coffee-script/documentation/js/while.js +0 -18
  154. data/packages/coffee-script/documentation/vendor/jquery-1.4.2.js +0 -6240
  155. data/packages/coffee-script/examples/beautiful_code/binary_search.coffee +0 -16
  156. data/packages/coffee-script/examples/beautiful_code/quicksort_runtime.coffee +0 -13
  157. data/packages/coffee-script/examples/beautiful_code/regular_expression_matcher.coffee +0 -34
  158. data/packages/coffee-script/examples/blocks.coffee +0 -54
  159. data/packages/coffee-script/examples/code.coffee +0 -167
  160. data/packages/coffee-script/examples/computer_science/README +0 -4
  161. data/packages/coffee-script/examples/computer_science/binary_search.coffee +0 -25
  162. data/packages/coffee-script/examples/computer_science/bubble_sort.coffee +0 -11
  163. data/packages/coffee-script/examples/computer_science/linked_list.coffee +0 -108
  164. data/packages/coffee-script/examples/computer_science/luhn_algorithm.coffee +0 -36
  165. data/packages/coffee-script/examples/computer_science/merge_sort.coffee +0 -19
  166. data/packages/coffee-script/examples/computer_science/selection_sort.coffee +0 -23
  167. data/packages/coffee-script/examples/poignant.coffee +0 -181
  168. data/packages/coffee-script/examples/potion.coffee +0 -206
  169. data/packages/coffee-script/examples/underscore.coffee +0 -682
  170. data/packages/coffee-script/examples/web_server.coffee +0 -12
  171. data/packages/coffee-script/extras/EXTRAS +0 -7
  172. data/packages/coffee-script/extras/coffee-script.js +0 -8
  173. data/packages/coffee-script/extras/jsl.conf +0 -44
  174. data/packages/coffee-script/index.html +0 -2515
  175. data/packages/coffee-script/lib/browser.js +0 -52
  176. data/packages/coffee-script/lib/cake.js +0 -76
  177. data/packages/coffee-script/lib/coffee-script.js +0 -82
  178. data/packages/coffee-script/lib/command.js +0 -263
  179. data/packages/coffee-script/lib/grammar.js +0 -581
  180. data/packages/coffee-script/lib/helpers.js +0 -66
  181. data/packages/coffee-script/lib/index.js +0 -8
  182. data/packages/coffee-script/lib/lexer.js +0 -633
  183. data/packages/coffee-script/lib/nodes.js +0 -2165
  184. data/packages/coffee-script/lib/optparse.js +0 -111
  185. data/packages/coffee-script/lib/parser.js +0 -649
  186. data/packages/coffee-script/lib/repl.js +0 -42
  187. data/packages/coffee-script/lib/rewriter.js +0 -353
  188. data/packages/coffee-script/lib/scope.js +0 -120
  189. data/packages/coffee-script/lib/spade-format.js +0 -45
  190. data/packages/coffee-script/package.json +0 -26
  191. data/packages/coffee-script/src/browser.coffee +0 -43
  192. data/packages/coffee-script/src/cake.coffee +0 -69
  193. data/packages/coffee-script/src/coffee-script.coffee +0 -92
  194. data/packages/coffee-script/src/command.coffee +0 -214
  195. data/packages/coffee-script/src/grammar.coffee +0 -590
  196. data/packages/coffee-script/src/helpers.coffee +0 -56
  197. data/packages/coffee-script/src/index.coffee +0 -2
  198. data/packages/coffee-script/src/lexer.coffee +0 -653
  199. data/packages/coffee-script/src/nodes.coffee +0 -1754
  200. data/packages/coffee-script/src/optparse.coffee +0 -99
  201. data/packages/coffee-script/src/repl.coffee +0 -42
  202. data/packages/coffee-script/src/rewriter.coffee +0 -326
  203. data/packages/coffee-script/src/scope.coffee +0 -94
  204. data/packages/coffee-script/test/arguments.coffee +0 -127
  205. data/packages/coffee-script/test/assignment.coffee +0 -98
  206. data/packages/coffee-script/test/break.coffee +0 -18
  207. data/packages/coffee-script/test/comments.coffee +0 -201
  208. data/packages/coffee-script/test/conditionals.coffee +0 -181
  209. data/packages/coffee-script/test/exception_handling.coffee +0 -90
  210. data/packages/coffee-script/test/helpers.coffee +0 -96
  211. data/packages/coffee-script/test/importing.coffee +0 -18
  212. data/packages/coffee-script/test/operators.coffee +0 -225
  213. data/packages/coffee-script/test/ranges_slices_and_splices.coffee +0 -186
  214. data/packages/coffee-script/test/regular_expressions.coffee +0 -56
  215. data/packages/coffee-script/test/test.html +0 -123
  216. data/packages/coffee-script/test/test_chaining.coffee +0 -77
  217. data/packages/coffee-script/test/test_classes.coffee +0 -372
  218. data/packages/coffee-script/test/test_compilation.coffee +0 -26
  219. data/packages/coffee-script/test/test_comprehensions.coffee +0 -318
  220. data/packages/coffee-script/test/test_existence.coffee +0 -165
  221. data/packages/coffee-script/test/test_functions.coffee +0 -379
  222. data/packages/coffee-script/test/test_heredocs.coffee +0 -111
  223. data/packages/coffee-script/test/test_literals.coffee +0 -270
  224. data/packages/coffee-script/test/test_option_parser.coffee +0 -27
  225. data/packages/coffee-script/test/test_pattern_matching.coffee +0 -162
  226. data/packages/coffee-script/test/test_returns.coffee +0 -63
  227. data/packages/coffee-script/test/test_splats.coffee +0 -102
  228. data/packages/coffee-script/test/test_strings.coffee +0 -118
  229. data/packages/coffee-script/test/test_switch.coffee +0 -103
  230. data/packages/coffee-script/test/test_while.coffee +0 -71
  231. data/packages/ivory/LICENSE.txt +0 -1
  232. data/packages/ivory/README.md +0 -19
  233. data/packages/ivory/lib/buffer.js +0 -111
  234. data/packages/ivory/lib/events.js +0 -137
  235. data/packages/ivory/lib/fs.js +0 -266
  236. data/packages/ivory/lib/main.js +0 -13
  237. data/packages/ivory/lib/path.js +0 -158
  238. data/packages/ivory/lib/ruby/buffer.rb +0 -145
  239. data/packages/ivory/lib/ruby/constants.rb +0 -585
  240. data/packages/ivory/lib/ruby/events.rb +0 -32
  241. data/packages/ivory/lib/ruby/fs.rb +0 -245
  242. data/packages/ivory/lib/ruby/process.rb +0 -28
  243. data/packages/ivory/lib/stream.js +0 -115
  244. data/packages/ivory/lib/util.js +0 -414
  245. data/packages/ivory/package.json +0 -11
  246. data/packages/jquery/main.js +0 -7179
  247. data/packages/jquery/package.json +0 -10
  248. data/packages/json/lib/main.js +0 -14
  249. data/packages/json/package.json +0 -8
  250. data/packages/lproj/README.md +0 -77
  251. data/packages/lproj/examples/demo-app/en.lproj/localized.strings +0 -2
  252. data/packages/lproj/examples/demo-app/fr.lproj/localized.strings +0 -3
  253. data/packages/lproj/examples/demo-app/index.html +0 -8
  254. data/packages/lproj/examples/demo-app/lib/main.js +0 -7
  255. data/packages/lproj/examples/demo-app/package.json +0 -9
  256. data/packages/lproj/lib/main.js +0 -78
  257. data/packages/lproj/lib/strings-format.js +0 -6
  258. data/packages/lproj/package.json +0 -9
  259. data/packages/optparse/README.md +0 -161
  260. data/packages/optparse/TODO +0 -1
  261. data/packages/optparse/examples/browser-test.html +0 -75
  262. data/packages/optparse/examples/nodejs-test.js +0 -90
  263. data/packages/optparse/lib/optparse.js +0 -309
  264. data/packages/optparse/package.json +0 -13
  265. data/packages/optparse/seed.yml +0 -5
  266. data/packages/text/lib/main.js +0 -8
  267. data/packages/text/package.json +0 -9
  268. data/packages/web-file/README.md +0 -7
  269. data/packages/web-file/lib/errors.js +0 -32
  270. data/packages/web-file/lib/file-reader.js +0 -10
  271. data/packages/web-file/lib/file-system.js +0 -234
  272. data/packages/web-file/lib/file-writer.js +0 -10
  273. data/packages/web-file/lib/file.js +0 -9
  274. data/packages/web-file/lib/main.js +0 -34
  275. data/packages/web-file/lib/platform.js +0 -25
  276. data/packages/web-file/lib/ruby/file.rb +0 -252
  277. data/packages/web-file/lib/ruby/file_reader.rb +0 -69
  278. data/packages/web-file/lib/ruby/file_system.rb +0 -134
  279. data/packages/web-file/lib/ruby/file_writer.rb +0 -78
  280. data/packages/web-file/package.json +0 -12
  281. data/packages/web-typed-array/README.md +0 -7
  282. data/packages/web-typed-array/lib/array-buffer-view.js +0 -9
  283. data/packages/web-typed-array/lib/array-buffer.js +0 -7
  284. data/packages/web-typed-array/lib/main.js +0 -33
  285. data/packages/web-typed-array/lib/platform.js +0 -20
  286. data/packages/web-typed-array/lib/ruby/array_buffer.rb +0 -31
  287. data/packages/web-typed-array/lib/ruby/array_buffer_view.rb +0 -130
  288. data/packages/web-typed-array/lib/ruby/typed_array.rb +0 -133
  289. data/packages/web-typed-array/lib/typed-array.js +0 -26
  290. data/packages/web-typed-array/package.json +0 -9
  291. data/spec/cli/build_spec.rb +0 -59
  292. data/spec/cli/install_spec.rb +0 -120
  293. data/spec/cli/installed_spec.rb +0 -55
  294. data/spec/cli/list_spec.rb +0 -75
  295. data/spec/cli/login_spec.rb +0 -76
  296. data/spec/cli/new_spec.rb +0 -5
  297. data/spec/cli/owner_spec.rb +0 -115
  298. data/spec/cli/push_spec.rb +0 -74
  299. data/spec/cli/uninstall_spec.rb +0 -58
  300. data/spec/cli/unpack_spec.rb +0 -73
  301. data/spec/cli/unyank_spec.rb +0 -74
  302. data/spec/cli/update_spec.rb +0 -8
  303. data/spec/cli/yank_spec.rb +0 -74
  304. data/spec/credentials_spec.rb +0 -24
  305. data/spec/fixtures/coffee-1.0.1.pre.spd +0 -0
  306. data/spec/fixtures/core-test-0.4.3.spd +0 -0
  307. data/spec/fixtures/core-test/bin/cot +0 -3
  308. data/spec/fixtures/core-test/lib/main.js +0 -1
  309. data/spec/fixtures/core-test/resources/runner.css +0 -0
  310. data/spec/fixtures/core-test/tests/test.js +0 -1
  311. data/spec/fixtures/ivory-0.0.1.spd +0 -0
  312. data/spec/fixtures/jquery-1.4.3.spd +0 -0
  313. data/spec/fixtures/optparse-1.0.1.spd +0 -0
  314. data/spec/fixtures/package.json +0 -30
  315. data/spec/gauntlet_spec.rb +0 -27
  316. data/spec/javascript/async-test.js +0 -123
  317. data/spec/javascript/compiler/javascript.js +0 -13
  318. data/spec/javascript/compiler/ruby.js +0 -14
  319. data/spec/javascript/loader-test.js +0 -64
  320. data/spec/javascript/normalize-test.js +0 -73
  321. data/spec/javascript/packages-test.js +0 -44
  322. data/spec/javascript/relative-require-test.js +0 -72
  323. data/spec/javascript/require-test.js +0 -117
  324. data/spec/javascript/sandbox/compile.js +0 -37
  325. data/spec/javascript/sandbox/creation.js +0 -44
  326. data/spec/javascript/sandbox/format.js +0 -79
  327. data/spec/javascript/sandbox/misc.js +0 -57
  328. data/spec/javascript/sandbox/preprocessor.js +0 -81
  329. data/spec/javascript/sandbox/require.js +0 -48
  330. data/spec/javascript/sandbox/run-command.js +0 -21
  331. data/spec/javascript/spade/externs.js +0 -14
  332. data/spec/javascript/spade/load-factory.js +0 -15
  333. data/spec/javascript/spade/misc.js +0 -23
  334. data/spec/javascript/spade/ready.js +0 -12
  335. data/spec/javascript/spade/register.js +0 -13
  336. data/spec/javascript_spec.rb +0 -7
  337. data/spec/package_spec.rb +0 -267
  338. data/spec/spec_helper.rb +0 -30
  339. data/spec/support/cli.rb +0 -94
  340. data/spec/support/core_test.rb +0 -59
  341. data/spec/support/fake.rb +0 -44
  342. data/spec/support/fake_gem_server.rb +0 -66
  343. data/spec/support/fake_gemcutter.rb +0 -49
  344. data/spec/support/matchers.rb +0 -31
  345. data/spec/support/path.rb +0 -54
  346. data/test-spade.html +0 -8
@@ -1,379 +0,0 @@
1
- x = 1
2
- y = {}
3
- y.x = -> 3
4
-
5
- ok x is 1
6
- ok typeof(y.x) is 'function'
7
- ok y.x instanceof Function
8
- ok y.x() is 3
9
-
10
-
11
- # The empty function should not cause a syntax error.
12
- ->
13
- () ->
14
-
15
-
16
- # Multiple nested function declarations mixed with implicit calls should not
17
- # cause a syntax error.
18
- (one) -> (two) -> three four, (five) -> six seven, eight, (nine) ->
19
-
20
-
21
- obj = {
22
- name: 'Fred'
23
-
24
- bound: ->
25
- do (=> eq this, obj)
26
-
27
- unbound: ->
28
- do (-> ok this isnt obj)
29
-
30
- nested: ->
31
- (=>
32
- do (=>
33
- (=>
34
- eq this, obj
35
- )()
36
- )
37
- )()
38
- }
39
-
40
- obj.unbound()
41
- obj.bound()
42
- obj.nested()
43
-
44
-
45
- # Python decorator style wrapper that memoizes any function
46
- memoize = (fn) ->
47
- cache = {}
48
- self = this
49
- (args...) ->
50
- key = args.toString()
51
- return cache[key] if cache[key]
52
- cache[key] = fn.apply(self, args)
53
-
54
- Math = {
55
- Add: (a, b) -> a + b
56
- AnonymousAdd: (a, b) -> a + b
57
- FastAdd: memoize (a, b) -> a + b
58
- }
59
-
60
- ok Math.Add(5, 5) is 10
61
- ok Math.AnonymousAdd(10, 10) is 20
62
- ok Math.FastAdd(20, 20) is 40
63
-
64
-
65
- okFunc = (f) -> ok(f())
66
- okFunc -> true
67
-
68
- # Optional parens can be used in a nested fashion.
69
- call = (func) -> func()
70
-
71
- result = call ->
72
- inner = call ->
73
- Math.Add(5, 5)
74
-
75
- ok result is 10
76
-
77
-
78
- # More fun with optional parens.
79
- fn = (arg) -> arg
80
-
81
- ok fn(fn {prop: 101}).prop is 101
82
-
83
-
84
- # Multi-blocks with optional parens.
85
- result = fn( ->
86
- fn ->
87
- "Wrapped"
88
- )
89
-
90
- ok result()() is 'Wrapped'
91
-
92
-
93
- # And even with strange things like this:
94
- funcs = [((x) -> x), ((x) -> x * x)]
95
- result = funcs[1] 5
96
-
97
- ok result is 25
98
-
99
- result = ("hello".slice) 3
100
-
101
- ok result is 'lo'
102
-
103
-
104
- # And with multiple single-line functions on the same line.
105
- func = (x) -> (x) -> (x) -> x
106
- ok func(1)(2)(3) is 3
107
-
108
-
109
- # Ensure that functions with the same name don't clash with helper functions.
110
- del = -> 5
111
- ok del() is 5
112
-
113
- # Ensure that functions can have a trailing comma in their argument list
114
- mult = (x, mids..., y) ->
115
- x *= n for n in mids
116
- x *= y
117
-
118
- ok mult(1, 2,) is 2
119
- ok mult(1, 2, 3,) is 6
120
- ok mult(10, (i for i in [1..6])...) is 7200
121
-
122
-
123
- # Test for inline functions with parentheses and implicit calls.
124
- combine = (func, num) -> func() * num
125
- result = combine (-> 1 + 2), 3
126
-
127
- ok result is 9
128
-
129
-
130
- # Test for calls/parens/multiline-chains.
131
- f = (x) -> x
132
- result = (f 1).toString()
133
- .length
134
-
135
- ok result is 1
136
-
137
-
138
- # Test implicit calls in functions in parens:
139
- result = ((val) ->
140
- [].push val
141
- val
142
- )(10)
143
-
144
- ok result is 10
145
-
146
-
147
- # More paren compilation tests:
148
- reverse = (obj) -> obj.reverse()
149
- ok reverse([1, 2].concat 3).join(' ') is '3 2 1'
150
-
151
- # Passing multiple functions without paren-wrapping is legal, and should compile.
152
- sum = (one, two) -> one() + two()
153
- result = sum ->
154
- 7 + 9
155
- , ->
156
- 1 + 3
157
-
158
- ok result is 20
159
-
160
-
161
- # Implicit call with a trailing if statement as a param.
162
- func = -> arguments[1]
163
- result = func 'one', if false then 100 else 13
164
- ok result is 13
165
-
166
-
167
- # Test more function passing:
168
- result = sum( ->
169
- 1 + 2
170
- , ->
171
- 2 + 1
172
- )
173
- ok result is 6
174
-
175
- sum = (a, b) -> a + b
176
- result = sum(1
177
- , 2)
178
-
179
- ok result is 3
180
-
181
-
182
- # This is a crazy one.
183
- x = (obj, func) -> func obj
184
- ident = (x) -> x
185
-
186
- result = x {one: ident 1}, (obj) ->
187
- inner = ident(obj)
188
- ident inner
189
-
190
- ok result.one is 1
191
-
192
-
193
- # Assignment to a Object.prototype-named variable should not leak to outer scope.
194
- # FIXME: fails on IE
195
- (->
196
- constructor = 'word'
197
- )()
198
-
199
- ok constructor isnt 'word'
200
-
201
-
202
- # Trying an implicit object call with a trailing function.
203
- a = null
204
- meth = (arg, obj, func) -> a = [obj.a, arg, func()].join ' '
205
-
206
- meth 'apple', b: 1, a: 13, ->
207
- 'orange'
208
-
209
- ok a is '13 apple orange'
210
-
211
-
212
- # Ensure that empty functions don't return mistaken values.
213
- obj =
214
- func: (@param, @rest...) ->
215
-
216
- ok obj.func(101, 102, 103, 104) is undefined
217
- ok obj.param is 101
218
- ok obj.rest.join(' ') is '102 103 104'
219
-
220
-
221
- # `@` and `this` should both be able to invoke a method.
222
- func = (arg) -> ok arg is true
223
- func.withAt = -> @ true
224
- func.withThis = -> this true
225
-
226
- func.withAt()
227
- func.withThis()
228
-
229
-
230
- # Ensure that constructors invoked with splats return a new object.
231
- args = [1, 2, 3]
232
- Type = (@args) ->
233
- type = new Type args
234
-
235
- ok type and type instanceof Type
236
- ok type.args and type.args instanceof Array
237
- ok v is args[i] for v, i in type.args
238
-
239
- Type1 = (@a, @b, @c) ->
240
- type1 = new Type1 args...
241
-
242
- ok type1 instanceof Type1
243
- eq type1.constructor, Type1
244
- ok type1.a is args[0] and type1.b is args[1] and type1.c is args[2]
245
-
246
-
247
- # Ensure that constructors invoked with splats cache the function.
248
- called = 0
249
- get = -> if called++ then false else class Type
250
- new get() args...
251
-
252
-
253
- # Chained blocks, with proper indentation levels:
254
- counter =
255
- results: []
256
- tick: (func) ->
257
- @results.push func()
258
- this
259
-
260
- counter
261
- .tick ->
262
- 3
263
- .tick ->
264
- 2
265
- .tick ->
266
- 1
267
-
268
- eq counter.results.join(' '), '3 2 1'
269
-
270
-
271
- # Make incorrect indentation safe.
272
- func = ->
273
- obj = {
274
- key: 10
275
- }
276
- obj.key - 5
277
-
278
- eq func(), 5
279
-
280
-
281
- # Ensure that chained calls with indented implicit object literals below are
282
- # alright.
283
- result = null
284
- obj =
285
- method: (val) -> this
286
- second: (hash) -> result = hash.three
287
-
288
-
289
- obj
290
- .method(
291
- 101
292
- ).second(
293
- one:
294
- two: 2
295
- three: 3
296
- )
297
-
298
- eq result, 3
299
-
300
-
301
- # Test newline-supressed call chains with nested functions.
302
- obj =
303
- call: -> this
304
- func = ->
305
- obj
306
- .call ->
307
- one two
308
- .call ->
309
- three four
310
- 101
311
-
312
- eq func(), 101
313
-
314
-
315
- # `new` shouldn't add extra parens
316
- ok new Date().constructor is Date
317
-
318
-
319
- # `new` works against bare function
320
- eq Date, new ->
321
- eq this, new => this
322
- Date
323
-
324
-
325
- # Implicit objects with number arguments.
326
- func = (x, y) -> y
327
- obj =
328
- prop: func "a", 1
329
-
330
- ok obj.prop is 1
331
-
332
-
333
- # Non-spaced unary and binary operators should cause a function call.
334
- func = (val) -> val + 1
335
- ok (func +5) is 6
336
- ok (func -5) is -4
337
-
338
-
339
- # Prefix unary assignment operators are allowed in parenless calls.
340
- val = 5
341
- ok (func --val) is 5
342
-
343
-
344
- eq ok, new ->
345
- ok
346
- ### Should `return` implicitly ###
347
- ### even with trailing comments. ###
348
-
349
-
350
- #855: execution context for `func arr...` should be `null`
351
- (->
352
- global = @
353
- contextTest = -> ok global is @
354
- array = []
355
- contextTest array
356
- contextTest.apply null, array
357
- contextTest array...
358
- )()
359
-
360
-
361
- # #894: Splatting against constructor-chained functions.
362
- x = null
363
-
364
- class Foo
365
- bar: (y) -> x = y
366
-
367
- new Foo().bar([101]...)
368
-
369
- eq x, 101
370
-
371
-
372
- test "#904: Destructuring function arguments with same-named variables in scope", ->
373
- a = b = nonce = {}
374
- fn = ([a,b]) -> {a:a,b:b}
375
- result = fn([c={},d={}])
376
- eq c, result.a
377
- eq d, result.b
378
- eq nonce, a
379
- eq nonce, b
@@ -1,111 +0,0 @@
1
- a = """
2
- basic heredoc
3
- on two lines
4
- """
5
-
6
- ok a is "basic heredoc\non two lines"
7
-
8
-
9
- a = '''
10
- a
11
- "b
12
- c
13
- '''
14
-
15
- ok a is "a\n \"b\nc"
16
-
17
-
18
- a = """
19
- a
20
- b
21
- c
22
- """
23
-
24
- ok a is "a\n b\n c"
25
-
26
-
27
- a = '''one-liner'''
28
-
29
- ok a is 'one-liner'
30
-
31
-
32
- a = """
33
- out
34
- here
35
- """
36
-
37
- ok a is "out\nhere"
38
-
39
-
40
- a = '''
41
- a
42
- b
43
- c
44
- '''
45
-
46
- ok a is " a\n b\nc"
47
-
48
-
49
- a = '''
50
- a
51
-
52
-
53
- b c
54
- '''
55
-
56
- ok a is "a\n\n\nb c"
57
-
58
-
59
- a = '''more"than"one"quote'''
60
-
61
- ok a is 'more"than"one"quote'
62
-
63
-
64
- val = 10
65
-
66
- a = """
67
- basic heredoc #{val}
68
- on two lines
69
- """
70
-
71
- b = '''
72
- basic heredoc #{val}
73
- on two lines
74
- '''
75
-
76
- ok a is "basic heredoc 10\non two lines"
77
- ok b is "basic heredoc \#{val}\non two lines"
78
-
79
-
80
- a = '''here's an apostrophe'''
81
- ok a is "here's an apostrophe"
82
-
83
-
84
- # The indentation detector ignores blank lines without trailing whitespace
85
- a = """
86
- one
87
- two
88
-
89
- """
90
- ok a is "one\ntwo\n"
91
-
92
- eq ''' line 0
93
- should not be relevant
94
- to the indent level
95
- ''', '
96
- line 0\n
97
- should not be relevant\n
98
- to the indent level
99
- '
100
-
101
- eq ''' '\\\' ''', " '\\' "
102
- eq """ "\\\" """, ' "\\" '
103
-
104
- eq ''' <- keep these spaces -> ''', ' <- keep these spaces -> '
105
-
106
- eq 'multiline nested "interpolations" work', """multiline #{
107
- "nested #{(->
108
- ok yes
109
- "\"interpolations\""
110
- )()}"
111
- } work"""