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,32 +0,0 @@
|
|
1
|
-
// ==========================================================================
|
2
|
-
// Project: Web File
|
3
|
-
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
-
// License: Licened under MIT license (see __preamble__.js)
|
5
|
-
// ==========================================================================
|
6
|
-
|
7
|
-
var messages = [
|
8
|
-
null,
|
9
|
-
'File Not Found',
|
10
|
-
'Security Error',
|
11
|
-
'Operation aborted',
|
12
|
-
'File not readable',
|
13
|
-
'Encoding Error'
|
14
|
-
];
|
15
|
-
|
16
|
-
var FileError = function(code) {
|
17
|
-
this.code = code;
|
18
|
-
this.message = messages[code];
|
19
|
-
};
|
20
|
-
|
21
|
-
FileError.prototype = new Error();
|
22
|
-
FileError.prototype.constructor = FileError;
|
23
|
-
FileError.prototype.toString = function() { return this.message; };
|
24
|
-
|
25
|
-
FileError.NOT_FOUND_ERR = 1;
|
26
|
-
FileError.SECURITY_ERR = 2;
|
27
|
-
FileError.ABORT_ERR = 3;
|
28
|
-
FileError.NOT_READABLE_ERR = 4;
|
29
|
-
FileError.ENCODING_ERR = 5;
|
30
|
-
|
31
|
-
exports.FileError = FileError;
|
32
|
-
exports.FileException = FileError;
|
@@ -1,10 +0,0 @@
|
|
1
|
-
// ==========================================================================
|
2
|
-
// Project: Web Typed Array
|
3
|
-
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
-
// License: Licened under MIT license (see __preamble__.js)
|
5
|
-
// ==========================================================================
|
6
|
-
|
7
|
-
var nat = require('./ruby/file_reader');
|
8
|
-
|
9
|
-
exports.FileReader = nat.FileReader;
|
10
|
-
exports.FileReaderSync = nat.FileReaderSync;
|
@@ -1,234 +0,0 @@
|
|
1
|
-
// ==========================================================================
|
2
|
-
// Project: Web Typed Array
|
3
|
-
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
-
// License: Licened under MIT license (see __preamble__.js)
|
5
|
-
// ==========================================================================
|
6
|
-
|
7
|
-
/**
|
8
|
-
On platforms that support it, the FileSystem API provides a way for you
|
9
|
-
to access and navigate files on disk. FileSystem instances may be provided
|
10
|
-
by the system that limits the visible scope of files.
|
11
|
-
|
12
|
-
To get the default file system look for the global fileSystem object.
|
13
|
-
*/
|
14
|
-
|
15
|
-
var nat = require('./ruby/file_system');
|
16
|
-
var FileSystem;
|
17
|
-
|
18
|
-
// ..........................................................
|
19
|
-
// STAT Object
|
20
|
-
//
|
21
|
-
var Stat = function(nstat) {
|
22
|
-
this._nstat = nstat;
|
23
|
-
};
|
24
|
-
|
25
|
-
Stat.prototype = {
|
26
|
-
constructor: Stat,
|
27
|
-
|
28
|
-
get size() { return this._nstat.size; },
|
29
|
-
get blockSize() { return this._nstat.blksize; },
|
30
|
-
get blocks() { return this._nstat.blocks; },
|
31
|
-
get mode() { return this._nstat.mode; },
|
32
|
-
|
33
|
-
get uid() { return this._nstat.uid; },
|
34
|
-
get gid() { return this._nstat.uid; },
|
35
|
-
|
36
|
-
get device() { return this._nstat.dev; },
|
37
|
-
get inode() { return this._nstat.ino; },
|
38
|
-
|
39
|
-
get mtime() { return this._nstat.mtime; },
|
40
|
-
get ctime() { return this._nstat.ctime; },
|
41
|
-
get atime() { return this._nstat.atime; },
|
42
|
-
|
43
|
-
get isDirectory() { return this._nstat['directory?']; },
|
44
|
-
get isFile() { return this._nstat['file?']; },
|
45
|
-
get isSymlink() { return this._nstat['symlink?']; },
|
46
|
-
get isReadable() { return this._nstat['readable?']; },
|
47
|
-
get isWritable() { return this._nstat['writable?']; },
|
48
|
-
get isExecutable() { return this._nstat['executable?']; },
|
49
|
-
get isSticky() { return this._nstat['sticky?']; }
|
50
|
-
|
51
|
-
};
|
52
|
-
|
53
|
-
// ..........................................................
|
54
|
-
// FileSystem
|
55
|
-
//
|
56
|
-
|
57
|
-
function readOnlyError() {
|
58
|
-
throw new Error("FileSystem is read only");
|
59
|
-
}
|
60
|
-
|
61
|
-
// We want this to be secure. hence the reason we do it this way.
|
62
|
-
FileSystem = function() {
|
63
|
-
throw "Invalid constructor";
|
64
|
-
};
|
65
|
-
|
66
|
-
function createFileSystem(root, cwd, readOnly) {
|
67
|
-
|
68
|
-
readOnly = !!readOnly;
|
69
|
-
|
70
|
-
// create one off instance
|
71
|
-
fs = function() {};
|
72
|
-
fs.prototype = FileSystem.prototype;
|
73
|
-
fs = new fs();
|
74
|
-
|
75
|
-
fs.SEPARATOR = nat.SEPARATOR;
|
76
|
-
|
77
|
-
|
78
|
-
// Takes an absolute path, removes the root prefix
|
79
|
-
function denorm(path) {
|
80
|
-
return root==='/' ? path : path.slice(root.length);
|
81
|
-
}
|
82
|
-
|
83
|
-
// make prefixed
|
84
|
-
function norm(path) {
|
85
|
-
if(path[0] === fs.SEPARATOR) {
|
86
|
-
return nat.expand_path(nat.join_path(root, path));
|
87
|
-
} else {
|
88
|
-
return nat.expand_path(path, cwd);
|
89
|
-
}
|
90
|
-
}
|
91
|
-
|
92
|
-
fs.__defineGetter__('cwd', function() { return denorm(cwd); });
|
93
|
-
fs.__defineSetter__('cwd', function(v) {
|
94
|
-
cwd = norm(v);
|
95
|
-
return denorm(cwd);
|
96
|
-
});
|
97
|
-
|
98
|
-
// fs.cwd = function(path) {
|
99
|
-
// if (path !== undefined) cwd = norm(path);
|
100
|
-
// return denorm(cwd);
|
101
|
-
// };
|
102
|
-
|
103
|
-
fs.stat = function(path) {
|
104
|
-
return new Stat(nat.stat(norm(path)));
|
105
|
-
};
|
106
|
-
|
107
|
-
fs.open = function(path, opts) {
|
108
|
-
if (!opts) opts = {};
|
109
|
-
if (!('readable' in opts)) opts.readable = true;
|
110
|
-
if (!('writable' in opts) || readOnly) opts.writable = !readOnly;
|
111
|
-
if (!('executable' in opts)) opts.executable = false;
|
112
|
-
if (!('append' in opts)) opts.append = false;
|
113
|
-
if (!('modify' in opts) || opts.append) opts.modify = false;
|
114
|
-
return nat.open(norm(path), opts);
|
115
|
-
};
|
116
|
-
|
117
|
-
fs.exists = function(path) {
|
118
|
-
return nat.exists(norm(path));
|
119
|
-
};
|
120
|
-
|
121
|
-
fs.chroot = function(path, readOnly) {
|
122
|
-
path = path===undefined ? cwd : norm(path);
|
123
|
-
return createFileSystem(path, path, readOnly);
|
124
|
-
};
|
125
|
-
|
126
|
-
|
127
|
-
// ..........................................................
|
128
|
-
// PATH OPS
|
129
|
-
//
|
130
|
-
|
131
|
-
fs.join = function() {
|
132
|
-
return nat.join_path(Array.prototype.slice.call(arguments));
|
133
|
-
};
|
134
|
-
|
135
|
-
fs.split = function(path) {
|
136
|
-
return nat.split_path(path);
|
137
|
-
};
|
138
|
-
|
139
|
-
fs.dirname = function(path) {
|
140
|
-
return nat.dirname(path);
|
141
|
-
};
|
142
|
-
|
143
|
-
fs.basename = function(path, ext) {
|
144
|
-
return nat.basename(path, ext);
|
145
|
-
};
|
146
|
-
|
147
|
-
fs.ext = function(path) {
|
148
|
-
return nat.extname(path);
|
149
|
-
};
|
150
|
-
|
151
|
-
fs.expand = function(path, base) {
|
152
|
-
return nat.expand_path(path, base);
|
153
|
-
};
|
154
|
-
|
155
|
-
fs.glob = function(path) {
|
156
|
-
return nat.glob(norm(path)).map(function(x) { return denorm(x); });
|
157
|
-
};
|
158
|
-
|
159
|
-
// ..........................................................
|
160
|
-
// WRITABLE OPS
|
161
|
-
//
|
162
|
-
|
163
|
-
fs.mkdir = function(path, mode) {
|
164
|
-
if (readOnly) readOnlyError();
|
165
|
-
nat.mkdir(norm(path), mode);
|
166
|
-
return this;
|
167
|
-
};
|
168
|
-
|
169
|
-
fs.mkdirs = function(path, mode) {
|
170
|
-
if (readOnly) readOnlyError();
|
171
|
-
nat.mkdir_p(norm(path), mode);
|
172
|
-
return this;
|
173
|
-
};
|
174
|
-
fs.mkdir_p = fs.mkdirs;
|
175
|
-
|
176
|
-
fs.move = function(src, dst) {
|
177
|
-
if (readOnly) readOnlyError();
|
178
|
-
if (src && src.map) src = src.map(function(s) { return norm(s); });
|
179
|
-
else src = norm(src);
|
180
|
-
|
181
|
-
nat.mv(src, norm(dst));
|
182
|
-
return this;
|
183
|
-
};
|
184
|
-
fs.mv = fs.move;
|
185
|
-
|
186
|
-
fs.copy = function(src, dst, opts) {
|
187
|
-
if (readOnly) readOnlyError();
|
188
|
-
|
189
|
-
if (src && src.map) src = src.map(function(s) { return norm(s); });
|
190
|
-
else src = norm(src);
|
191
|
-
|
192
|
-
if (!opts) opts = {};
|
193
|
-
if (opts.recursive) nat.cp_r(src, norm(dst));
|
194
|
-
else nat.cp(src, norm(dst));
|
195
|
-
|
196
|
-
return this;
|
197
|
-
};
|
198
|
-
fs.cp = fs.copy;
|
199
|
-
|
200
|
-
fs.remove = function(src, opts) {
|
201
|
-
if (readOnly) readOnlyError();
|
202
|
-
|
203
|
-
if (src && src.map) src = src.map(function(s) { return norm(s); });
|
204
|
-
else src = norm(src);
|
205
|
-
|
206
|
-
if (!opts) opts = {};
|
207
|
-
if (opts.force) nat.rm_rf(src);
|
208
|
-
else if (opts.recursive) nat.rm_r(src);
|
209
|
-
else nat.rm(src)
|
210
|
-
|
211
|
-
return this;
|
212
|
-
};
|
213
|
-
fs.rm = fs.remove;
|
214
|
-
|
215
|
-
fs.link = function(src, dst, opts) {
|
216
|
-
if (readOnly) readOnlyError();
|
217
|
-
|
218
|
-
if (src && src.map) src = src.map(function(s) { return norm(s); });
|
219
|
-
else src = norm(src);
|
220
|
-
|
221
|
-
if (!opts) opts = {};
|
222
|
-
if (opts.symbolic) nat.ln_s(src, norm(dst));
|
223
|
-
else nat.ln(src, norm(dst));
|
224
|
-
|
225
|
-
return this;
|
226
|
-
};
|
227
|
-
fs.ln = fs.link;
|
228
|
-
|
229
|
-
return fs;
|
230
|
-
|
231
|
-
}
|
232
|
-
|
233
|
-
exports.FileSystem = FileSystem;
|
234
|
-
exports.fileSystem = createFileSystem('/', nat.cwd, false);
|
@@ -1,10 +0,0 @@
|
|
1
|
-
// ==========================================================================
|
2
|
-
// Project: File API
|
3
|
-
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
-
// License: Licened under MIT license (see __preamble__.js)
|
5
|
-
// ==========================================================================
|
6
|
-
|
7
|
-
var nat = require('./ruby/file_writer');
|
8
|
-
|
9
|
-
exports.FileWriter = nat.FileWriter;
|
10
|
-
exports.FileWriterSync = nat.FileWriterSync;
|
@@ -1,9 +0,0 @@
|
|
1
|
-
// ==========================================================================
|
2
|
-
// Project: Web Typed Array
|
3
|
-
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
-
// License: Licened under MIT license (see __preamble__.js)
|
5
|
-
// ==========================================================================
|
6
|
-
|
7
|
-
var nat = require('./ruby/file');
|
8
|
-
exports.Blob = nat.Blob;
|
9
|
-
exports.File = nat.File;
|
@@ -1,34 +0,0 @@
|
|
1
|
-
// ==========================================================================
|
2
|
-
// Project: Web Typed Array
|
3
|
-
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
-
// License: Licened under MIT license (see __preamble__.js)
|
5
|
-
// ==========================================================================
|
6
|
-
/*globals ENV File Blob FileReader FileReaderSync FileSystem fileSystem FileWriter FileWriterSync */
|
7
|
-
|
8
|
-
if (!require('./platform').isSupported) {
|
9
|
-
throw new Error('File API is not supported on this platform');
|
10
|
-
}
|
11
|
-
|
12
|
-
var exp;
|
13
|
-
|
14
|
-
// browser either supports it or doesn't.
|
15
|
-
if (ENV.SPADE_PLATFORM.ENGINE !== 'browser') {
|
16
|
-
exp = require('./file');
|
17
|
-
Blob = exp.Blob;
|
18
|
-
File = exp.File;
|
19
|
-
|
20
|
-
exp = require('./file-reader');
|
21
|
-
FileReader = exp.FileReader;
|
22
|
-
FileReaderSync = exp.FileReaderSync;
|
23
|
-
|
24
|
-
exp = require('./file-writer');
|
25
|
-
FileWriter = exp.FileWriter;
|
26
|
-
FileWriterSync = exp.FileWriterSync;
|
27
|
-
|
28
|
-
exp = require('./file-system');
|
29
|
-
FileSystem = exp.FileSystem;
|
30
|
-
fileSystem = exp.fileSystem;
|
31
|
-
}
|
32
|
-
|
33
|
-
|
34
|
-
|
@@ -1,25 +0,0 @@
|
|
1
|
-
// ==========================================================================
|
2
|
-
// Project: Web Typed Array
|
3
|
-
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
-
// License: Licened under MIT license (see __preamble__.js)
|
5
|
-
// ==========================================================================
|
6
|
-
/*globals ENV File */
|
7
|
-
|
8
|
-
var supported = false, fs = false;
|
9
|
-
|
10
|
-
switch(ENV.SPADE_PLATFORM.ENGINE) {
|
11
|
-
case 'browser':
|
12
|
-
supported = 'undefined' !== typeof File;
|
13
|
-
break;
|
14
|
-
|
15
|
-
case 'spade':
|
16
|
-
supported = true;
|
17
|
-
fs = true;
|
18
|
-
break;
|
19
|
-
}
|
20
|
-
|
21
|
-
exports.isSupported = supported;
|
22
|
-
exports.hasFileSystem = fs; // if true then you can nav filesystem
|
23
|
-
|
24
|
-
|
25
|
-
|
@@ -1,252 +0,0 @@
|
|
1
|
-
# ==========================================================================
|
2
|
-
# Project: File
|
3
|
-
# Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
-
# License: Licened under MIT license (see LICENSE)
|
5
|
-
# ==========================================================================
|
6
|
-
|
7
|
-
require 'fileutils'
|
8
|
-
|
9
|
-
module WebFile
|
10
|
-
class FileExports < Spade::Exports
|
11
|
-
|
12
|
-
class Blob
|
13
|
-
|
14
|
-
def size
|
15
|
-
0
|
16
|
-
end
|
17
|
-
|
18
|
-
attr_reader :type
|
19
|
-
|
20
|
-
def readable
|
21
|
-
false
|
22
|
-
end
|
23
|
-
|
24
|
-
def writable
|
25
|
-
false
|
26
|
-
end
|
27
|
-
|
28
|
-
def executable
|
29
|
-
false
|
30
|
-
end
|
31
|
-
|
32
|
-
# If true, then writing to the file will not clear the contents.
|
33
|
-
def appends
|
34
|
-
false
|
35
|
-
end
|
36
|
-
|
37
|
-
def initialize
|
38
|
-
throw self.class.context['Error'].new("Illegal constructor")
|
39
|
-
end
|
40
|
-
|
41
|
-
def slice(offset, length, contentType=nil)
|
42
|
-
offset = size if offset > size
|
43
|
-
length = self.size-offset if offset+length > size
|
44
|
-
offset += @offset unless @offset.nil?
|
45
|
-
self.dup.setup_slice(offset, length, contentType || @type)
|
46
|
-
end
|
47
|
-
|
48
|
-
protected
|
49
|
-
|
50
|
-
def dup
|
51
|
-
self.class.new
|
52
|
-
end
|
53
|
-
|
54
|
-
def setup_slice(offset, length, contentType=nil)
|
55
|
-
@offset = offset
|
56
|
-
@length = length
|
57
|
-
@type = contentType unless contentType.nil?
|
58
|
-
self
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
class File < Blob
|
64
|
-
|
65
|
-
attr_reader :name, :lastModifiedDate
|
66
|
-
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
|
71
|
-
class RealFile < FileExports::File
|
72
|
-
|
73
|
-
def initialize(path, ctx, perms=nil, offset=nil, length=nil, type=nil)
|
74
|
-
@path = path
|
75
|
-
@ctx = ctx
|
76
|
-
@offset = offset.nil? ? 0 : offset
|
77
|
-
@length = length
|
78
|
-
@type = type
|
79
|
-
|
80
|
-
if perms.instance_of? V8::Object
|
81
|
-
@perms = {}
|
82
|
-
perms.each { |key, value| @perms[key.to_sym] = value }
|
83
|
-
else
|
84
|
-
@perms = perms || {}
|
85
|
-
end
|
86
|
-
|
87
|
-
@perms_checked = false
|
88
|
-
end
|
89
|
-
|
90
|
-
#############################################'
|
91
|
-
## FILE PROPERTIES
|
92
|
-
##
|
93
|
-
|
94
|
-
def name
|
95
|
-
@name ||= ::File.basename(@path)
|
96
|
-
end
|
97
|
-
|
98
|
-
def lastModifiedDate
|
99
|
-
@ctx['Date'].new(::File.mtime(@path))
|
100
|
-
end
|
101
|
-
|
102
|
-
def size
|
103
|
-
total_size = ::File.size(@path) - @offset
|
104
|
-
@length.nil? || total_size<@length ? total_size : @length
|
105
|
-
end
|
106
|
-
|
107
|
-
def type
|
108
|
-
require 'rack/mime'
|
109
|
-
@type ||= Rack::Mime.mime_type(::File.extname(@path))
|
110
|
-
end
|
111
|
-
|
112
|
-
|
113
|
-
#############################################'
|
114
|
-
## PERMISSIONS
|
115
|
-
##
|
116
|
-
|
117
|
-
def readable
|
118
|
-
check_perms if !@perms_checked
|
119
|
-
@perms[:readable] && exists
|
120
|
-
end
|
121
|
-
|
122
|
-
def writable
|
123
|
-
check_perms if !@perms_checked
|
124
|
-
@perms[:writable]
|
125
|
-
end
|
126
|
-
|
127
|
-
def appends
|
128
|
-
check_perms if !@perms_checked
|
129
|
-
@perms[:append]
|
130
|
-
end
|
131
|
-
|
132
|
-
def modifies
|
133
|
-
check_perms if !@perms_checked
|
134
|
-
@perms[:modify]
|
135
|
-
end
|
136
|
-
|
137
|
-
def executable
|
138
|
-
check_perms if !@perms_checked
|
139
|
-
@perms[:executable]
|
140
|
-
end
|
141
|
-
|
142
|
-
def exists
|
143
|
-
File.exists? @path
|
144
|
-
end
|
145
|
-
|
146
|
-
|
147
|
-
protected
|
148
|
-
|
149
|
-
def dup
|
150
|
-
self.class.new(@path, @ctx, @perms, @offset, @length, @type)
|
151
|
-
end
|
152
|
-
|
153
|
-
# restrict file permissions to actual permissions on disk\
|
154
|
-
def check_perms
|
155
|
-
@perms_checked = true
|
156
|
-
@perms = {} if @perms.nil?
|
157
|
-
|
158
|
-
if File.directory?(@path)
|
159
|
-
@perms[:readable] = @perms[:writable] = @perms[:executable] = false
|
160
|
-
else
|
161
|
-
|
162
|
-
path = @path
|
163
|
-
path = File.dirname(path) while(path!='/' && !File.exists?(path))
|
164
|
-
|
165
|
-
st = File.stat path
|
166
|
-
@perms[:readable] &&= st.readable?
|
167
|
-
@perms[:writable] &&= st.writable?
|
168
|
-
@perms[:executable] &&= (path == @path) ? st.executable? : false
|
169
|
-
end
|
170
|
-
|
171
|
-
@perms[:append] &&= @perms[:writable]
|
172
|
-
@perms[:modify] &&= @perms[:writable] && !@perms[:append]
|
173
|
-
|
174
|
-
# can only append if offset puts us at the start. i.e. slicing
|
175
|
-
# disables append
|
176
|
-
if @perms[:append] && @offset>0
|
177
|
-
@perms[:append] = false
|
178
|
-
@perms[:modify] = true
|
179
|
-
end
|
180
|
-
|
181
|
-
end
|
182
|
-
|
183
|
-
def read_sync(kind, encoding=nil)
|
184
|
-
|
185
|
-
throw "File #{name} is not readable" unless readable
|
186
|
-
|
187
|
-
case kind
|
188
|
-
when :buffer
|
189
|
-
@ctx.require 'web-typed-array'
|
190
|
-
|
191
|
-
buf = WebTypedArray::ArrayBufferExports::ArrayBuffer.new(size)
|
192
|
-
str = IO.read(@path, size, @offset||0)
|
193
|
-
buf.instance_eval do
|
194
|
-
@buf = str
|
195
|
-
end
|
196
|
-
|
197
|
-
buf
|
198
|
-
|
199
|
-
when :text
|
200
|
-
if encoding && encoding != 'utf8' && encoding != 'ascii'
|
201
|
-
throw "only utf8 and ascii encoding currently supported"
|
202
|
-
end
|
203
|
-
IO.read(@path, size, @offset||0)
|
204
|
-
# TODO: handle encoding
|
205
|
-
|
206
|
-
else
|
207
|
-
throw "do not (yet) know how to read #{kind}"
|
208
|
-
end
|
209
|
-
end
|
210
|
-
|
211
|
-
def write_sync(kind, data, encoding=nil)
|
212
|
-
|
213
|
-
throw "File #{name} is not writable" unless writable
|
214
|
-
|
215
|
-
case kind
|
216
|
-
|
217
|
-
when :buffer
|
218
|
-
str = data.buf
|
219
|
-
FileUtils.mkdir_p File.dirname(@path)
|
220
|
-
File.open(@path, appends || modifies ? 'a' : 'w') do |fd|
|
221
|
-
|
222
|
-
# write in filler if needed
|
223
|
-
fd.seek @offset||0 unless appends
|
224
|
-
|
225
|
-
# constrain only if this file has been sliced.
|
226
|
-
str = str[0...size] if !@length.nil? && size < str.size
|
227
|
-
fd.write(str)
|
228
|
-
end
|
229
|
-
|
230
|
-
when :text
|
231
|
-
FileUtils.mkdir_p File.dirname(@path)
|
232
|
-
File.open(@path, appends || modifies ? 'a' : 'w') do |fd|
|
233
|
-
fd.seek @offset unless appends
|
234
|
-
|
235
|
-
# constrain only if this file has been sliced.
|
236
|
-
data = data[0...size] if !@length.nil? && size < data.size
|
237
|
-
fd.write(data)
|
238
|
-
end
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
else
|
243
|
-
throw "do not (yet) know how to write #{kind}"
|
244
|
-
end
|
245
|
-
end
|
246
|
-
|
247
|
-
|
248
|
-
end
|
249
|
-
|
250
|
-
end
|
251
|
-
|
252
|
-
Spade.exports WebFile::FileExports
|