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.
- 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,16 +0,0 @@
|
|
1
|
-
# Beautiful Code, Chapter 6.
|
2
|
-
# The implementation of binary search that is tested.
|
3
|
-
|
4
|
-
# Return the index of an element in a sorted list. (or -1, if not present)
|
5
|
-
index = (list, target) ->
|
6
|
-
[low, high] = [0, list.length]
|
7
|
-
while low < high
|
8
|
-
mid = (low + high) >> 1
|
9
|
-
val = list[mid]
|
10
|
-
return mid if val is target
|
11
|
-
if val < target then low = mid + 1 else high = mid
|
12
|
-
return -1
|
13
|
-
|
14
|
-
console.log 2 is index [10, 20, 30, 40, 50], 30
|
15
|
-
console.log 4 is index [-97, 35, 67, 88, 1200], 1200
|
16
|
-
console.log 0 is index [0, 45, 70], 0
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# Beautiful Code, Chapter 3.
|
2
|
-
# Produces the expected runtime of Quicksort, for every integer from 1 to N.
|
3
|
-
|
4
|
-
runtime = (N) ->
|
5
|
-
[sum, t] = [0, 0]
|
6
|
-
for n in [1..N]
|
7
|
-
sum += 2 * t
|
8
|
-
t = n - 1 + sum / n
|
9
|
-
t
|
10
|
-
|
11
|
-
console.log runtime(3) is 2.6666666666666665
|
12
|
-
console.log runtime(5) is 7.4
|
13
|
-
console.log runtime(8) is 16.92142857142857
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# Beautiful Code, Chapter 1.
|
2
|
-
# Implements a regular expression matcher that supports character matches,
|
3
|
-
# '.', '^', '$', and '*'.
|
4
|
-
|
5
|
-
# Search for the regexp anywhere in the text.
|
6
|
-
match = (regexp, text) ->
|
7
|
-
return match_here(regexp.slice(1), text) if regexp[0] is '^'
|
8
|
-
while text
|
9
|
-
return true if match_here(regexp, text)
|
10
|
-
text = text.slice(1)
|
11
|
-
false
|
12
|
-
|
13
|
-
# Search for the regexp at the beginning of the text.
|
14
|
-
match_here = (regexp, text) ->
|
15
|
-
[cur, next] = [regexp[0], regexp[1]]
|
16
|
-
if regexp.length is 0 then return true
|
17
|
-
if next is '*' then return match_star(cur, regexp.slice(2), text)
|
18
|
-
if cur is '$' and not next then return text.length is 0
|
19
|
-
if text and (cur is '.' or cur is text[0]) then return match_here(regexp.slice(1), text.slice(1))
|
20
|
-
false
|
21
|
-
|
22
|
-
# Search for a kleene star match at the beginning of the text.
|
23
|
-
match_star = (c, regexp, text) ->
|
24
|
-
loop
|
25
|
-
return true if match_here(regexp, text)
|
26
|
-
return false unless text and (text[0] is c or c is '.')
|
27
|
-
text = text.slice(1)
|
28
|
-
|
29
|
-
console.log match("ex", "some text")
|
30
|
-
console.log match("s..t", "spit")
|
31
|
-
console.log match("^..t", "buttercup")
|
32
|
-
console.log match("i..$", "cherries")
|
33
|
-
console.log match("o*m", "vrooooommm!")
|
34
|
-
console.log match("^hel*o$", "hellllllo")
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# After wycats' http://yehudakatz.com/2010/02/07/the-building-blocks-of-ruby/
|
2
|
-
|
3
|
-
# Sinatra.
|
4
|
-
get '/hello', ->
|
5
|
-
'Hello World'
|
6
|
-
|
7
|
-
|
8
|
-
# Append.
|
9
|
-
append = (location, data) ->
|
10
|
-
path = new Pathname location
|
11
|
-
throw new Error("Location does not exist") unless path.exists()
|
12
|
-
|
13
|
-
File.open path, 'a', (file) ->
|
14
|
-
file.console.log YAML.dump data
|
15
|
-
|
16
|
-
data
|
17
|
-
|
18
|
-
|
19
|
-
# Rubinius' File.open implementation.
|
20
|
-
File.open = (path, mode, block) ->
|
21
|
-
io = new File path, mode
|
22
|
-
|
23
|
-
return io unless block
|
24
|
-
|
25
|
-
try
|
26
|
-
block io
|
27
|
-
finally
|
28
|
-
io.close() unless io.closed()
|
29
|
-
|
30
|
-
|
31
|
-
# Write.
|
32
|
-
write = (location, data) ->
|
33
|
-
path = new Pathname location
|
34
|
-
raise "Location does not exist" unless path.exists()
|
35
|
-
|
36
|
-
File.open path, 'w', (file) ->
|
37
|
-
return false if Digest.MD5.hexdigest(file.read()) is data.hash()
|
38
|
-
file.console.log YAML.dump data
|
39
|
-
true
|
40
|
-
|
41
|
-
|
42
|
-
# Rails' respond_to.
|
43
|
-
index = ->
|
44
|
-
people = Person.find 'all'
|
45
|
-
|
46
|
-
respond_to (format) ->
|
47
|
-
format.html()
|
48
|
-
format.xml -> render xml: people.xml()
|
49
|
-
|
50
|
-
|
51
|
-
# Synchronization.
|
52
|
-
synchronize = (block) ->
|
53
|
-
lock()
|
54
|
-
try block() finally unlock()
|
@@ -1,167 +0,0 @@
|
|
1
|
-
# Functions:
|
2
|
-
square = (x) -> x * x
|
3
|
-
|
4
|
-
sum = (x, y) -> x + y
|
5
|
-
|
6
|
-
odd = (x) -> x % 2 isnt 0
|
7
|
-
|
8
|
-
even = (x) -> x % 2 is 0
|
9
|
-
|
10
|
-
run_loop = ->
|
11
|
-
fire_events((e) -> e.stopPropagation())
|
12
|
-
listen()
|
13
|
-
wait()
|
14
|
-
|
15
|
-
# Objects:
|
16
|
-
dense_object_literal = {one: 1, two: 2, three: 3}
|
17
|
-
|
18
|
-
spaced_out_multiline_object =
|
19
|
-
pi: 3.14159
|
20
|
-
list: [1, 2, 3, 4]
|
21
|
-
regex: /match[ing](every|thing|\/)/gi
|
22
|
-
three: new Idea
|
23
|
-
|
24
|
-
inner_obj:
|
25
|
-
freedom: -> _.freedom()
|
26
|
-
|
27
|
-
# Arrays:
|
28
|
-
stooges = [{moe: 45}, {curly: 43}, {larry: 46}]
|
29
|
-
|
30
|
-
exponents = [((x) -> x), ((x) -> x * x), ((x) -> x * x * x)]
|
31
|
-
|
32
|
-
empty = []
|
33
|
-
|
34
|
-
multiline = [
|
35
|
-
'line one'
|
36
|
-
'line two'
|
37
|
-
]
|
38
|
-
|
39
|
-
# Conditionals and ternaries.
|
40
|
-
if submarine.shields_up
|
41
|
-
full_speed_ahead()
|
42
|
-
fire_torpedos()
|
43
|
-
else if submarine.sinking
|
44
|
-
abandon_ship()
|
45
|
-
else
|
46
|
-
run_away()
|
47
|
-
|
48
|
-
eldest = if 25 > 21 then liz else marge
|
49
|
-
|
50
|
-
decoration = medal_of_honor if war_hero
|
51
|
-
|
52
|
-
go_to_sleep() unless coffee
|
53
|
-
|
54
|
-
# Returning early:
|
55
|
-
race = ->
|
56
|
-
run()
|
57
|
-
walk()
|
58
|
-
crawl()
|
59
|
-
if tired then return sleep()
|
60
|
-
race()
|
61
|
-
|
62
|
-
# Conditional assignment:
|
63
|
-
good or= evil
|
64
|
-
wine and= cheese
|
65
|
-
|
66
|
-
# Nested property access and calls.
|
67
|
-
((moon.turn(360))).shapes[3].move({x: 45, y: 30}).position['top'].offset('x')
|
68
|
-
|
69
|
-
a = b = c = 5
|
70
|
-
|
71
|
-
# Embedded JavaScript.
|
72
|
-
callback(
|
73
|
-
`function(e) { e.stop(); }`
|
74
|
-
)
|
75
|
-
|
76
|
-
# Try/Catch/Finally/Throw.
|
77
|
-
try
|
78
|
-
all_hell_breaks_loose()
|
79
|
-
dogs_and_cats_living_together()
|
80
|
-
throw "up"
|
81
|
-
catch error
|
82
|
-
print(error)
|
83
|
-
finally
|
84
|
-
clean_up()
|
85
|
-
|
86
|
-
try all_hell_breaks_loose() catch error then print(error) finally clean_up()
|
87
|
-
|
88
|
-
# While loops, break and continue.
|
89
|
-
while demand > supply
|
90
|
-
sell()
|
91
|
-
restock()
|
92
|
-
|
93
|
-
while supply > demand then buy()
|
94
|
-
|
95
|
-
loop
|
96
|
-
break if broken
|
97
|
-
continue if continuing
|
98
|
-
|
99
|
-
# Unary operators.
|
100
|
-
!!true
|
101
|
-
|
102
|
-
# Lexical scoping.
|
103
|
-
v_1 = 5
|
104
|
-
change_a_and_set_b = ->
|
105
|
-
v_1 = 10
|
106
|
-
v_2 = 15
|
107
|
-
v_2 = 20
|
108
|
-
|
109
|
-
# Array comprehensions.
|
110
|
-
supper = food.capitalize() for food in ['toast', 'cheese', 'wine']
|
111
|
-
|
112
|
-
drink bottle for bottle, i in ['soda', 'wine', 'lemonade'] when even i
|
113
|
-
|
114
|
-
# Switch statements ("else" serves as a default).
|
115
|
-
activity = switch day
|
116
|
-
when "Tuesday" then eat_breakfast()
|
117
|
-
when "Sunday" then go_to_church()
|
118
|
-
when "Saturday" then go_to_the_park()
|
119
|
-
when "Wednesday"
|
120
|
-
if day is bingo_day
|
121
|
-
go_to_bingo()
|
122
|
-
else
|
123
|
-
eat_breakfast()
|
124
|
-
go_to_work()
|
125
|
-
eat_dinner()
|
126
|
-
else go_to_work()
|
127
|
-
|
128
|
-
# Semicolons can optionally be used instead of newlines.
|
129
|
-
wednesday = -> eat_breakfast(); go_to_work(); eat_dinner()
|
130
|
-
|
131
|
-
# Multiline strings with inner quotes.
|
132
|
-
story = "Lorem ipsum dolor \"sit\" amet, consectetuer adipiscing elit,
|
133
|
-
sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna
|
134
|
-
aliquam erat volutpat. Ut wisi enim ad."
|
135
|
-
|
136
|
-
# Inheritance and calling super.
|
137
|
-
class Animal
|
138
|
-
(@name) ->
|
139
|
-
|
140
|
-
move: (meters) ->
|
141
|
-
alert this.name + " moved " + meters + "m."
|
142
|
-
|
143
|
-
class Snake extends Animal
|
144
|
-
move: ->
|
145
|
-
alert 'Slithering...'
|
146
|
-
super 5
|
147
|
-
|
148
|
-
class Horse extends Animal
|
149
|
-
move: ->
|
150
|
-
alert 'Galloping...'
|
151
|
-
super 45
|
152
|
-
|
153
|
-
sam = new Snake "Sammy the Snake"
|
154
|
-
tom = new Horse "Tommy the Horse"
|
155
|
-
|
156
|
-
sam.move()
|
157
|
-
tom.move()
|
158
|
-
|
159
|
-
# Numbers.
|
160
|
-
a_googol = 1e100
|
161
|
-
hex = 0xff0000
|
162
|
-
negative = -1.0
|
163
|
-
infinity = Infinity
|
164
|
-
nan = NaN
|
165
|
-
|
166
|
-
# Deleting.
|
167
|
-
delete secret.identity
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# Uses a binary search algorithm to locate a value in the specified array.
|
2
|
-
binary_search = (items, value) ->
|
3
|
-
|
4
|
-
start = 0
|
5
|
-
stop = items.length - 1
|
6
|
-
pivot = Math.floor (start + stop) / 2
|
7
|
-
|
8
|
-
while items[pivot] isnt value and start < stop
|
9
|
-
|
10
|
-
# Adjust the search area.
|
11
|
-
stop = pivot - 1 if value < items[pivot]
|
12
|
-
start = pivot + 1 if value > items[pivot]
|
13
|
-
|
14
|
-
# Recalculate the pivot.
|
15
|
-
pivot = Math.floor (stop + start) / 2
|
16
|
-
|
17
|
-
# Make sure we've found the correct value.
|
18
|
-
if items[pivot] is value then pivot else -1
|
19
|
-
|
20
|
-
|
21
|
-
# Test the function.
|
22
|
-
console.log 2 is binary_search [10, 20, 30, 40, 50], 30
|
23
|
-
console.log 4 is binary_search [-97, 35, 67, 88, 1200], 1200
|
24
|
-
console.log 0 is binary_search [0, 45, 70], 0
|
25
|
-
console.log(-1 is binary_search [0, 45, 70], 10)
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# A bubble sort implementation, sorting the given array in-place.
|
2
|
-
bubble_sort = (list) ->
|
3
|
-
for i in [0...list.length]
|
4
|
-
for j in [0...list.length - i]
|
5
|
-
[list[j], list[j+1]] = [list[j+1], list[j]] if list[j] > list[j+1]
|
6
|
-
list
|
7
|
-
|
8
|
-
|
9
|
-
# Test the function.
|
10
|
-
console.log bubble_sort([3, 2, 1]).join(' ') is '1 2 3'
|
11
|
-
console.log bubble_sort([9, 2, 7, 0, 1]).join(' ') is '0 1 2 7 9'
|
@@ -1,108 +0,0 @@
|
|
1
|
-
# "Classic" linked list implementation that doesn't keep track of its size.
|
2
|
-
class LinkedList
|
3
|
-
|
4
|
-
->
|
5
|
-
this._head = null # Pointer to the first item in the list.
|
6
|
-
|
7
|
-
|
8
|
-
# Appends some data to the end of the list. This method traverses the existing
|
9
|
-
# list and places the value at the end in a new node.
|
10
|
-
add: (data) ->
|
11
|
-
|
12
|
-
# Create a new node object to wrap the data.
|
13
|
-
node = data: data, next: null
|
14
|
-
|
15
|
-
current = this._head or= node
|
16
|
-
|
17
|
-
if this._head isnt node
|
18
|
-
(current = current.next) while current.next
|
19
|
-
current.next = node
|
20
|
-
|
21
|
-
this
|
22
|
-
|
23
|
-
|
24
|
-
# Retrieves the data at the given position in the list.
|
25
|
-
item: (index) ->
|
26
|
-
|
27
|
-
# Check for out-of-bounds values.
|
28
|
-
return null if index < 0
|
29
|
-
|
30
|
-
current = this._head or null
|
31
|
-
i = -1
|
32
|
-
|
33
|
-
# Advance through the list.
|
34
|
-
(current = current.next) while current and index > (i += 1)
|
35
|
-
|
36
|
-
# Return null if we've reached the end.
|
37
|
-
current and current.data
|
38
|
-
|
39
|
-
|
40
|
-
# Remove the item from the given location in the list.
|
41
|
-
remove: (index) ->
|
42
|
-
|
43
|
-
# Check for out-of-bounds values.
|
44
|
-
return null if index < 0
|
45
|
-
|
46
|
-
current = this._head or null
|
47
|
-
i = -1
|
48
|
-
|
49
|
-
# Special case: removing the first item.
|
50
|
-
if index is 0
|
51
|
-
this._head = current.next
|
52
|
-
else
|
53
|
-
|
54
|
-
# Find the right location.
|
55
|
-
([previous, current] = [current, current.next]) while index > (i += 1)
|
56
|
-
|
57
|
-
# Skip over the item to remove.
|
58
|
-
previous.next = current.next
|
59
|
-
|
60
|
-
# Return the value.
|
61
|
-
current and current.data
|
62
|
-
|
63
|
-
|
64
|
-
# Calculate the number of items in the list.
|
65
|
-
size: ->
|
66
|
-
current = this._head
|
67
|
-
count = 0
|
68
|
-
|
69
|
-
while current
|
70
|
-
count += 1
|
71
|
-
current = current.next
|
72
|
-
|
73
|
-
count
|
74
|
-
|
75
|
-
|
76
|
-
# Convert the list into an array.
|
77
|
-
toArray: ->
|
78
|
-
result = []
|
79
|
-
current = this._head
|
80
|
-
|
81
|
-
while current
|
82
|
-
result.push current.data
|
83
|
-
current = current.next
|
84
|
-
|
85
|
-
result
|
86
|
-
|
87
|
-
|
88
|
-
# The string representation of the linked list.
|
89
|
-
toString: -> this.toArray().toString()
|
90
|
-
|
91
|
-
|
92
|
-
# Tests.
|
93
|
-
list = new LinkedList
|
94
|
-
|
95
|
-
list.add("Hi")
|
96
|
-
console.log list.size() is 1
|
97
|
-
console.log list.item(0) is "Hi"
|
98
|
-
console.log list.item(1) is null
|
99
|
-
|
100
|
-
list = new LinkedList
|
101
|
-
list.add("zero").add("one").add("two")
|
102
|
-
console.log list.size() is 3
|
103
|
-
console.log list.item(2) is "two"
|
104
|
-
console.log list.remove(1) is "one"
|
105
|
-
console.log list.item(0) is "zero"
|
106
|
-
console.log list.item(1) is "two"
|
107
|
-
console.log list.size() is 2
|
108
|
-
console.log list.item(-10) is null
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# Use the Luhn algorithm to validate a numeric identifier, such as credit card
|
2
|
-
# numbers, national insurance numbers, etc.
|
3
|
-
# See: http://en.wikipedia.org/wiki/Luhn_algorithm
|
4
|
-
|
5
|
-
is_valid_identifier = (identifier) ->
|
6
|
-
|
7
|
-
sum = 0
|
8
|
-
alt = false
|
9
|
-
|
10
|
-
for i in [identifier.length - 1..0] by -1
|
11
|
-
|
12
|
-
# Get the next digit.
|
13
|
-
num = parseInt identifier.charAt(i), 10
|
14
|
-
|
15
|
-
# If it's not a valid number, abort.
|
16
|
-
return false if isNaN(num)
|
17
|
-
|
18
|
-
# If it's an alternate number...
|
19
|
-
if alt
|
20
|
-
num *= 2
|
21
|
-
num = (num % 10) + 1 if num > 9
|
22
|
-
|
23
|
-
# Flip the alternate bit.
|
24
|
-
alt = !alt
|
25
|
-
|
26
|
-
# Add to the rest of the sum.
|
27
|
-
sum += num
|
28
|
-
|
29
|
-
# Determine if it's valid.
|
30
|
-
sum % 10 is 0
|
31
|
-
|
32
|
-
|
33
|
-
# Tests.
|
34
|
-
console.log is_valid_identifier("49927398716") is true
|
35
|
-
console.log is_valid_identifier("4408041234567893") is true
|
36
|
-
console.log is_valid_identifier("4408041234567890") is false
|