traceur-rb 0.0.1
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.
- checksums.yaml +15 -0
- data/.gitignore +22 -0
- data/.rspec +1 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/Guardfile +8 -0
- data/LICENSE.txt +22 -0
- data/README.md +87 -0
- data/Rakefile +2 -0
- data/lib/js/compile.js +31 -0
- data/lib/traceur-rb.rb +1 -0
- data/lib/traceur.rb +43 -0
- data/lib/traceur/compilation_options.rb +65 -0
- data/lib/traceur/compiler.rb +33 -0
- data/lib/traceur/configuration.rb +47 -0
- data/lib/traceur/node.rb +26 -0
- data/lib/traceur/node/command_result.rb +28 -0
- data/lib/traceur/node/runner.rb +40 -0
- data/lib/traceur/version.rb +3 -0
- data/spec/examples/classes.js +12 -0
- data/spec/integration/examples_spec.rb +28 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/traceur/compilation_options_spec.rb +31 -0
- data/spec/traceur/configuration_spec.rb +54 -0
- data/spec/traceur/node_spec.rb +15 -0
- data/traceur-rb.gemspec +25 -0
- data/vendor/node_modules/.bin/traceur +3 -0
- data/vendor/node_modules/traceur/README.md +40 -0
- data/vendor/node_modules/traceur/bin/traceur-runtime.js +2101 -0
- data/vendor/node_modules/traceur/bin/traceur.js +23034 -0
- data/vendor/node_modules/traceur/node_modules/.bin/semver +125 -0
- data/vendor/node_modules/traceur/node_modules/commander/Readme.md +208 -0
- data/vendor/node_modules/traceur/node_modules/commander/index.js +852 -0
- data/vendor/node_modules/traceur/node_modules/commander/package.json +40 -0
- data/vendor/node_modules/traceur/node_modules/q-io/.npmignore +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/.travis.yml +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/CHANGES.md +122 -0
- data/vendor/node_modules/traceur/node_modules/q-io/LICENSE +19 -0
- data/vendor/node_modules/traceur/node_modules/q-io/README.md +928 -0
- data/vendor/node_modules/traceur/node_modules/q-io/buffer-stream.js +59 -0
- data/vendor/node_modules/traceur/node_modules/q-io/coverage-report.js +44 -0
- data/vendor/node_modules/traceur/node_modules/q-io/deprecate.js +51 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs-boot.js +307 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs-common.js +499 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs-mock.js +547 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs-root.js +105 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs.js +355 -0
- data/vendor/node_modules/traceur/node_modules/q-io/fs2http.js +65 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps.js +152 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/chain.js +24 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/content.js +93 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/cookie.js +154 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/decorators.js +178 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/fs.js +417 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/html.js +58 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/json.js +78 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/negotiate.js +120 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/proxy.js +27 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/redirect.js +209 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/route.js +125 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-apps/status.js +175 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http-cookie.js +75 -0
- data/vendor/node_modules/traceur/node_modules/q-io/http.js +378 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/.npmignore +11 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/.travis.yml +4 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/CHANGES.md +78 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/LICENSE.md +21 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/README.md +1285 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/collections.js +22 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/dict.js +142 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/fast-map.js +57 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/fast-set.js +183 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-collection.js +261 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-map.js +186 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-order.js +55 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-set.js +59 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/heap.js +236 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/iterator.js +371 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/list.js +435 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/array-changes.js +247 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/map-changes.js +147 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/property-changes.js +448 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/range-changes.js +139 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/lru-map.js +79 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/lru-set.js +142 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/map.js +60 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/multi-map.js +41 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/package.json +12 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/sync +7 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/sync.patch +48 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/weak-map.js +590 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/package.json +49 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/set.js +173 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-array.js +274 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-function.js +59 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-object.js +538 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-regexp.js +14 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim.js +6 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array-map.js +49 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array-set.js +51 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array.js +269 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-map.js +61 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-set.js +736 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/tree-log.js +40 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/weak-map.js +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/LICENSE +19 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/README.md +66 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/mime.js +114 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/package.json +35 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/test.js +84 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/types/mime.types +1588 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/types/node.types +77 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/CHANGES +15 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/LICENSE +19 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/README +96 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/lib/mimeparse.js +166 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/package.json +43 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/CONTRIBUTING.md +40 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/LICENSE +19 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/README.md +813 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/benchmark/compare-with-callbacks.js +71 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/benchmark/scenarios.js +36 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/package.json +93 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/q.js +1937 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/queue.js +35 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/.gitmodules +6 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/History.md +36 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/Makefile +7 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/Readme.md +38 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/benchmark.js +32 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/examples.js +39 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/index.js +2 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/lib/querystring.js +123 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/package.json +19 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/.gitmodules +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/.npmignore +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/History.md +128 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/Makefile +53 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/Readme.md +61 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/bin/expresso +856 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/api.html +1080 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/index.html +377 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/index.md +290 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/lib/bar.js +4 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/lib/foo.js +16 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/package.json +12 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/assert.test.js +91 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/async.test.js +12 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/bar.test.js +13 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/foo.test.js +14 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/http.test.js +146 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/.gitmodules +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/History.md +22 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/Makefile +6 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/Readme.md +248 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/examples/runner.js +53 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/index.js +2 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/lib/eql.js +91 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/lib/should.js +548 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/package.json +8 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/test/should.test.js +358 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/test/querystring.test.js +133 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/.npmignore +3 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/.travis.yml +4 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/LICENSE.md +20 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/README.md +33 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/package.json +37 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/test/url2-spec.js +125 -0
- data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/url2.js +151 -0
- data/vendor/node_modules/traceur/node_modules/q-io/package.json +51 -0
- data/vendor/node_modules/traceur/node_modules/q-io/reader.js +133 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/boot-directory-spec.js +47 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/contains-spec.js +11 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/fixtures/hello.txt +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/issues/1-spec.js +33 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/make-tree-spec.js +92 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/append-spec.js +41 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/copy-tree-spec.js +57 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/fixture/hello.txt +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/link-spec.js +70 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/make-tree-spec.js +109 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/merge-spec.js +67 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/move-spec.js +219 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/object-spec.js +20 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/range-spec.js +26 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/read-spec.js +40 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/remove-directory-spec.js +37 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/remove-tree-spec.js +39 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/root-spec.js +32 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/stat-spec.js +26 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/symbolic-link-spec.js +86 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/working-directory-spec.js +31 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/write-spec.js +73 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/range-spec.js +23 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/range-spec.txt +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/read-spec.js +22 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/relative-spec.js +25 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/reroot-spec.js +45 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/write-spec.js +38 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/cookie-spec.js +52 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/directory-list-spec.js +86 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/01234.txt +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/1234.txt +1 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/5678.txt +0 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/9012/3456.txt +0 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/hosts-spec.js +49 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/interpret-range-spec.js +47 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/partial-range-spec.js +186 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/proxy-spec.js +82 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/symbolic-link-spec.js +110 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http/agent-spec.js +96 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/http/basic-spec.js +96 -0
- data/vendor/node_modules/traceur/node_modules/q-io/spec/lib/jasmine-promise.js +42 -0
- data/vendor/node_modules/traceur/node_modules/q-io/writer.js +111 -0
- data/vendor/node_modules/traceur/node_modules/semver/.npmignore +1 -0
- data/vendor/node_modules/traceur/node_modules/semver/LICENSE +27 -0
- data/vendor/node_modules/traceur/node_modules/semver/Makefile +24 -0
- data/vendor/node_modules/traceur/node_modules/semver/README.md +158 -0
- data/vendor/node_modules/traceur/node_modules/semver/bin/semver +125 -0
- data/vendor/node_modules/traceur/node_modules/semver/foot.js +6 -0
- data/vendor/node_modules/traceur/node_modules/semver/head.js +2 -0
- data/vendor/node_modules/traceur/node_modules/semver/package.json +31 -0
- data/vendor/node_modules/traceur/node_modules/semver/semver.browser.js +1039 -0
- data/vendor/node_modules/traceur/node_modules/semver/semver.browser.js.gz +0 -0
- data/vendor/node_modules/traceur/node_modules/semver/semver.js +1043 -0
- data/vendor/node_modules/traceur/node_modules/semver/semver.min.js +1 -0
- data/vendor/node_modules/traceur/node_modules/semver/semver.min.js.gz +0 -0
- data/vendor/node_modules/traceur/node_modules/semver/test/amd.js +15 -0
- data/vendor/node_modules/traceur/node_modules/semver/test/gtr.js +173 -0
- data/vendor/node_modules/traceur/node_modules/semver/test/index.js +584 -0
- data/vendor/node_modules/traceur/node_modules/semver/test/ltr.js +174 -0
- data/vendor/node_modules/traceur/node_modules/semver/test/no-module.js +19 -0
- data/vendor/node_modules/traceur/package.json +64 -0
- data/vendor/node_modules/traceur/src/node/System.js +31 -0
- data/vendor/node_modules/traceur/src/node/api.js +124 -0
- data/vendor/node_modules/traceur/src/node/command.js +141 -0
- data/vendor/node_modules/traceur/src/node/compile-single-file.js +69 -0
- data/vendor/node_modules/traceur/src/node/compiler.js +116 -0
- data/vendor/node_modules/traceur/src/node/deferred.js +110 -0
- data/vendor/node_modules/traceur/src/node/file-util.js +73 -0
- data/vendor/node_modules/traceur/src/node/getopt.js +147 -0
- data/vendor/node_modules/traceur/src/node/inline-module.js +149 -0
- data/vendor/node_modules/traceur/src/node/interpreter.js +33 -0
- data/vendor/node_modules/traceur/src/node/nodeLoader.js +41 -0
- data/vendor/node_modules/traceur/src/node/require.js +85 -0
- data/vendor/node_modules/traceur/src/node/to-amd-compiler.js +33 -0
- data/vendor/node_modules/traceur/src/node/to-commonjs-compiler.js +33 -0
- data/vendor/node_modules/traceur/src/node/traceur.js +32 -0
- data/vendor/node_modules/traceur/traceur +3 -0
- metadata +359 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// Copyright 2013 Traceur Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
'use strict';
|
|
16
|
+
|
|
17
|
+
var fs = require('q-io/fs');
|
|
18
|
+
var path = require('path');
|
|
19
|
+
var writeTreeToFile = require('./compiler.js').writeTreeToFile;
|
|
20
|
+
|
|
21
|
+
var traceur = require('./traceur.js');
|
|
22
|
+
var ErrorReporter = traceur.util.ErrorReporter;
|
|
23
|
+
var AttachModuleNameTransformer =
|
|
24
|
+
traceur.codegeneration.module.AttachModuleNameTransformer;
|
|
25
|
+
var FromOptionsTransformer = traceur.codegeneration.FromOptionsTransformer;
|
|
26
|
+
var Parser = traceur.syntax.Parser;
|
|
27
|
+
var SourceFile = traceur.syntax.SourceFile;
|
|
28
|
+
|
|
29
|
+
function compileSingleFile(inputFilePath, outputFilePath, anonymousModules) {
|
|
30
|
+
return fs.read(inputFilePath).then(function(contents) {
|
|
31
|
+
var reporter = new ErrorReporter();
|
|
32
|
+
var sourceFile = new SourceFile(inputFilePath, contents);
|
|
33
|
+
var parser = new Parser(sourceFile, reporter);
|
|
34
|
+
var tree = parser.parseModule();
|
|
35
|
+
var moduleName, transformer;
|
|
36
|
+
if (!anonymousModules) {
|
|
37
|
+
moduleName = inputFilePath.replace(/\.js$/, '').replace(/\\/g,'/');
|
|
38
|
+
// Module naming uses ./ to signal relative names.
|
|
39
|
+
if (moduleName[0] !== '/')
|
|
40
|
+
moduleName = './' + moduleName;
|
|
41
|
+
transformer = new AttachModuleNameTransformer(moduleName);
|
|
42
|
+
tree = transformer.transformAny(tree);
|
|
43
|
+
}
|
|
44
|
+
transformer = new FromOptionsTransformer(reporter);
|
|
45
|
+
var transformed = transformer.transform(tree);
|
|
46
|
+
|
|
47
|
+
if (!reporter.hadError()) {
|
|
48
|
+
writeTreeToFile(transformed, outputFilePath);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function onlyJsFiles(path, stat) {
|
|
54
|
+
return stat.isFile() && /\.js$/.test(path) || false;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function compileAllJsFilesInDir(inputDir, outputDir, anonymousModules) {
|
|
58
|
+
inputDir = path.normalize(inputDir);
|
|
59
|
+
outputDir = path.normalize(outputDir);
|
|
60
|
+
fs.listTree(inputDir, onlyJsFiles).then(function(files) {
|
|
61
|
+
files.forEach(function(inputFilePath) {
|
|
62
|
+
var outputFilePath = inputFilePath.replace(inputDir, outputDir);
|
|
63
|
+
compileSingleFile(inputFilePath, outputFilePath, anonymousModules).done();
|
|
64
|
+
});
|
|
65
|
+
}).done();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
compileSingleFile.compileAllJsFilesInDir = compileAllJsFilesInDir;
|
|
69
|
+
module.exports = compileSingleFile;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// Copyright 2013 Traceur Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
'use strict';
|
|
16
|
+
|
|
17
|
+
var fs = require('fs');
|
|
18
|
+
var path = require('path');
|
|
19
|
+
|
|
20
|
+
var traceur = require('./traceur.js');
|
|
21
|
+
|
|
22
|
+
var inlineAndCompile = require('./inline-module.js').inlineAndCompile;
|
|
23
|
+
var util = require('./file-util.js');
|
|
24
|
+
var writeFile = util.writeFile;
|
|
25
|
+
var mkdirRecursive = util.mkdirRecursive;
|
|
26
|
+
var normalizePath = util.normalizePath;
|
|
27
|
+
|
|
28
|
+
var ErrorReporter = traceur.util.ErrorReporter;
|
|
29
|
+
var TreeWriter = traceur.outputgeneration.TreeWriter;
|
|
30
|
+
var SourceMapGenerator = traceur.outputgeneration.SourceMapGenerator;
|
|
31
|
+
|
|
32
|
+
function getSourceMapFileName(name) {
|
|
33
|
+
return name.replace(/\.js$/, '.map');
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function writeTreeToFile(tree, filename, useSourceMaps, opt_sourceRoot) {
|
|
37
|
+
var options;
|
|
38
|
+
if (useSourceMaps) {
|
|
39
|
+
var sourceMapFilePath = getSourceMapFileName(filename);
|
|
40
|
+
var config = {
|
|
41
|
+
file: path.basename(filename),
|
|
42
|
+
sourceRoot: opt_sourceRoot
|
|
43
|
+
};
|
|
44
|
+
var sourceMapGenerator = new SourceMapGenerator(config);
|
|
45
|
+
options = {sourceMapGenerator: sourceMapGenerator};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
var compiledCode = TreeWriter.write(tree, options);
|
|
49
|
+
if (useSourceMaps) {
|
|
50
|
+
compiledCode += '\n//# sourceMappingURL=' +
|
|
51
|
+
path.basename(sourceMapFilePath) + '\n';
|
|
52
|
+
}
|
|
53
|
+
writeFile(filename, compiledCode);
|
|
54
|
+
if (useSourceMaps)
|
|
55
|
+
writeFile(sourceMapFilePath, options.sourceMap);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function compileToSingleFile(outputFile, includes, useSourceMaps) {
|
|
59
|
+
var reporter = new ErrorReporter();
|
|
60
|
+
var resolvedOutputFile = path.resolve(outputFile);
|
|
61
|
+
var outputDir = path.dirname(resolvedOutputFile);
|
|
62
|
+
|
|
63
|
+
// Resolve includes before changing directory.
|
|
64
|
+
var resolvedIncludes = includes.map(function(include) {
|
|
65
|
+
include.name = path.resolve(include.name);
|
|
66
|
+
return include;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
mkdirRecursive(outputDir);
|
|
70
|
+
process.chdir(outputDir);
|
|
71
|
+
|
|
72
|
+
// Make includes relative to output dir so that sourcemap paths are correct.
|
|
73
|
+
resolvedIncludes = resolvedIncludes.map(function(include) {
|
|
74
|
+
include.name = normalizePath(path.relative(outputDir, include.name));
|
|
75
|
+
return include;
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
inlineAndCompile(resolvedIncludes, traceur.options, reporter, function(tree) {
|
|
79
|
+
writeTreeToFile(tree, resolvedOutputFile, useSourceMaps);
|
|
80
|
+
process.exit(0);
|
|
81
|
+
}, function(err) {
|
|
82
|
+
console.error(err);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function compileToDirectory(outputDir, includes, useSourceMaps) {
|
|
88
|
+
var reporter = new ErrorReporter();
|
|
89
|
+
var outputDir = path.resolve(outputDir);
|
|
90
|
+
|
|
91
|
+
var current = 0;
|
|
92
|
+
|
|
93
|
+
function next() {
|
|
94
|
+
if (current === includes.length)
|
|
95
|
+
process.exit(0);
|
|
96
|
+
|
|
97
|
+
inlineAndCompile(includes.slice(current, current + 1), traceur.options,
|
|
98
|
+
reporter,
|
|
99
|
+
function(tree) {
|
|
100
|
+
var outputFile = path.join(outputDir, includes[current].name);
|
|
101
|
+
var sourceRoot = path.relative(path.dirname(outputFile), '.');
|
|
102
|
+
writeTreeToFile(tree, outputFile, useSourceMaps, sourceRoot);
|
|
103
|
+
current++;
|
|
104
|
+
next();
|
|
105
|
+
},
|
|
106
|
+
function(err) {
|
|
107
|
+
process.exit(1);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
next();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
exports.compileToSingleFile = compileToSingleFile;
|
|
115
|
+
exports.compileToDirectory = compileToDirectory;
|
|
116
|
+
exports.writeTreeToFile = writeTreeToFile;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Copyright 2013 Traceur Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
'use strict';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Wrap a single async function to make the callback optional and hook it to
|
|
19
|
+
* trigger reject/resolve of the Promise, which it returns (this ignores the
|
|
20
|
+
* async function's return value). This enables the use of await with the
|
|
21
|
+
* wrapped function.
|
|
22
|
+
*
|
|
23
|
+
* @param {Function} fn Function to wrap.
|
|
24
|
+
* @param {boolean} firstArg True if the async callback is the first argument.
|
|
25
|
+
* @return {Function}
|
|
26
|
+
*/
|
|
27
|
+
function wrapFunction(fn, firstArg) {
|
|
28
|
+
return function() {
|
|
29
|
+
var resolve, reject;
|
|
30
|
+
var promise = new Promise(function(res, rej) {
|
|
31
|
+
resolve = res;
|
|
32
|
+
reject = rej;
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
var args = [].slice.call(arguments);
|
|
36
|
+
var originalCallback = args[firstArg ? 0 : args.length - 1];
|
|
37
|
+
|
|
38
|
+
function callback(err, value) {
|
|
39
|
+
if (originalCallback)
|
|
40
|
+
originalCallback.apply(this, arguments);
|
|
41
|
+
|
|
42
|
+
if (err)
|
|
43
|
+
reject(err);
|
|
44
|
+
else
|
|
45
|
+
resolve(value);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (typeof originalCallback !== 'function') {
|
|
49
|
+
// Callback wasn't provided to the async function, add the custom one.
|
|
50
|
+
originalCallback = null;
|
|
51
|
+
if (firstArg)
|
|
52
|
+
args.unshift(callback);
|
|
53
|
+
else
|
|
54
|
+
args.push(callback);
|
|
55
|
+
} else {
|
|
56
|
+
// Callback was provided to the async function, replace it.
|
|
57
|
+
args[firstArg ? 0 : args.length - 1] = callback;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
fn.apply(this, args);
|
|
61
|
+
|
|
62
|
+
return promise;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Wrap async functions in a module to enable the use of await.
|
|
68
|
+
* If no function name array is provided, every function with a fnSync
|
|
69
|
+
* variant will be wrapped.
|
|
70
|
+
*
|
|
71
|
+
* @param {string|Object} module The exports of the module or a string that
|
|
72
|
+
* will be passed to require to get the module.
|
|
73
|
+
* @param {Array.<string>} functions Function names to wrap.
|
|
74
|
+
* @return {object} The module.
|
|
75
|
+
*/
|
|
76
|
+
function wrapModule(module, functions) {
|
|
77
|
+
if (typeof module === 'string')
|
|
78
|
+
module = require(module);
|
|
79
|
+
|
|
80
|
+
if (!functions) {
|
|
81
|
+
for (var k in module) {
|
|
82
|
+
// HACK: wrap all functions with a fnSync variant.
|
|
83
|
+
if (typeof module[k] === 'function' &&
|
|
84
|
+
typeof module[k + 'Sync'] === 'function')
|
|
85
|
+
module[k] = wrapFunction(module[k]);
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
for (var i = 0, k; i < functions.length; i++) {
|
|
89
|
+
var k = functions[i];
|
|
90
|
+
module[k] = wrapFunction(module[k]);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return module;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Wrap async functions in Node.js to enable the use of await.
|
|
99
|
+
*
|
|
100
|
+
* @return {void}
|
|
101
|
+
*/
|
|
102
|
+
function wrap() {
|
|
103
|
+
// TODO: find and wrap everything that needs to be wrapped.
|
|
104
|
+
wrapModule('fs');
|
|
105
|
+
process.nextTick = wrapFunction(process.nextTick, true);
|
|
106
|
+
// FIXME: this would ignore the return value, making it impossible to cancel
|
|
107
|
+
// the timeout without implementing a cancel method and using it everywhere.
|
|
108
|
+
//global.setTimeout = wrapFunction(setTimeout, true);
|
|
109
|
+
}
|
|
110
|
+
exports.wrap = wrap;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Copyright 2013 Traceur Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
var fs = require('fs');
|
|
16
|
+
var path = require('path');
|
|
17
|
+
|
|
18
|
+
function existsSync(p) {
|
|
19
|
+
return fs.existsSync ? fs.existsSync(p) : path.existsSync(p);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Recursively makes all directoires, similar to mkdir -p
|
|
24
|
+
* @param {string} dir
|
|
25
|
+
*/
|
|
26
|
+
function mkdirRecursive(dir) {
|
|
27
|
+
var parts = path.normalize(dir).split(path.sep);
|
|
28
|
+
dir = '';
|
|
29
|
+
for (var i = 0; i < parts.length; i++) {
|
|
30
|
+
dir += parts[i] + path.sep;
|
|
31
|
+
if (!existsSync(dir)) {
|
|
32
|
+
fs.mkdirSync(dir, 0x1FD); // 0775 permissions
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Removes the common prefix of basedir and filedir from filedir
|
|
39
|
+
* @param {string} basedir
|
|
40
|
+
* @param {string} filedir
|
|
41
|
+
*/
|
|
42
|
+
function removeCommonPrefix(basedir, filedir) {
|
|
43
|
+
var baseparts = basedir.split(path.sep);
|
|
44
|
+
var fileparts = filedir.split(path.sep);
|
|
45
|
+
|
|
46
|
+
var i = 0;
|
|
47
|
+
while (i < fileparts.length && fileparts[i] === baseparts[i]) {
|
|
48
|
+
i++;
|
|
49
|
+
}
|
|
50
|
+
return fileparts.slice(i).join(path.sep);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function writeFile(filename, contents) {
|
|
54
|
+
// Compute the output path
|
|
55
|
+
var outputdir = fs.realpathSync(process.cwd());
|
|
56
|
+
mkdirRecursive(path.dirname(filename));
|
|
57
|
+
var filedir = fs.realpathSync(path.dirname(filename));
|
|
58
|
+
filedir = removeCommonPrefix(outputdir, filedir);
|
|
59
|
+
outputdir = path.join(outputdir, filedir);
|
|
60
|
+
|
|
61
|
+
mkdirRecursive(outputdir);
|
|
62
|
+
var outputfile = path.join(outputdir, path.basename(filename));
|
|
63
|
+
fs.writeFileSync(outputfile, contents, 'utf8');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function normalizePath(s) {
|
|
67
|
+
return path.sep == '\\' ? s.replace(/\\/g, '/') : s;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
exports.mkdirRecursive = mkdirRecursive;
|
|
71
|
+
exports.normalizePath = normalizePath;
|
|
72
|
+
exports.removeCommonPrefix = removeCommonPrefix;
|
|
73
|
+
exports.writeFile = writeFile;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// Copyright 2013 Traceur Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
var format = require('util').format;
|
|
16
|
+
|
|
17
|
+
function addAbbrev(o) {
|
|
18
|
+
var ks = [''].concat(Object.keys(o).sort()), k, kprev = '';
|
|
19
|
+
for (var i = ks.length - 1; i > 0; i--) {
|
|
20
|
+
var ka = k = ks[i], pre = 0;
|
|
21
|
+
|
|
22
|
+
// find length of common prefix, clamp to min of 1.
|
|
23
|
+
while (kprev[pre] === k[pre]) {
|
|
24
|
+
pre++;
|
|
25
|
+
}
|
|
26
|
+
pre = pre || 1;
|
|
27
|
+
|
|
28
|
+
// add all unique prefixes for k.
|
|
29
|
+
while (!o[ka = ka.slice(0, -1)] && ka.length > pre && ka > ks[i - 1]) {
|
|
30
|
+
o[ka] = o[k];
|
|
31
|
+
}
|
|
32
|
+
kprev = k;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function Getopt(opts) {
|
|
37
|
+
this.opt = null;
|
|
38
|
+
this.optarg = null;
|
|
39
|
+
this.optopt = null;
|
|
40
|
+
this.optdata = null;
|
|
41
|
+
|
|
42
|
+
this.optind = 2;
|
|
43
|
+
this.nextchar = 0;
|
|
44
|
+
|
|
45
|
+
this.opts_ = Object.create(null);
|
|
46
|
+
for (var i = 0; i < opts.length; i++) {
|
|
47
|
+
var opt = opts[i], data = null, m;
|
|
48
|
+
if (Array.isArray(opt)) {
|
|
49
|
+
data = opt[1] || null;
|
|
50
|
+
opt = opt[0];
|
|
51
|
+
}
|
|
52
|
+
if (!(m = opt.match(/^([\w\-]+)(:{0,2})$/))) {
|
|
53
|
+
throw new Error('invalid option initializer: ' + opt);
|
|
54
|
+
}
|
|
55
|
+
this.opts_[m[1]] = {name: m[1], arg: m[2], data: data};
|
|
56
|
+
}
|
|
57
|
+
addAbbrev(this.opts_);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
Getopt.prototype = {
|
|
61
|
+
getopt: function(argv) {
|
|
62
|
+
var m, arg, optInf;
|
|
63
|
+
this.opt = this.optarg = this.optopt = this.optdata = null;
|
|
64
|
+
if (this.optind >= argv.length) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
arg = argv[this.optind];
|
|
68
|
+
if (!this.nextchar && /^-[^\-]/.test(arg)) {
|
|
69
|
+
this.nextchar = 1;
|
|
70
|
+
}
|
|
71
|
+
if (this.nextchar) {
|
|
72
|
+
// short opt
|
|
73
|
+
this.opt = arg[this.nextchar] || null;
|
|
74
|
+
this.optarg = arg.slice(++this.nextchar) || null;
|
|
75
|
+
} else if (m = arg.match(/^--([^=]+)(?:=(.*))?$|^--(.+)$/)) {
|
|
76
|
+
// long opt
|
|
77
|
+
this.opt = m[1] || m[3];
|
|
78
|
+
this.optarg = m[2] === undefined ? null : m[2];
|
|
79
|
+
} else {
|
|
80
|
+
// free arg
|
|
81
|
+
this.optind++;
|
|
82
|
+
this.opt = '=';
|
|
83
|
+
this.optarg = arg;
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (optInf = this.opts_[this.opt]) {
|
|
88
|
+
this.opt = optInf.name;
|
|
89
|
+
this.optdata = optInf.data;
|
|
90
|
+
switch (optInf.arg) {
|
|
91
|
+
case '':
|
|
92
|
+
// no arg
|
|
93
|
+
if (!this.nextchar && this.optarg) {
|
|
94
|
+
// unexpected arg
|
|
95
|
+
this.optopt = this.opt;
|
|
96
|
+
this.opt = '!';
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
this.optarg = null;
|
|
100
|
+
break;
|
|
101
|
+
case ':':
|
|
102
|
+
// required arg
|
|
103
|
+
if (this.optarg === null) {
|
|
104
|
+
if (++this.optind >= argv.length) {
|
|
105
|
+
// missing arg
|
|
106
|
+
this.optopt = this.opt;
|
|
107
|
+
this.opt = ':';
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
this.optarg = argv[this.optind];
|
|
111
|
+
}
|
|
112
|
+
// fall through
|
|
113
|
+
case '::':
|
|
114
|
+
// optional arg
|
|
115
|
+
this.nextchar = 0;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
} else {
|
|
119
|
+
// unknown opt
|
|
120
|
+
this.optopt = this.opt;
|
|
121
|
+
this.opt = '?';
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
this.optind += !(this.nextchar %= arg.length);
|
|
125
|
+
|
|
126
|
+
return true;
|
|
127
|
+
},
|
|
128
|
+
message: function() {
|
|
129
|
+
switch (this.opt) {
|
|
130
|
+
case ':':
|
|
131
|
+
return format('missing argument for \'%s\'.', this.optopt);
|
|
132
|
+
case '?':
|
|
133
|
+
return format('unknown option \'%s\'.', this.optopt);
|
|
134
|
+
case '!':
|
|
135
|
+
return format('\'%s\' does not take an argument.', this.optopt);
|
|
136
|
+
case '=':
|
|
137
|
+
return format('optarg \'%s\'.', this.optarg);
|
|
138
|
+
default:
|
|
139
|
+
if (this.optarg === null)
|
|
140
|
+
return format('opt \'%s\'.', this.opt);
|
|
141
|
+
else
|
|
142
|
+
return format('opt \'%s\', optarg \'%s\'.', this.opt, this.optarg);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
exports.Getopt = Getopt;
|