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.
- data/.gitignore +0 -1
- data/.gitmodules +4 -4
- data/README.md +4 -0
- data/bin/spade +1 -1
- data/lib/spade.rb +0 -51
- data/lib/spade/cli.rb +10 -4
- data/lib/spade/version.rb +1 -1
- data/spade.gemspec +4 -21
- metadata +13 -482
- data/Gemfile +0 -3
- data/Gemfile.lock +0 -40
- data/lib/index.js +0 -14
- data/lib/node/loader.js +0 -146
- data/lib/node/sandbox.js +0 -44
- data/lib/spade.js +0 -1130
- data/lib/spade/bundle.rb +0 -171
- data/lib/spade/cli/base.rb +0 -354
- data/lib/spade/cli/owner.rb +0 -45
- data/lib/spade/cli/project_generator.rb +0 -58
- data/lib/spade/compiler.rb +0 -34
- data/lib/spade/console.rb +0 -39
- data/lib/spade/context.rb +0 -116
- data/lib/spade/credentials.rb +0 -36
- data/lib/spade/dependency_installer.rb +0 -103
- data/lib/spade/environment.rb +0 -35
- data/lib/spade/exports.rb +0 -71
- data/lib/spade/installer.rb +0 -40
- data/lib/spade/loader.rb +0 -238
- data/lib/spade/local.rb +0 -46
- data/lib/spade/package.rb +0 -157
- data/lib/spade/reactor.rb +0 -159
- data/lib/spade/remote.rb +0 -99
- data/lib/spade/repository.rb +0 -18
- data/lib/spade/server.rb +0 -66
- data/lib/spade/shell.rb +0 -36
- data/lib/spade/templates/project/LICENSE +0 -19
- data/lib/spade/templates/project/README.md +0 -21
- data/lib/spade/templates/project/lib/main.js +0 -9
- data/lib/spade/templates/project/project.json +0 -31
- data/lib/spade/templates/project/tests/main-test.js +0 -8
- data/package.json +0 -27
- data/packages/coffee-script/.gitignore +0 -8
- data/packages/coffee-script/.npmignore +0 -11
- data/packages/coffee-script/Cakefile +0 -229
- data/packages/coffee-script/LICENSE +0 -22
- data/packages/coffee-script/README +0 -47
- data/packages/coffee-script/Rakefile +0 -78
- data/packages/coffee-script/bin/cake +0 -7
- data/packages/coffee-script/bin/coffee +0 -7
- data/packages/coffee-script/documentation/coffee/aliases.coffee +0 -11
- data/packages/coffee-script/documentation/coffee/array_comprehensions.coffee +0 -2
- data/packages/coffee-script/documentation/coffee/block_comment.coffee +0 -6
- data/packages/coffee-script/documentation/coffee/cake_tasks.coffee +0 -9
- data/packages/coffee-script/documentation/coffee/classes.coffee +0 -25
- data/packages/coffee-script/documentation/coffee/comparisons.coffee +0 -5
- data/packages/coffee-script/documentation/coffee/conditionals.coffee +0 -13
- data/packages/coffee-script/documentation/coffee/default_args.coffee +0 -8
- data/packages/coffee-script/documentation/coffee/do.coffee +0 -4
- data/packages/coffee-script/documentation/coffee/embedded.coffee +0 -5
- data/packages/coffee-script/documentation/coffee/existence.coffee +0 -10
- data/packages/coffee-script/documentation/coffee/expressions.coffee +0 -9
- data/packages/coffee-script/documentation/coffee/expressions_assignment.coffee +0 -3
- data/packages/coffee-script/documentation/coffee/expressions_comprehension.coffee +0 -3
- data/packages/coffee-script/documentation/coffee/expressions_try.coffee +0 -7
- data/packages/coffee-script/documentation/coffee/fat_arrow.coffee +0 -6
- data/packages/coffee-script/documentation/coffee/functions.coffee +0 -2
- data/packages/coffee-script/documentation/coffee/heredocs.coffee +0 -7
- data/packages/coffee-script/documentation/coffee/heregexes.coffee +0 -11
- data/packages/coffee-script/documentation/coffee/interpolation.coffee +0 -6
- data/packages/coffee-script/documentation/coffee/multiple_return_values.coffee +0 -7
- data/packages/coffee-script/documentation/coffee/object_comprehensions.coffee +0 -4
- data/packages/coffee-script/documentation/coffee/object_extraction.coffee +0 -13
- data/packages/coffee-script/documentation/coffee/objects_and_arrays.coffee +0 -19
- data/packages/coffee-script/documentation/coffee/objects_reserved.coffee +0 -5
- data/packages/coffee-script/documentation/coffee/overview.coffee +0 -28
- data/packages/coffee-script/documentation/coffee/parallel_assignment.coffee +0 -6
- data/packages/coffee-script/documentation/coffee/patterns_and_splats.coffee +0 -7
- data/packages/coffee-script/documentation/coffee/prototypes.coffee +0 -3
- data/packages/coffee-script/documentation/coffee/range_comprehensions.coffee +0 -2
- data/packages/coffee-script/documentation/coffee/scope.coffee +0 -5
- data/packages/coffee-script/documentation/coffee/slices.coffee +0 -7
- data/packages/coffee-script/documentation/coffee/soaks.coffee +0 -1
- data/packages/coffee-script/documentation/coffee/splats.coffee +0 -27
- data/packages/coffee-script/documentation/coffee/splices.coffee +0 -5
- data/packages/coffee-script/documentation/coffee/strings.coffee +0 -8
- data/packages/coffee-script/documentation/coffee/switch.coffee +0 -10
- data/packages/coffee-script/documentation/coffee/try.coffee +0 -8
- data/packages/coffee-script/documentation/coffee/while.coffee +0 -10
- data/packages/coffee-script/documentation/css/docs.css +0 -374
- data/packages/coffee-script/documentation/css/idle.css +0 -64
- data/packages/coffee-script/documentation/docs/browser.html +0 -25
- data/packages/coffee-script/documentation/docs/cake.html +0 -43
- data/packages/coffee-script/documentation/docs/coffee-script.html +0 -51
- data/packages/coffee-script/documentation/docs/command.html +0 -161
- data/packages/coffee-script/documentation/docs/docco.css +0 -186
- data/packages/coffee-script/documentation/docs/grammar.html +0 -399
- data/packages/coffee-script/documentation/docs/helpers.html +0 -31
- data/packages/coffee-script/documentation/docs/index.html +0 -3
- data/packages/coffee-script/documentation/docs/lexer.html +0 -490
- data/packages/coffee-script/documentation/docs/nodes.html +0 -1338
- data/packages/coffee-script/documentation/docs/optparse.html +0 -78
- data/packages/coffee-script/documentation/docs/repl.html +0 -24
- data/packages/coffee-script/documentation/docs/rewriter.html +0 -251
- data/packages/coffee-script/documentation/docs/scope.html +0 -54
- data/packages/coffee-script/documentation/docs/underscore.html +0 -295
- data/packages/coffee-script/documentation/images/background.png +0 -0
- data/packages/coffee-script/documentation/images/banding.png +0 -0
- data/packages/coffee-script/documentation/images/button_bg.png +0 -0
- data/packages/coffee-script/documentation/images/button_bg_dark.gif +0 -0
- data/packages/coffee-script/documentation/images/button_bg_green.gif +0 -0
- data/packages/coffee-script/documentation/images/favicon.ico +0 -0
- data/packages/coffee-script/documentation/images/logo.png +0 -0
- data/packages/coffee-script/documentation/images/screenshadow.png +0 -0
- data/packages/coffee-script/documentation/index.html.erb +0 -1607
- data/packages/coffee-script/documentation/js/aliases.js +0 -17
- data/packages/coffee-script/documentation/js/array_comprehensions.js +0 -6
- data/packages/coffee-script/documentation/js/block_comment.js +0 -4
- data/packages/coffee-script/documentation/js/cake_tasks.js +0 -10
- data/packages/coffee-script/documentation/js/classes.js +0 -44
- data/packages/coffee-script/documentation/js/comparisons.js +0 -3
- data/packages/coffee-script/documentation/js/conditionals.js +0 -12
- data/packages/coffee-script/documentation/js/default_args.js +0 -7
- data/packages/coffee-script/documentation/js/do.js +0 -10
- data/packages/coffee-script/documentation/js/embedded.js +0 -4
- data/packages/coffee-script/documentation/js/existence.js +0 -6
- data/packages/coffee-script/documentation/js/expressions.js +0 -15
- data/packages/coffee-script/documentation/js/expressions_assignment.js +0 -2
- data/packages/coffee-script/documentation/js/expressions_comprehension.js +0 -9
- data/packages/coffee-script/documentation/js/expressions_try.js +0 -7
- data/packages/coffee-script/documentation/js/fat_arrow.js +0 -9
- data/packages/coffee-script/documentation/js/functions.js +0 -7
- data/packages/coffee-script/documentation/js/heredocs.js +0 -2
- data/packages/coffee-script/documentation/js/heregexes.js +0 -2
- data/packages/coffee-script/documentation/js/interpolation.js +0 -4
- data/packages/coffee-script/documentation/js/multiple_return_values.js +0 -5
- data/packages/coffee-script/documentation/js/object_comprehensions.js +0 -15
- data/packages/coffee-script/documentation/js/object_extraction.js +0 -10
- data/packages/coffee-script/documentation/js/objects_and_arrays.js +0 -17
- data/packages/coffee-script/documentation/js/objects_reserved.js +0 -4
- data/packages/coffee-script/documentation/js/overview.js +0 -35
- data/packages/coffee-script/documentation/js/parallel_assignment.js +0 -4
- data/packages/coffee-script/documentation/js/patterns_and_splats.js +0 -4
- data/packages/coffee-script/documentation/js/prototypes.js +0 -3
- data/packages/coffee-script/documentation/js/range_comprehensions.js +0 -9
- data/packages/coffee-script/documentation/js/scope.js +0 -8
- data/packages/coffee-script/documentation/js/slices.js +0 -4
- data/packages/coffee-script/documentation/js/soaks.js +0 -2
- data/packages/coffee-script/documentation/js/splats.js +0 -15
- data/packages/coffee-script/documentation/js/splices.js +0 -3
- data/packages/coffee-script/documentation/js/strings.js +0 -2
- data/packages/coffee-script/documentation/js/switch.js +0 -23
- data/packages/coffee-script/documentation/js/try.js +0 -8
- data/packages/coffee-script/documentation/js/while.js +0 -18
- data/packages/coffee-script/documentation/vendor/jquery-1.4.2.js +0 -6240
- data/packages/coffee-script/examples/beautiful_code/binary_search.coffee +0 -16
- data/packages/coffee-script/examples/beautiful_code/quicksort_runtime.coffee +0 -13
- data/packages/coffee-script/examples/beautiful_code/regular_expression_matcher.coffee +0 -34
- data/packages/coffee-script/examples/blocks.coffee +0 -54
- data/packages/coffee-script/examples/code.coffee +0 -167
- data/packages/coffee-script/examples/computer_science/README +0 -4
- data/packages/coffee-script/examples/computer_science/binary_search.coffee +0 -25
- data/packages/coffee-script/examples/computer_science/bubble_sort.coffee +0 -11
- data/packages/coffee-script/examples/computer_science/linked_list.coffee +0 -108
- data/packages/coffee-script/examples/computer_science/luhn_algorithm.coffee +0 -36
- data/packages/coffee-script/examples/computer_science/merge_sort.coffee +0 -19
- data/packages/coffee-script/examples/computer_science/selection_sort.coffee +0 -23
- data/packages/coffee-script/examples/poignant.coffee +0 -181
- data/packages/coffee-script/examples/potion.coffee +0 -206
- data/packages/coffee-script/examples/underscore.coffee +0 -682
- data/packages/coffee-script/examples/web_server.coffee +0 -12
- data/packages/coffee-script/extras/EXTRAS +0 -7
- data/packages/coffee-script/extras/coffee-script.js +0 -8
- data/packages/coffee-script/extras/jsl.conf +0 -44
- data/packages/coffee-script/index.html +0 -2515
- data/packages/coffee-script/lib/browser.js +0 -52
- data/packages/coffee-script/lib/cake.js +0 -76
- data/packages/coffee-script/lib/coffee-script.js +0 -82
- data/packages/coffee-script/lib/command.js +0 -263
- data/packages/coffee-script/lib/grammar.js +0 -581
- data/packages/coffee-script/lib/helpers.js +0 -66
- data/packages/coffee-script/lib/index.js +0 -8
- data/packages/coffee-script/lib/lexer.js +0 -633
- data/packages/coffee-script/lib/nodes.js +0 -2165
- data/packages/coffee-script/lib/optparse.js +0 -111
- data/packages/coffee-script/lib/parser.js +0 -649
- data/packages/coffee-script/lib/repl.js +0 -42
- data/packages/coffee-script/lib/rewriter.js +0 -353
- data/packages/coffee-script/lib/scope.js +0 -120
- data/packages/coffee-script/lib/spade-format.js +0 -45
- data/packages/coffee-script/package.json +0 -26
- data/packages/coffee-script/src/browser.coffee +0 -43
- data/packages/coffee-script/src/cake.coffee +0 -69
- data/packages/coffee-script/src/coffee-script.coffee +0 -92
- data/packages/coffee-script/src/command.coffee +0 -214
- data/packages/coffee-script/src/grammar.coffee +0 -590
- data/packages/coffee-script/src/helpers.coffee +0 -56
- data/packages/coffee-script/src/index.coffee +0 -2
- data/packages/coffee-script/src/lexer.coffee +0 -653
- data/packages/coffee-script/src/nodes.coffee +0 -1754
- data/packages/coffee-script/src/optparse.coffee +0 -99
- data/packages/coffee-script/src/repl.coffee +0 -42
- data/packages/coffee-script/src/rewriter.coffee +0 -326
- data/packages/coffee-script/src/scope.coffee +0 -94
- data/packages/coffee-script/test/arguments.coffee +0 -127
- data/packages/coffee-script/test/assignment.coffee +0 -98
- data/packages/coffee-script/test/break.coffee +0 -18
- data/packages/coffee-script/test/comments.coffee +0 -201
- data/packages/coffee-script/test/conditionals.coffee +0 -181
- data/packages/coffee-script/test/exception_handling.coffee +0 -90
- data/packages/coffee-script/test/helpers.coffee +0 -96
- data/packages/coffee-script/test/importing.coffee +0 -18
- data/packages/coffee-script/test/operators.coffee +0 -225
- data/packages/coffee-script/test/ranges_slices_and_splices.coffee +0 -186
- data/packages/coffee-script/test/regular_expressions.coffee +0 -56
- data/packages/coffee-script/test/test.html +0 -123
- data/packages/coffee-script/test/test_chaining.coffee +0 -77
- data/packages/coffee-script/test/test_classes.coffee +0 -372
- data/packages/coffee-script/test/test_compilation.coffee +0 -26
- data/packages/coffee-script/test/test_comprehensions.coffee +0 -318
- data/packages/coffee-script/test/test_existence.coffee +0 -165
- data/packages/coffee-script/test/test_functions.coffee +0 -379
- data/packages/coffee-script/test/test_heredocs.coffee +0 -111
- data/packages/coffee-script/test/test_literals.coffee +0 -270
- data/packages/coffee-script/test/test_option_parser.coffee +0 -27
- data/packages/coffee-script/test/test_pattern_matching.coffee +0 -162
- data/packages/coffee-script/test/test_returns.coffee +0 -63
- data/packages/coffee-script/test/test_splats.coffee +0 -102
- data/packages/coffee-script/test/test_strings.coffee +0 -118
- data/packages/coffee-script/test/test_switch.coffee +0 -103
- data/packages/coffee-script/test/test_while.coffee +0 -71
- data/packages/ivory/LICENSE.txt +0 -1
- data/packages/ivory/README.md +0 -19
- data/packages/ivory/lib/buffer.js +0 -111
- data/packages/ivory/lib/events.js +0 -137
- data/packages/ivory/lib/fs.js +0 -266
- data/packages/ivory/lib/main.js +0 -13
- data/packages/ivory/lib/path.js +0 -158
- data/packages/ivory/lib/ruby/buffer.rb +0 -145
- data/packages/ivory/lib/ruby/constants.rb +0 -585
- data/packages/ivory/lib/ruby/events.rb +0 -32
- data/packages/ivory/lib/ruby/fs.rb +0 -245
- data/packages/ivory/lib/ruby/process.rb +0 -28
- data/packages/ivory/lib/stream.js +0 -115
- data/packages/ivory/lib/util.js +0 -414
- data/packages/ivory/package.json +0 -11
- data/packages/jquery/main.js +0 -7179
- data/packages/jquery/package.json +0 -10
- data/packages/json/lib/main.js +0 -14
- data/packages/json/package.json +0 -8
- data/packages/lproj/README.md +0 -77
- data/packages/lproj/examples/demo-app/en.lproj/localized.strings +0 -2
- data/packages/lproj/examples/demo-app/fr.lproj/localized.strings +0 -3
- data/packages/lproj/examples/demo-app/index.html +0 -8
- data/packages/lproj/examples/demo-app/lib/main.js +0 -7
- data/packages/lproj/examples/demo-app/package.json +0 -9
- data/packages/lproj/lib/main.js +0 -78
- data/packages/lproj/lib/strings-format.js +0 -6
- data/packages/lproj/package.json +0 -9
- data/packages/optparse/README.md +0 -161
- data/packages/optparse/TODO +0 -1
- data/packages/optparse/examples/browser-test.html +0 -75
- data/packages/optparse/examples/nodejs-test.js +0 -90
- data/packages/optparse/lib/optparse.js +0 -309
- data/packages/optparse/package.json +0 -13
- data/packages/optparse/seed.yml +0 -5
- data/packages/text/lib/main.js +0 -8
- data/packages/text/package.json +0 -9
- data/packages/web-file/README.md +0 -7
- data/packages/web-file/lib/errors.js +0 -32
- data/packages/web-file/lib/file-reader.js +0 -10
- data/packages/web-file/lib/file-system.js +0 -234
- data/packages/web-file/lib/file-writer.js +0 -10
- data/packages/web-file/lib/file.js +0 -9
- data/packages/web-file/lib/main.js +0 -34
- data/packages/web-file/lib/platform.js +0 -25
- data/packages/web-file/lib/ruby/file.rb +0 -252
- data/packages/web-file/lib/ruby/file_reader.rb +0 -69
- data/packages/web-file/lib/ruby/file_system.rb +0 -134
- data/packages/web-file/lib/ruby/file_writer.rb +0 -78
- data/packages/web-file/package.json +0 -12
- data/packages/web-typed-array/README.md +0 -7
- data/packages/web-typed-array/lib/array-buffer-view.js +0 -9
- data/packages/web-typed-array/lib/array-buffer.js +0 -7
- data/packages/web-typed-array/lib/main.js +0 -33
- data/packages/web-typed-array/lib/platform.js +0 -20
- data/packages/web-typed-array/lib/ruby/array_buffer.rb +0 -31
- data/packages/web-typed-array/lib/ruby/array_buffer_view.rb +0 -130
- data/packages/web-typed-array/lib/ruby/typed_array.rb +0 -133
- data/packages/web-typed-array/lib/typed-array.js +0 -26
- data/packages/web-typed-array/package.json +0 -9
- data/spec/cli/build_spec.rb +0 -59
- data/spec/cli/install_spec.rb +0 -120
- data/spec/cli/installed_spec.rb +0 -55
- data/spec/cli/list_spec.rb +0 -75
- data/spec/cli/login_spec.rb +0 -76
- data/spec/cli/new_spec.rb +0 -5
- data/spec/cli/owner_spec.rb +0 -115
- data/spec/cli/push_spec.rb +0 -74
- data/spec/cli/uninstall_spec.rb +0 -58
- data/spec/cli/unpack_spec.rb +0 -73
- data/spec/cli/unyank_spec.rb +0 -74
- data/spec/cli/update_spec.rb +0 -8
- data/spec/cli/yank_spec.rb +0 -74
- data/spec/credentials_spec.rb +0 -24
- data/spec/fixtures/coffee-1.0.1.pre.spd +0 -0
- data/spec/fixtures/core-test-0.4.3.spd +0 -0
- data/spec/fixtures/core-test/bin/cot +0 -3
- data/spec/fixtures/core-test/lib/main.js +0 -1
- data/spec/fixtures/core-test/resources/runner.css +0 -0
- data/spec/fixtures/core-test/tests/test.js +0 -1
- data/spec/fixtures/ivory-0.0.1.spd +0 -0
- data/spec/fixtures/jquery-1.4.3.spd +0 -0
- data/spec/fixtures/optparse-1.0.1.spd +0 -0
- data/spec/fixtures/package.json +0 -30
- data/spec/gauntlet_spec.rb +0 -27
- data/spec/javascript/async-test.js +0 -123
- data/spec/javascript/compiler/javascript.js +0 -13
- data/spec/javascript/compiler/ruby.js +0 -14
- data/spec/javascript/loader-test.js +0 -64
- data/spec/javascript/normalize-test.js +0 -73
- data/spec/javascript/packages-test.js +0 -44
- data/spec/javascript/relative-require-test.js +0 -72
- data/spec/javascript/require-test.js +0 -117
- data/spec/javascript/sandbox/compile.js +0 -37
- data/spec/javascript/sandbox/creation.js +0 -44
- data/spec/javascript/sandbox/format.js +0 -79
- data/spec/javascript/sandbox/misc.js +0 -57
- data/spec/javascript/sandbox/preprocessor.js +0 -81
- data/spec/javascript/sandbox/require.js +0 -48
- data/spec/javascript/sandbox/run-command.js +0 -21
- data/spec/javascript/spade/externs.js +0 -14
- data/spec/javascript/spade/load-factory.js +0 -15
- data/spec/javascript/spade/misc.js +0 -23
- data/spec/javascript/spade/ready.js +0 -12
- data/spec/javascript/spade/register.js +0 -13
- data/spec/javascript_spec.rb +0 -7
- data/spec/package_spec.rb +0 -267
- data/spec/spec_helper.rb +0 -30
- data/spec/support/cli.rb +0 -94
- data/spec/support/core_test.rb +0 -59
- data/spec/support/fake.rb +0 -44
- data/spec/support/fake_gem_server.rb +0 -66
- data/spec/support/fake_gemcutter.rb +0 -49
- data/spec/support/matchers.rb +0 -31
- data/spec/support/path.rb +0 -54
- data/test-spade.html +0 -8
@@ -1,181 +0,0 @@
|
|
1
|
-
# Conditionals
|
2
|
-
# ------------
|
3
|
-
|
4
|
-
# shared identity function
|
5
|
-
id = (_) -> if arguments.length is 1 then _ else Array::slice.call(arguments)
|
6
|
-
|
7
|
-
#### Basic Conditionals
|
8
|
-
|
9
|
-
test "basic conditionals", ->
|
10
|
-
if false
|
11
|
-
ok false
|
12
|
-
else if false
|
13
|
-
ok false
|
14
|
-
else
|
15
|
-
ok true
|
16
|
-
|
17
|
-
if true
|
18
|
-
ok true
|
19
|
-
else if true
|
20
|
-
ok false
|
21
|
-
else
|
22
|
-
ok true
|
23
|
-
|
24
|
-
unless true
|
25
|
-
ok false
|
26
|
-
else unless true
|
27
|
-
ok false
|
28
|
-
else
|
29
|
-
ok true
|
30
|
-
|
31
|
-
unless false
|
32
|
-
ok true
|
33
|
-
else unless false
|
34
|
-
ok false
|
35
|
-
else
|
36
|
-
ok true
|
37
|
-
|
38
|
-
test "single-line conditional", ->
|
39
|
-
if false then ok false else ok true
|
40
|
-
unless false then ok true else ok false
|
41
|
-
|
42
|
-
test "nested conditionals", ->
|
43
|
-
nonce = {}
|
44
|
-
eq nonce, (if true
|
45
|
-
unless false
|
46
|
-
if false then false else
|
47
|
-
if true
|
48
|
-
nonce)
|
49
|
-
|
50
|
-
test "nested single-line conditionals", ->
|
51
|
-
nonce = {}
|
52
|
-
|
53
|
-
a = if false then undefined else b = if 0 then undefined else nonce
|
54
|
-
eq nonce, a
|
55
|
-
eq nonce, b
|
56
|
-
|
57
|
-
c = if false then undefined else (if 0 then undefined else nonce)
|
58
|
-
eq nonce, c
|
59
|
-
|
60
|
-
d = if true then id(if false then undefined else nonce)
|
61
|
-
eq nonce, d
|
62
|
-
|
63
|
-
test "empty conditional bodies", ->
|
64
|
-
eq undefined, (if false
|
65
|
-
else if false
|
66
|
-
else)
|
67
|
-
|
68
|
-
test "conditional bodies containing only comments", ->
|
69
|
-
eq undefined, (if true
|
70
|
-
###
|
71
|
-
block comment
|
72
|
-
###
|
73
|
-
else
|
74
|
-
# comment
|
75
|
-
)
|
76
|
-
|
77
|
-
eq undefined, (if false
|
78
|
-
# comment
|
79
|
-
else if true
|
80
|
-
###
|
81
|
-
block comment
|
82
|
-
###
|
83
|
-
else)
|
84
|
-
|
85
|
-
test "return value of if-else is from the proper body", ->
|
86
|
-
nonce = {}
|
87
|
-
eq nonce, if false then undefined else nonce
|
88
|
-
|
89
|
-
test "return value of unless-else is from the proper body", ->
|
90
|
-
nonce = {}
|
91
|
-
eq nonce, unless true then undefined else nonce
|
92
|
-
|
93
|
-
|
94
|
-
#### Interactions With Functions
|
95
|
-
|
96
|
-
test "single-line function definition with single-line conditional", ->
|
97
|
-
fn = -> if 1 < 0.5 then 1 else -1
|
98
|
-
ok fn() is -1
|
99
|
-
|
100
|
-
test "function resturns conditional value with no `else`", ->
|
101
|
-
fn = ->
|
102
|
-
return if false then true
|
103
|
-
eq undefined, fn()
|
104
|
-
|
105
|
-
test "function returns a conditional value", ->
|
106
|
-
a = {}
|
107
|
-
fnA = ->
|
108
|
-
return if false then undefined else a
|
109
|
-
eq a, fnA()
|
110
|
-
|
111
|
-
b = {}
|
112
|
-
fnB = ->
|
113
|
-
return unless false then b else undefined
|
114
|
-
eq b, fnB()
|
115
|
-
|
116
|
-
test "passing a conditional value to a function", ->
|
117
|
-
nonce = {}
|
118
|
-
eq nonce, id if false then undefined else nonce
|
119
|
-
|
120
|
-
test "unmatched `then` should catch implicit calls", ->
|
121
|
-
a = 0
|
122
|
-
trueFn = -> true
|
123
|
-
if trueFn undefined then a += 1
|
124
|
-
eq 1, a
|
125
|
-
|
126
|
-
|
127
|
-
#### if-to-ternary
|
128
|
-
|
129
|
-
test "if-to-ternary with instanceof requires parentheses", ->
|
130
|
-
nonce = {}
|
131
|
-
eq nonce, (if {} instanceof Object
|
132
|
-
nonce
|
133
|
-
else
|
134
|
-
undefined)
|
135
|
-
|
136
|
-
test "if-to-ternary as part of a larger operation requires parentheses", ->
|
137
|
-
ok 2, 1 + if false then 0 else 1
|
138
|
-
|
139
|
-
|
140
|
-
#### Odd Formatting
|
141
|
-
|
142
|
-
test "if-else indented within an assignment", ->
|
143
|
-
nonce = {}
|
144
|
-
result =
|
145
|
-
if false
|
146
|
-
undefined
|
147
|
-
else
|
148
|
-
nonce
|
149
|
-
eq nonce, result
|
150
|
-
|
151
|
-
test "suppressed indentation via assignment", ->
|
152
|
-
nonce = {}
|
153
|
-
result =
|
154
|
-
if false then undefined
|
155
|
-
else if no then undefined
|
156
|
-
else if 0 then undefined
|
157
|
-
else if 1 < 0 then undefined
|
158
|
-
else id(
|
159
|
-
if false then undefined
|
160
|
-
else nonce
|
161
|
-
)
|
162
|
-
eq nonce, result
|
163
|
-
|
164
|
-
test "tight formatting with leading `then`", ->
|
165
|
-
nonce = {}
|
166
|
-
eq nonce,
|
167
|
-
if true
|
168
|
-
then nonce
|
169
|
-
else undefined
|
170
|
-
|
171
|
-
test "#738", ->
|
172
|
-
nonce = {}
|
173
|
-
fn = if true then -> nonce
|
174
|
-
eq nonce, fn()
|
175
|
-
|
176
|
-
test "#748: trailing reserved identifiers", ->
|
177
|
-
nonce = {}
|
178
|
-
obj = delete: true
|
179
|
-
result = if obj.delete
|
180
|
-
nonce
|
181
|
-
eq nonce, result
|
@@ -1,90 +0,0 @@
|
|
1
|
-
# Exceptions
|
2
|
-
# ----------
|
3
|
-
|
4
|
-
# shared nonce
|
5
|
-
nonce = {}
|
6
|
-
|
7
|
-
|
8
|
-
#### Throw
|
9
|
-
|
10
|
-
test "basic exception throwing", ->
|
11
|
-
throws (-> throw 'error'), 'error'
|
12
|
-
|
13
|
-
|
14
|
-
#### Empty Try/Catch/Finally
|
15
|
-
|
16
|
-
test "try can exist alone", ->
|
17
|
-
try
|
18
|
-
|
19
|
-
test "try/catch with empty try, empty catch", ->
|
20
|
-
try
|
21
|
-
# nothing
|
22
|
-
catch err
|
23
|
-
# nothing
|
24
|
-
|
25
|
-
test "single-line try/catch with empty try, empty catch", ->
|
26
|
-
try catch err
|
27
|
-
|
28
|
-
test "try/finally with empty try, empty finally", ->
|
29
|
-
try
|
30
|
-
# nothing
|
31
|
-
finally
|
32
|
-
# nothing
|
33
|
-
|
34
|
-
test "single-line try/finally with empty try, empty finally", ->
|
35
|
-
try finally
|
36
|
-
|
37
|
-
test "try/catch/finally with empty try, empty catch, empty finally", ->
|
38
|
-
try
|
39
|
-
catch err
|
40
|
-
finally
|
41
|
-
|
42
|
-
test "single-line try/catch/finally with empty try, empty catch, empty finally", ->
|
43
|
-
try catch err then finally
|
44
|
-
|
45
|
-
|
46
|
-
#### Try/Catch/Finally as an Expression
|
47
|
-
|
48
|
-
test "return the result of try when no exception is thrown", ->
|
49
|
-
result = try
|
50
|
-
nonce
|
51
|
-
catch err
|
52
|
-
undefined
|
53
|
-
finally
|
54
|
-
undefined
|
55
|
-
eq nonce, result
|
56
|
-
|
57
|
-
test "single-line result of try when no exception is thrown", ->
|
58
|
-
result = try nonce catch err then undefined
|
59
|
-
eq nonce, result
|
60
|
-
|
61
|
-
test "return the result of catch when an exception is thrown", ->
|
62
|
-
fn = ->
|
63
|
-
try
|
64
|
-
throw ->
|
65
|
-
catch err
|
66
|
-
nonce
|
67
|
-
doesNotThrow fn
|
68
|
-
eq nonce, fn()
|
69
|
-
|
70
|
-
test "single-line result of catch when an exception is thrown", ->
|
71
|
-
fn = ->
|
72
|
-
try throw (->) catch err then nonce
|
73
|
-
doesNotThrow fn
|
74
|
-
eq nonce, fn()
|
75
|
-
|
76
|
-
test "optional catch", ->
|
77
|
-
fn = ->
|
78
|
-
try throw ->
|
79
|
-
nonce
|
80
|
-
doesNotThrow fn
|
81
|
-
eq nonce, fn()
|
82
|
-
|
83
|
-
|
84
|
-
#### Try/Catch/Finally Interaction With Other Constructs
|
85
|
-
|
86
|
-
test "try/catch with empty catch as last statement in a function body", ->
|
87
|
-
fn = ->
|
88
|
-
try nonce
|
89
|
-
catch err
|
90
|
-
eq nonce, fn()
|
@@ -1,96 +0,0 @@
|
|
1
|
-
# Helpers
|
2
|
-
# -------
|
3
|
-
|
4
|
-
# pull the helpers from `CoffeeScript.helpers` into local variables
|
5
|
-
{starts, ends, compact, count, merge, extend, flatten, del, last} = CoffeeScript.helpers
|
6
|
-
|
7
|
-
|
8
|
-
#### `starts`
|
9
|
-
|
10
|
-
test "the `starts` helper tests if a string starts with another string", ->
|
11
|
-
ok starts('01234', '012')
|
12
|
-
ok not starts('01234', '123')
|
13
|
-
|
14
|
-
test "the `starts` helper can take an optional offset", ->
|
15
|
-
ok starts('01234', '34', 3)
|
16
|
-
ok not starts('01234', '01', 1)
|
17
|
-
|
18
|
-
|
19
|
-
#### `ends`
|
20
|
-
|
21
|
-
test "the `ends` helper tests if a string ends with another string", ->
|
22
|
-
ok ends('01234', '234')
|
23
|
-
ok not ends('01234', '012')
|
24
|
-
|
25
|
-
test "the `ends` helper can take an optional offset", ->
|
26
|
-
ok ends('01234', '012', 2)
|
27
|
-
ok not ends('01234', '234', 6)
|
28
|
-
|
29
|
-
|
30
|
-
#### `compact`
|
31
|
-
|
32
|
-
test "the `compact` helper removes falsey values from an array, preserves truthy ones", ->
|
33
|
-
allValues = [1, 0, false, obj={}, [], '', ' ', -1, null, undefined, true]
|
34
|
-
truthyValues = [1, obj, [], ' ', -1, true]
|
35
|
-
arrayEq truthyValues, compact(allValues)
|
36
|
-
|
37
|
-
|
38
|
-
#### `count`
|
39
|
-
|
40
|
-
test "the `count` helper counts the number of occurances of a string in another string", ->
|
41
|
-
eq 1/0, count('abc', '')
|
42
|
-
eq 0, count('abc', 'z')
|
43
|
-
eq 1, count('abc', 'a')
|
44
|
-
eq 1, count('abc', 'b')
|
45
|
-
eq 2, count('abcdc', 'c')
|
46
|
-
eq 2, count('abcdabcd','abc')
|
47
|
-
|
48
|
-
|
49
|
-
#### `merge`
|
50
|
-
|
51
|
-
test "the `merge` helper makes a new object with all properties of the objects given as its arguments", ->
|
52
|
-
ary = [0, 1, 2, 3, 4]
|
53
|
-
obj = {}
|
54
|
-
merged = merge obj, ary
|
55
|
-
ok merged isnt obj
|
56
|
-
ok merged isnt ary
|
57
|
-
for own key, val of ary
|
58
|
-
eq val, merged[key]
|
59
|
-
|
60
|
-
|
61
|
-
#### `extend`
|
62
|
-
|
63
|
-
test "the `extend` helper performs a shallow copy", ->
|
64
|
-
ary = [0, 1, 2, 3]
|
65
|
-
obj = {}
|
66
|
-
# should return the object being extended
|
67
|
-
eq obj, extend(obj, ary)
|
68
|
-
# should copy the other object's properties as well (obviously)
|
69
|
-
eq 2, obj[2]
|
70
|
-
|
71
|
-
|
72
|
-
#### `flatten`
|
73
|
-
|
74
|
-
test "the `flatten` helper flattens an array", ->
|
75
|
-
success = yes
|
76
|
-
(success and= typeof n is 'number') for n in flatten [0, [[[1]], 2], 3, [4]]
|
77
|
-
ok success
|
78
|
-
|
79
|
-
|
80
|
-
#### `del`
|
81
|
-
|
82
|
-
test "the `del` helper deletes a property from an object and returns the deleted value", ->
|
83
|
-
obj = [0, 1, 2]
|
84
|
-
eq 1, del(obj, 1)
|
85
|
-
ok 1 not of obj
|
86
|
-
|
87
|
-
|
88
|
-
#### `last`
|
89
|
-
|
90
|
-
test "the `last` helper returns the last item of an array-like object", ->
|
91
|
-
ary = [0, 1, 2, 3, 4]
|
92
|
-
eq 4, last(ary)
|
93
|
-
|
94
|
-
test "the `last` helper allows one to specify an optional offset", ->
|
95
|
-
ary = [0, 1, 2, 3, 4]
|
96
|
-
eq 2, last(ary, 2)
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Importing
|
2
|
-
# ---------
|
3
|
-
|
4
|
-
unless window? or testingBrowser?
|
5
|
-
test "coffeescript modules can be imported and executed", ->
|
6
|
-
|
7
|
-
magicKey = __filename
|
8
|
-
magicValue = 0xFFFF
|
9
|
-
|
10
|
-
if global[magicKey]?
|
11
|
-
if exports?
|
12
|
-
local = magicValue
|
13
|
-
exports.method = -> local
|
14
|
-
else
|
15
|
-
global[magicKey] = {}
|
16
|
-
if require?.extensions? or require?.registerExtension?
|
17
|
-
ok require(__filename).method() is magicValue
|
18
|
-
delete global[magicKey]
|
@@ -1,225 +0,0 @@
|
|
1
|
-
# Operators
|
2
|
-
# ---------
|
3
|
-
|
4
|
-
test "binary (2-ary) math operators do not require spaces", ->
|
5
|
-
a = 1
|
6
|
-
b = -1
|
7
|
-
eq +1, a*-b
|
8
|
-
eq -1, a*+b
|
9
|
-
eq +1, a/-b
|
10
|
-
eq -1, a/+b
|
11
|
-
|
12
|
-
test "operators should respect new lines as spaced", ->
|
13
|
-
a = 123 +
|
14
|
-
456
|
15
|
-
eq 579, a
|
16
|
-
|
17
|
-
b = "1#{2}3" +
|
18
|
-
"456"
|
19
|
-
eq '123456', b
|
20
|
-
|
21
|
-
test "multiple operators should space themselves", ->
|
22
|
-
eq (+ +1), (- -1)
|
23
|
-
|
24
|
-
test "bitwise operators", ->
|
25
|
-
eq 2, (10 & 3)
|
26
|
-
eq 11, (10 | 3)
|
27
|
-
eq 9, (10 ^ 3)
|
28
|
-
eq 80, (10 << 3)
|
29
|
-
eq 1, (10 >> 3)
|
30
|
-
eq 1, (10 >>> 3)
|
31
|
-
num = 10; eq 2, (num &= 3)
|
32
|
-
num = 10; eq 11, (num |= 3)
|
33
|
-
num = 10; eq 9, (num ^= 3)
|
34
|
-
num = 10; eq 80, (num <<= 3)
|
35
|
-
num = 10; eq 1, (num >>= 3)
|
36
|
-
num = 10; eq 1, (num >>>= 3)
|
37
|
-
|
38
|
-
test "`instanceof`", ->
|
39
|
-
ok new String instanceof String
|
40
|
-
ok new Boolean instanceof Boolean
|
41
|
-
# `instanceof` supports negation by prefixing the operator with `not`
|
42
|
-
ok new Number not instanceof String
|
43
|
-
ok new Array not instanceof Boolean
|
44
|
-
|
45
|
-
|
46
|
-
#### Compound Assignment Operators
|
47
|
-
|
48
|
-
test "boolean operators", ->
|
49
|
-
nonce = {}
|
50
|
-
|
51
|
-
a = 0
|
52
|
-
a or= nonce
|
53
|
-
eq nonce, a
|
54
|
-
|
55
|
-
b = 1
|
56
|
-
b or= nonce
|
57
|
-
eq 1, b
|
58
|
-
|
59
|
-
c = 0
|
60
|
-
c and= nonce
|
61
|
-
eq 0, c
|
62
|
-
|
63
|
-
d = 1
|
64
|
-
d and= nonce
|
65
|
-
eq nonce, d
|
66
|
-
|
67
|
-
# ensure that RHS is treated as a group
|
68
|
-
e = f = false
|
69
|
-
e and= f or true
|
70
|
-
eq false, e
|
71
|
-
|
72
|
-
test "compound assignment as a sub expression", ->
|
73
|
-
[a, b, c] = [1, 2, 3]
|
74
|
-
eq 6, (a + b += c)
|
75
|
-
eq 1, a
|
76
|
-
eq 5, b
|
77
|
-
eq 3, c
|
78
|
-
|
79
|
-
# *note: this test could still use refactoring*
|
80
|
-
test "compound assignment should be careful about caching variables", ->
|
81
|
-
count = 0
|
82
|
-
list = []
|
83
|
-
|
84
|
-
list[++count] or= 1
|
85
|
-
eq 1, list[1]
|
86
|
-
eq 1, count
|
87
|
-
|
88
|
-
list[++count] ?= 2
|
89
|
-
eq 2, list[2]
|
90
|
-
eq 2, count
|
91
|
-
|
92
|
-
list[count++] and= 6
|
93
|
-
eq 6, list[2]
|
94
|
-
eq 3, count
|
95
|
-
|
96
|
-
base = ->
|
97
|
-
++count
|
98
|
-
base
|
99
|
-
|
100
|
-
base().four or= 4
|
101
|
-
eq 4, base.four
|
102
|
-
eq 4, count
|
103
|
-
|
104
|
-
base().five ?= 5
|
105
|
-
eq 5, base.five
|
106
|
-
eq 5, count
|
107
|
-
|
108
|
-
test "compound assignment with implicit objects", ->
|
109
|
-
obj = undefined
|
110
|
-
obj ?=
|
111
|
-
one: 1
|
112
|
-
|
113
|
-
eq 1, obj.one
|
114
|
-
|
115
|
-
obj and=
|
116
|
-
two: 2
|
117
|
-
|
118
|
-
eq undefined, obj.one
|
119
|
-
eq 2, obj.two
|
120
|
-
|
121
|
-
|
122
|
-
#### `is`,`isnt`,`==`,`!=`
|
123
|
-
|
124
|
-
test "`==` and `is` should be interchangeable", ->
|
125
|
-
a = b = 1
|
126
|
-
ok a is 1 and b == 1
|
127
|
-
ok a == b
|
128
|
-
ok a is b
|
129
|
-
|
130
|
-
test "`!=` and `isnt` should be interchangeable", ->
|
131
|
-
a = 0
|
132
|
-
b = 1
|
133
|
-
ok a isnt 1 and b != 0
|
134
|
-
ok a != b
|
135
|
-
ok a isnt b
|
136
|
-
|
137
|
-
|
138
|
-
#### `in`, `of`
|
139
|
-
|
140
|
-
# - `in` should check if an array contains a value using `indexOf`
|
141
|
-
# - `of` should check if a property is defined on an object using `in`
|
142
|
-
test "in, of", ->
|
143
|
-
arr = [1]
|
144
|
-
ok 0 of arr
|
145
|
-
ok 1 in arr
|
146
|
-
# prefixing `not` to `in and `of` should negate them
|
147
|
-
ok 1 not of arr
|
148
|
-
ok 0 not in arr
|
149
|
-
|
150
|
-
test "`in` should be able to operate on an array literal", ->
|
151
|
-
ok 2 in [0, 1, 2, 3]
|
152
|
-
ok 4 not in [0, 1, 2, 3]
|
153
|
-
arr = [0, 1, 2, 3]
|
154
|
-
ok 2 in arr
|
155
|
-
ok 4 not in arr
|
156
|
-
# should cache the value used to test the array
|
157
|
-
arr = [0]
|
158
|
-
val = 0
|
159
|
-
ok val++ in arr
|
160
|
-
ok val++ not in arr
|
161
|
-
val = 0
|
162
|
-
ok val++ of arr
|
163
|
-
ok val++ not of arr
|
164
|
-
|
165
|
-
test "`of` and `in` should be able to operate on instance variables", ->
|
166
|
-
obj = {
|
167
|
-
list: [2,3]
|
168
|
-
in_list: (value) -> value in @list
|
169
|
-
not_in_list: (value) -> value not in @list
|
170
|
-
of_list: (value) -> value of @list
|
171
|
-
not_of_list: (value) -> value not of @list
|
172
|
-
}
|
173
|
-
ok obj.in_list 3
|
174
|
-
ok obj.not_in_list 1
|
175
|
-
ok obj.of_list 0
|
176
|
-
ok obj.not_of_list 2
|
177
|
-
|
178
|
-
test "#???: `in` with cache and `__indexOf` should work in argument lists", ->
|
179
|
-
eq 1, [Object() in Array()].length
|
180
|
-
|
181
|
-
test "#737: `in` should have higher precedence than logical operators", ->
|
182
|
-
eq 1, 1 in [1] and 1
|
183
|
-
|
184
|
-
test "#768: `in` should preserve evaluation order", ->
|
185
|
-
share = 0
|
186
|
-
a = -> share++ if share is 0
|
187
|
-
b = -> share++ if share is 1
|
188
|
-
c = -> share++ if share is 2
|
189
|
-
ok a() not in [b(),c()]
|
190
|
-
eq 3, share
|
191
|
-
|
192
|
-
|
193
|
-
#### Chainable Operators
|
194
|
-
|
195
|
-
test "chainable operators", ->
|
196
|
-
ok 100 > 10 > 1 > 0 > -1
|
197
|
-
ok -1 < 0 < 1 < 10 < 100
|
198
|
-
|
199
|
-
test "`is` and `isnt` may be chained", ->
|
200
|
-
ok true is not false is true is not false
|
201
|
-
ok 0 is 0 isnt 1 is 1
|
202
|
-
|
203
|
-
test "different comparison operators (`>`,`<`,`is`,etc.) may be combined", ->
|
204
|
-
ok 1 < 2 > 1
|
205
|
-
ok 10 < 20 > 2+3 is 5
|
206
|
-
|
207
|
-
test "some chainable operators can be negated by `unless`", ->
|
208
|
-
ok (true unless 0==10!=100)
|
209
|
-
|
210
|
-
test "operator precedence: `|` lower than `<`", ->
|
211
|
-
eq 1, 1 | 2 < 3 < 4
|
212
|
-
|
213
|
-
test "preserve references", ->
|
214
|
-
a = b = c = 1
|
215
|
-
# `a == b <= c` should become `a === b && b <= c`
|
216
|
-
# (this test does not seem to test for this)
|
217
|
-
ok a == b <= c
|
218
|
-
|
219
|
-
test "chained operations should evaluate each value only once", ->
|
220
|
-
a = 0
|
221
|
-
ok 1 > a++ < 1
|
222
|
-
|
223
|
-
test "#891: incorrect inversion of chained comparisons", ->
|
224
|
-
ok (true unless 0 > 1 > 2)
|
225
|
-
ok (true unless (NaN = 0/0) < 0/0 < NaN)
|