spade 0.0.8.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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,186 +0,0 @@
1
- # Ranges, Slices, and Splices
2
- # ---------------------------
3
-
4
- # shared array
5
- shared = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
6
-
7
-
8
- #### Ranges
9
-
10
- test "basic inclusive ranges", ->
11
- arrayEq [1, 2, 3] , [1..3]
12
- arrayEq [0, 1, 2] , [0..2]
13
- arrayEq [0, 1] , [0..1]
14
- arrayEq [0] , [0..0]
15
- arrayEq [-1] , [-1..-1]
16
- arrayEq [-1, 0] , [-1..0]
17
- arrayEq [-1, 0, 1], [-1..1]
18
-
19
- test "basic exclusive ranges", ->
20
- arrayEq [1, 2, 3] , [1...4]
21
- arrayEq [0, 1, 2] , [0...3]
22
- arrayEq [0, 1] , [0...2]
23
- arrayEq [0] , [0...1]
24
- arrayEq [-1] , [-1...0]
25
- arrayEq [-1, 0] , [-1...1]
26
- arrayEq [-1, 0, 1], [-1...2]
27
-
28
- arrayEq [], [1...1]
29
- arrayEq [], [0...0]
30
- arrayEq [], [-1...-1]
31
-
32
- test "downward ranges", ->
33
- arrayEq shared, [9..0].reverse()
34
- arrayEq [5, 4, 3, 2] , [5..2]
35
- arrayEq [2, 1, 0, -1], [2..-1]
36
-
37
- arrayEq [3, 2, 1] , [3..1]
38
- arrayEq [2, 1, 0] , [2..0]
39
- arrayEq [1, 0] , [1..0]
40
- arrayEq [0] , [0..0]
41
- arrayEq [-1] , [-1..-1]
42
- arrayEq [0, -1] , [0..-1]
43
- arrayEq [1, 0, -1] , [1..-1]
44
- arrayEq [0, -1, -2], [0..-2]
45
-
46
- arrayEq [4, 3, 2], [4...1]
47
- arrayEq [3, 2, 1], [3...0]
48
- arrayEq [2, 1] , [2...0]
49
- arrayEq [1] , [1...0]
50
- arrayEq [] , [0...0]
51
- arrayEq [] , [-1...-1]
52
- arrayEq [0] , [0...-1]
53
- arrayEq [0, -1] , [0...-2]
54
- arrayEq [1, 0] , [1...-1]
55
- arrayEq [2, 1, 0], [2...-1]
56
-
57
- test "ranges with variables as enpoints", ->
58
- [a, b] = [1, 3]
59
- arrayEq [1, 2, 3], [a..b]
60
- arrayEq [1, 2] , [a...b]
61
- b = -2
62
- arrayEq [1, 0, -1, -2], [a..b]
63
- arrayEq [1, 0, -1] , [a...b]
64
-
65
- test "ranges with expressions as endpoints", ->
66
- [a, b] = [1, 3]
67
- arrayEq [2, 3, 4, 5, 6], [(a+1)..2*b]
68
- arrayEq [2, 3, 4, 5] , [(a+1)...2*b]
69
-
70
- test "large ranges are generated with looping constructs", ->
71
- down = [99..0]
72
- eq 100, (len = down.length)
73
- eq 0, down[len - 1]
74
-
75
- up = [0...100]
76
- eq 100, (len = up.length)
77
- eq 99, up[len - 1]
78
-
79
-
80
- #### Slices
81
-
82
- test "basic slicing", ->
83
- arrayEq [7, 8, 9] , shared[7..9]
84
- arrayEq [2, 3] , shared[2...4]
85
- arrayEq [2, 3, 4, 5], shared[2...6]
86
-
87
- test "slicing with variables as endpoints", ->
88
- [a, b] = [1, 4]
89
- arrayEq [1, 2, 3, 4], shared[a..b]
90
- arrayEq [1, 2, 3] , shared[a...b]
91
-
92
- test "slicing with expressions as endpoints", ->
93
- [a, b] = [1, 3]
94
- arrayEq [2, 3, 4, 5, 6], shared[(a+1)..2*b]
95
- arrayEq [2, 3, 4, 5] , shared[a+1...(2*b)]
96
-
97
- test "unbounded slicing", ->
98
- arrayEq [7, 8, 9] , shared[7..]
99
- arrayEq [8, 9] , shared[-2..]
100
- arrayEq [9] , shared[-1...]
101
- arrayEq [0, 1, 2] , shared[...3]
102
- arrayEq [0, 1, 2, 3], shared[..-7]
103
-
104
- arrayEq shared , shared[..-1]
105
- arrayEq shared[0..8], shared[...-1]
106
-
107
- for a in [-shared.length..shared.length]
108
- arrayEq shared[a..] , shared[a...]
109
- for a in [-shared.length+1...shared.length]
110
- arrayEq shared[..a][...-1] , shared[...a]
111
-
112
- test "#930, #835, #831, #746 #624: inclusive slices to -1 should slice to end", ->
113
- arrayEq shared, shared[0..-1]
114
- arrayEq shared, shared[..-1]
115
- arrayEq shared.slice(1,shared.length), shared[1..-1]
116
-
117
- test "string slicing", ->
118
- str = "abcdefghijklmnopqrstuvwxyz"
119
- ok str[1...1] is ""
120
- ok str[1..1] is "b"
121
- ok str[1...5] is "bcde"
122
- ok str[0..4] is "abcde"
123
- ok str[-5..] is "vwxyz"
124
-
125
-
126
- #### Splices
127
-
128
- test "basic splicing", ->
129
- ary = [0..9]
130
- ary[5..9] = [0, 0, 0]
131
- arrayEq [0, 1, 2, 3, 4, 0, 0, 0], ary
132
-
133
- ary = [0..9]
134
- ary[2...8] = []
135
- arrayEq [0, 1, 8, 9], ary
136
-
137
- test "unbounded splicing", ->
138
- ary = [0..9]
139
- ary[3..] = [9, 8, 7]
140
- arrayEq [0, 1, 2, 9, 8, 7]. ary
141
-
142
- ary[...3] = [7, 8, 9]
143
- arrayEq [7, 8, 9, 9, 8, 7], ary
144
-
145
- test "splicing with variables as endpoints", ->
146
- [a, b] = [1, 8]
147
-
148
- ary = [0..9]
149
- ary[a..b] = [2, 3]
150
- arrayEq [0, 2, 3, 9], ary
151
-
152
- ary = [0..9]
153
- ary[a...b] = [5]
154
- arrayEq [0, 5, 8, 9], ary
155
-
156
- test "splicing with expressions as endpoints", ->
157
- [a, b] = [1, 3]
158
-
159
- ary = [0..9]
160
- ary[ a+1 .. 2*b+1 ] = [4]
161
- arrayEq [0, 1, 4, 8, 9], ary
162
-
163
- ary = [0..9]
164
- ary[a+1...2*b+1] = [4]
165
- arrayEq [0, 1, 4, 7, 8, 9], ary
166
-
167
- test "splicing to the end, against a one-time function", ->
168
- ary = null
169
- fn = ->
170
- if ary
171
- throw 'err'
172
- else
173
- ary = [1, 2, 3]
174
-
175
- fn()[0..] = 1
176
-
177
- arrayEq ary, [1]
178
-
179
- test "the return value of a splice literal should be the RHS", ->
180
- ary = [0, 0, 0]
181
- eq (ary[0..1] = 2), 2
182
-
183
- ary = [0, 0, 0]
184
- eq (ary[0..] = 3), 3
185
-
186
- arrayEq [ary[0..0] = 0], [0]
@@ -1,56 +0,0 @@
1
- # Regular Expressions
2
- # -------------------
3
- #TODO: add some rigorous regex interpolation tests
4
-
5
- test "basic regular expression literals", ->
6
- ok 'a'.match(/a/)
7
- ok 'a'.match /a/
8
- ok 'a'.match(/a/g)
9
- ok 'a'.match /a/g
10
-
11
- test "division is not confused for a regular expression", ->
12
- eq 2, 4 / 2 / 1
13
-
14
- a = 4
15
- b = 2
16
- g = 1
17
- eq 2, a / b/g
18
-
19
- obj = method: -> 2
20
- two = 2
21
- eq 2, (obj.method()/two + obj.method()/two)
22
-
23
- i = 1
24
- eq 2, (4)/2/i
25
- eq 1, i/i/i
26
-
27
- test "backslash escapes", ->
28
- eq "\\/\\\\", /\/\\/.source
29
-
30
- test "#764: regular expressions should be indexable", ->
31
- eq /0/['source'], ///#{0}///['source']
32
-
33
- test "#584: slashes are allowed unescaped in character classes", ->
34
- ok /^a\/[/]b$/.test 'a//b'
35
-
36
-
37
- #### Heregexe(n|s)
38
-
39
- test "a heregex will ignore whitespace and comments", ->
40
- eq /^I'm\x20+[a]\s+Heregex?\/\/\//gim + '', ///
41
- ^ I'm \x20+ [a] \s+
42
- Heregex? / // # or not
43
- ///gim + ''
44
-
45
- test "heregex interpolation", ->
46
- eq /\\#{}\\\"/ + '', ///
47
- #{
48
- "#{ '\\' }" # normal comment
49
- }
50
- # regex comment
51
- \#{}
52
- \\ \"
53
- /// + ''
54
-
55
- test "an empty heregex will compile to an empty, non-capturing group", ->
56
- eq /(?:)/ + '', /// /// + ''
@@ -1,123 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
5
- <title>CoffeeScript Test Suite</title>
6
- <script src="../extras/coffee-script.js"></script>
7
- <style>
8
- body {
9
- margin: 30px;
10
- font-family: Menlo, Monaco, monospace;
11
- }
12
- h1 {
13
- font-size: 20px;
14
- }
15
- #stdout {
16
- }
17
- </style>
18
- </head>
19
- <body>
20
-
21
- <h1>CoffeeScript Test Suite</h1>
22
- <pre id="stdout"></pre>
23
-
24
- <script type="text/coffeescript">
25
-
26
- stdout = document.getElementById 'stdout'
27
- start = new Date
28
- success = total = done = failed = 0
29
-
30
- say = (msg, yay) ->
31
- div = document.createElement 'div'
32
- div.appendChild document.createTextNode msg
33
- div.style.color = if yay then 'green' else 'red'
34
- stdout.appendChild div
35
- msg
36
-
37
- @test = (desc, fn) ->
38
- fn()
39
-
40
- @ok = (good, msg) ->
41
- ++total
42
- if good then ++success else throw Error say msg
43
-
44
- @eq = (x, y, msg) -> ok x is y, msg ? x + ' !== ' + y
45
-
46
- arrayEqual = (a, b) ->
47
- if a is b
48
- # 0 isnt -0
49
- a isnt 0 or 1/a is 1/b
50
- else if a instanceof Array and b instanceof Array
51
- return no unless a.length is b.length
52
- return no for el, idx in a when not arrayEq el, b[idx]
53
- yes
54
- else
55
- # NaN is NaN
56
- a isnt a and b isnt b
57
-
58
- @doesNotThrow = (fn) ->
59
- fn()
60
- ok true
61
-
62
- @arrayEq = (a, b, msg) -> ok arrayEqual(a,b), msg
63
-
64
- @throws = (fun, err, msg) ->
65
- try
66
- fun()
67
- catch e
68
- if err
69
- eq e, err
70
- else
71
- ok yes
72
- return
73
- ok no
74
-
75
-
76
- CoffeeScript.run = (code, cb) ->
77
- try Function(CoffeeScript.compile code, wrap: no)()
78
- catch e then cb(); throw e
79
- cb yes
80
-
81
- run = (name) ->
82
- CoffeeScript.load "#{name}.coffee", (yay) ->
83
- say "#{ if yay then '\u2714' else '\u3000' } #{name}", yay
84
- ++failed unless yay
85
- fin() if ++done is names.length
86
-
87
- fin = ->
88
- yay = success is total and not failed
89
- sec = (new Date - start) / 1000
90
- msg = "passed #{success} tests in #{ sec.toFixed 2 } seconds"
91
- msg = "failed #{ total - success } tests and #{msg}" unless yay
92
- say msg, yay
93
-
94
- run name for name in names = [
95
- 'arguments'
96
- 'assignment'
97
- 'break'
98
- 'comments'
99
- 'exception_handling'
100
- 'helpers'
101
- 'operators'
102
- 'regular_expressions'
103
- 'test_chaining'
104
- 'test_classes'
105
- 'test_compilation'
106
- 'test_comprehensions'
107
- 'test_existence'
108
- 'test_functions'
109
- 'test_heredocs'
110
- 'conditionals'
111
- 'test_literals'
112
- 'test_pattern_matching'
113
- 'ranges_slices_and_splices'
114
- 'test_returns'
115
- 'test_splats'
116
- 'test_strings'
117
- 'test_switch'
118
- 'test_while'
119
- ]
120
- </script>
121
-
122
- </body>
123
- </html>
@@ -1,77 +0,0 @@
1
- # Chaining
2
- # --------
3
-
4
- # shared identity function
5
- id = (_) -> if arguments.length is 1 then _ else Array::slice.call(arguments)
6
-
7
-
8
-
9
- # Basic chained function calls.
10
- identityWrap = (x) ->
11
- -> x
12
-
13
- result = identityWrap(identityWrap(true))()()
14
-
15
- ok result
16
-
17
-
18
- # Should be able to look at prototypes on keywords.
19
- obj =
20
- withAt: -> @::prop
21
- withThis: -> this::prop
22
- proto:
23
- prop: 100
24
- obj.prototype = obj.proto
25
- eq obj.withAt() , 100
26
- eq obj.withThis(), 100
27
-
28
-
29
- # Chained accesses split on period/newline, backwards and forwards.
30
- str = 'god'
31
-
32
- result = str.
33
- split('').
34
- reverse().
35
- reverse().
36
- reverse()
37
-
38
- ok result.join('') is 'dog'
39
-
40
- result = str
41
- .split('')
42
- .reverse()
43
- .reverse()
44
- .reverse()
45
-
46
- ok result.join('') is 'dog'
47
-
48
-
49
- # Newline suppression for operators.
50
- six =
51
- 1 +
52
- 2 +
53
- 3
54
-
55
- ok six is 6
56
-
57
-
58
- # Ensure that indented array literals don't trigger whitespace rewriting.
59
- func = () ->
60
- ok arguments.length is 1
61
-
62
- func(
63
- [[[[[],
64
- []],
65
- [[]]]],
66
- []])
67
-
68
- greeting = id(
69
- """
70
- Hello
71
- """)
72
-
73
- ok greeting is "Hello"
74
-
75
- ok not Date
76
- ::
77
- ?.foo, '`?.` and `::` should also continue lines'
@@ -1,372 +0,0 @@
1
- # Test classes with a four-level inheritance chain.
2
- class Base
3
- func: (string) ->
4
- "zero/#{string}"
5
-
6
- @static: (string) ->
7
- "static/#{string}"
8
-
9
- class FirstChild extends Base
10
- func: (string) ->
11
- super('one/') + string
12
-
13
- SecondChild = class extends FirstChild
14
- func: (string) ->
15
- super('two/') + string
16
-
17
- thirdCtor = ->
18
- @array = [1, 2, 3]
19
-
20
- class ThirdChild extends SecondChild
21
- constructor: -> thirdCtor.call this
22
-
23
- # Gratuitous comment for testing.
24
- func: (string) ->
25
- super('three/') + string
26
-
27
- result = (new ThirdChild).func 'four'
28
-
29
- ok result is 'zero/one/two/three/four'
30
- ok Base.static('word') is 'static/word'
31
-
32
- FirstChild::func = (string) ->
33
- super('one/').length + string
34
-
35
- result = (new ThirdChild).func 'four'
36
-
37
- ok result is '9two/three/four'
38
-
39
- ok (new ThirdChild).array.join(' ') is '1 2 3'
40
-
41
-
42
- identity = (f) -> f
43
-
44
- class TopClass
45
- constructor: (arg) ->
46
- @prop = 'top-' + arg
47
-
48
- class SuperClass extends TopClass
49
- constructor: (arg) ->
50
- identity super 'super-' + arg
51
-
52
- class SubClass extends SuperClass
53
- constructor: ->
54
- identity super 'sub'
55
-
56
- ok (new SubClass).prop is 'top-super-sub'
57
-
58
-
59
- class OneClass
60
- @new: 'new'
61
- function: 'function'
62
- constructor: (name) -> @name = name
63
-
64
- class TwoClass extends OneClass
65
- delete TwoClass.new
66
-
67
- Function.prototype.new = -> new this arguments...
68
-
69
- ok (TwoClass.new('three')).name is 'three'
70
- ok (new OneClass).function is 'function'
71
- ok OneClass.new is 'new'
72
-
73
- delete Function.prototype.new
74
-
75
-
76
- # And now the same tests, but written in the manual style:
77
- Base = ->
78
- Base::func = (string) ->
79
- 'zero/' + string
80
- Base::['func-func'] = (string) ->
81
- "dynamic-#{string}"
82
-
83
- FirstChild = ->
84
- SecondChild = ->
85
- ThirdChild = ->
86
- @array = [1, 2, 3]
87
- this
88
-
89
- ThirdChild extends SecondChild extends FirstChild extends Base
90
-
91
- FirstChild::func = (string) ->
92
- super('one/') + string
93
-
94
- SecondChild::func = (string) ->
95
- super('two/') + string
96
-
97
- ThirdChild::func = (string) ->
98
- super('three/') + string
99
-
100
- result = (new ThirdChild).func 'four'
101
-
102
- ok result is 'zero/one/two/three/four'
103
-
104
- ok (new ThirdChild)['func-func']('thing') is 'dynamic-thing'
105
-
106
-
107
- TopClass = (arg) ->
108
- @prop = 'top-' + arg
109
- this
110
-
111
- SuperClass = (arg) ->
112
- super 'super-' + arg
113
- this
114
-
115
- SubClass = ->
116
- super 'sub'
117
- this
118
-
119
- SuperClass extends TopClass
120
- SubClass extends SuperClass
121
-
122
- ok (new SubClass).prop is 'top-super-sub'
123
-
124
-
125
- # '@' referring to the current instance, and not being coerced into a call.
126
- class ClassName
127
- amI: ->
128
- @ instanceof ClassName
129
-
130
- obj = new ClassName
131
- ok obj.amI()
132
-
133
-
134
- # super() calls in constructors of classes that are defined as object properties.
135
- class Hive
136
- constructor: (name) -> @name = name
137
-
138
- class Hive.Bee extends Hive
139
- constructor: (name) -> super
140
-
141
- maya = new Hive.Bee 'Maya'
142
- ok maya.name is 'Maya'
143
-
144
-
145
- # Class with JS-keyword properties.
146
- class Class
147
- class: 'class'
148
- name: -> @class
149
-
150
- instance = new Class
151
- ok instance.class is 'class'
152
- ok instance.name() is 'class'
153
-
154
-
155
- # Classes with methods that are pre-bound to the instance.
156
- # ... or statically, to the class.
157
- class Dog
158
-
159
- constructor: (name) ->
160
- @name = name
161
-
162
- bark: =>
163
- "#{@name} woofs!"
164
-
165
- @static = =>
166
- new this('Dog')
167
-
168
- spark = new Dog('Spark')
169
- fido = new Dog('Fido')
170
- fido.bark = spark.bark
171
-
172
- ok fido.bark() is 'Spark woofs!'
173
-
174
- obj = func: Dog.static
175
-
176
- ok obj.func().name is 'Dog'
177
-
178
-
179
- # Testing a bound function in a bound function.
180
- class Mini
181
- num: 10
182
- generate: =>
183
- for i in [1..3]
184
- =>
185
- @num
186
-
187
- m = new Mini
188
- eq (func() for func in m.generate()).join(' '), '10 10 10'
189
-
190
-
191
- # Testing a contructor called with varargs.
192
- class Connection
193
- constructor: (one, two, three) ->
194
- [@one, @two, @three] = [one, two, three]
195
-
196
- out: ->
197
- "#{@one}-#{@two}-#{@three}"
198
-
199
- list = [3, 2, 1]
200
- conn = new Connection list...
201
- ok conn instanceof Connection
202
- ok conn.out() is '3-2-1'
203
-
204
-
205
- # Test calling super and passing along all arguments.
206
- class Parent
207
- method: (args...) -> @args = args
208
-
209
- class Child extends Parent
210
- method: -> super
211
-
212
- c = new Child
213
- c.method 1, 2, 3, 4
214
- ok c.args.join(' ') is '1 2 3 4'
215
-
216
-
217
- # Test classes wrapped in decorators.
218
- func = (klass) ->
219
- klass::prop = 'value'
220
- klass
221
-
222
- func class Test
223
- prop2: 'value2'
224
-
225
- ok (new Test).prop is 'value'
226
- ok (new Test).prop2 is 'value2'
227
-
228
-
229
- # Test anonymous classes.
230
- obj =
231
- klass: class
232
- method: -> 'value'
233
-
234
- instance = new obj.klass
235
- ok instance.method() is 'value'
236
-
237
-
238
- # Implicit objects as static properties.
239
- class Static
240
- @static =
241
- one: 1
242
- two: 2
243
-
244
- ok Static.static.one is 1
245
- ok Static.static.two is 2
246
-
247
-
248
- # Nothing classes.
249
- c = class
250
- ok c instanceof Function
251
-
252
-
253
- # Classes with value'd constructors.
254
- counter = 0
255
- classMaker = ->
256
- counter += 1
257
- inner = counter
258
- ->
259
- @value = inner
260
-
261
- class One
262
- constructor: classMaker()
263
-
264
- class Two
265
- constructor: classMaker()
266
-
267
- ok (new One).value is 1
268
- ok (new Two).value is 2
269
- ok (new One).value is 1
270
- ok (new Two).value is 2
271
-
272
-
273
- # Exectuable class bodies.
274
- class A
275
- if true
276
- b: 'b'
277
- else
278
- c: 'c'
279
-
280
- a = new A
281
-
282
- eq a.b, 'b'
283
- eq a.c, undefined
284
-
285
-
286
- # Light metaprogramming.
287
- class Base
288
- @attr: (name) ->
289
- @::[name] = (val) ->
290
- if arguments.length > 0
291
- @["_#{name}"] = val
292
- else
293
- @["_#{name}"]
294
-
295
- class Robot extends Base
296
- @attr 'power'
297
- @attr 'speed'
298
-
299
- robby = new Robot
300
-
301
- ok robby.power() is undefined
302
-
303
- robby.power 11
304
- robby.speed Infinity
305
-
306
- eq robby.power(), 11
307
- eq robby.speed(), Infinity
308
-
309
-
310
- # Namespaced classes do not reserve their function name in outside scope.
311
- one = {}
312
- two = {}
313
-
314
- class one.Klass
315
- @label = "one"
316
-
317
- class two.Klass
318
- @label = "two"
319
-
320
- eq typeof Klass, 'undefined'
321
- eq one.Klass.label, 'one'
322
- eq two.Klass.label, 'two'
323
-
324
-
325
- # Nested classes.
326
- class Outer
327
- constructor: ->
328
- @label = 'outer'
329
-
330
- class @Inner
331
- constructor: ->
332
- @label = 'inner'
333
-
334
- eq (new Outer).label, 'outer'
335
- eq (new Outer.Inner).label, 'inner'
336
-
337
-
338
- # Variables in constructor bodies are correctly scoped.
339
- class A
340
- x = 1
341
- constructor: ->
342
- x = 10
343
- y = 20
344
- y = 2
345
- captured: ->
346
- {x, y}
347
-
348
- a = new A
349
- eq a.captured().x, 10
350
- eq a.captured().y, 2
351
-
352
-
353
- # Issue #924: Static methods in nested classes.
354
- class A
355
- @B: class
356
- @c = -> 5
357
-
358
- eq A.B.c(), 5
359
-
360
-
361
- # `class extends this` ...
362
- class A
363
- func: -> 'A'
364
-
365
- B = null
366
- makeClass = ->
367
- B = class extends this
368
- func: -> super + ' B'
369
-
370
- makeClass.call A
371
-
372
- eq (new B()).func(), 'A B'