opal 0.2.2 → 0.3.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 +5 -10
- data/LICENSE +75 -0
- data/README.md +55 -3
- data/Rakefile +62 -139
- data/bin/opal +7 -10
- data/gems/core/README.md +5 -0
- data/gems/core/Rakefile +7 -0
- data/gems/core/core.gemspec +13 -0
- data/gems/core/lib/core.rb +33 -0
- data/gems/core/lib/core/array.rb +1470 -0
- data/gems/core/lib/core/basic_object.rb +15 -0
- data/gems/core/lib/core/class.rb +31 -0
- data/gems/core/lib/core/dir.rb +26 -0
- data/gems/core/lib/core/error.rb +43 -0
- data/gems/core/lib/core/false_class.rb +21 -0
- data/gems/core/lib/core/file.rb +54 -0
- data/gems/core/lib/core/hash.rb +725 -0
- data/gems/core/lib/core/kernel.rb +240 -0
- data/gems/core/lib/core/module.rb +98 -0
- data/gems/core/lib/core/nil_class.rb +41 -0
- data/gems/core/lib/core/numeric.rb +370 -0
- data/gems/core/lib/core/proc.rb +11 -0
- data/gems/core/lib/core/range.rb +17 -0
- data/gems/core/lib/core/regexp.rb +18 -0
- data/gems/core/lib/core/string.rb +328 -0
- data/gems/core/lib/core/symbol.rb +15 -0
- data/gems/core/lib/core/top_self.rb +8 -0
- data/gems/core/lib/core/true_class.rb +20 -0
- data/gems/core/lib/core/vm.rb +16 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/append_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/assoc_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/at_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/clear_spec.rb +1 -1
- data/{opals/opal/opal → gems/core}/spec/core/array/collect_bang_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/collect_spec.rb +0 -0
- data/gems/core/spec/core/array/compact_spec.rb +41 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/concat_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/constructor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/each_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/element_reference_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/first_spec.rb +1 -1
- data/{opals/opal/opal → gems/core}/spec/core/array/include_spec.rb +0 -0
- data/gems/core/spec/core/array/join_spec.rb +6 -0
- data/gems/core/spec/core/array/last_spec.rb +51 -0
- data/gems/core/spec/core/array/length_spec.rb +6 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/map_spec.rb +2 -0
- data/gems/core/spec/core/array/reverse_spec.rb +6 -0
- data/{opals/opal/opal → gems/core}/spec/core/builtin_constants/builtin_constants_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/and_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/inspect_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/to_s_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/xor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/file/join_spec.rb +1 -1
- data/gems/core/spec/core/hash/assoc_spec.rb +32 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/instance_eval_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/loop_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/raise_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/module/attr_accessor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/number/lt_spec.rb +0 -0
- data/gems/core/spec/core/string/sub_spec.rb +24 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/and_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/inspect_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/to_s_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/xor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/and_spec.rb +2 -3
- data/{opals/opal/opal → gems/core}/spec/language/array_spec.rb +21 -5
- data/gems/core/spec/language/block_spec.rb +38 -0
- data/{opals/opal/opal → gems/core}/spec/language/break_spec.rb +0 -0
- data/gems/core/spec/language/case_spec.rb +103 -0
- data/{opals/opal/opal → gems/core}/spec/language/def_spec.rb +11 -1
- data/{opals/opal/opal → gems/core}/spec/language/eigenclass_spec.rb +0 -0
- data/gems/core/spec/language/file_spec.rb +13 -0
- data/gems/core/spec/language/fixtures/block.rb +21 -0
- data/gems/core/spec/language/fixtures/super.rb +293 -0
- data/{opals/opal/opal → gems/core}/spec/language/hash_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/if_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/loop_spec.rb +0 -0
- data/gems/core/spec/language/metaclass_spec.rb +21 -0
- data/{opals/opal/opal → gems/core}/spec/language/method_spec.rb +60 -0
- data/{opals/opal/opal → gems/core}/spec/language/next_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/redo_spec.rb +0 -0
- data/gems/core/spec/language/regexp_spec.rb +26 -0
- data/{opals/opal/opal → gems/core}/spec/language/rescue_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/return_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/string_spec.rb +0 -0
- data/gems/core/spec/language/super_spec.rb +32 -0
- data/{opals/opal/opal → gems/core}/spec/language/until_spec.rb +47 -47
- data/gems/core/spec/language/variables_spec.rb +155 -0
- data/{opals/opal/opal → gems/core}/spec/language/while_spec.rb +47 -47
- data/{opals/opal/opal → gems/core}/spec/spec_helper.rb +1 -1
- data/gems/core_fs/README.md +19 -0
- data/gems/dev/Rakefile +5 -0
- data/gems/dev/lib/dev.js +99 -0
- data/gems/dev/lib/dev/generator.js +1264 -0
- data/gems/dev/lib/dev/parser.js +979 -0
- data/gems/dev/lib/dev/ruby_parser.js +1088 -0
- data/gems/dev/lib/dev/ruby_parser.y +1267 -0
- data/gems/dev/lib/dev/string_scanner.js +38 -0
- data/gems/dev/tools/racc2js/README.md +39 -0
- data/gems/dev/tools/racc2js/math_parser.js +222 -0
- data/gems/dev/tools/racc2js/math_parser.rb +133 -0
- data/gems/dev/tools/racc2js/math_parser.y +28 -0
- data/gems/dev/tools/racc2js/parser.js +218 -0
- data/gems/dev/tools/racc2js/racc2js.rb +153 -0
- data/gems/json/README.md +4 -0
- data/gems/json/json.gemspec +14 -0
- data/gems/json/lib/json.rb +64 -0
- data/gems/json/lib/json/ext.rb +51 -0
- data/{opals/opal/browser/lib/browser/json_parse.js → gems/json/lib/json/json2.js} +197 -37
- data/gems/ospec/README.md +0 -0
- data/gems/ospec/lib/ospec.rb +6 -0
- data/gems/ospec/lib/ospec/autorun.rb +3 -0
- data/gems/ospec/lib/ospec/dsl.rb +15 -0
- data/gems/ospec/lib/ospec/example.rb +11 -0
- data/gems/ospec/lib/ospec/example/before_and_after_hooks.rb +56 -0
- data/gems/ospec/lib/ospec/example/errors.rb +17 -0
- data/gems/ospec/lib/ospec/example/example_group.rb +12 -0
- data/gems/ospec/lib/ospec/example/example_group_factory.rb +21 -0
- data/gems/ospec/lib/ospec/example/example_group_hierarchy.rb +20 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/example/example_group_methods.rb +26 -68
- data/gems/ospec/lib/ospec/example/example_group_proxy.rb +14 -0
- data/gems/ospec/lib/ospec/example/example_methods.rb +46 -0
- data/gems/ospec/lib/ospec/example/example_proxy.rb +18 -0
- data/gems/ospec/lib/ospec/expectations.rb +19 -0
- data/gems/ospec/lib/ospec/expectations/errors.rb +8 -0
- data/gems/ospec/lib/ospec/expectations/fail_with.rb +8 -0
- data/gems/ospec/lib/ospec/expectations/handler.rb +27 -0
- data/gems/ospec/lib/ospec/matchers.rb +24 -0
- data/{opals/opal/Rakefile → gems/ospec/lib/ospec/matchers/be.rb} +0 -0
- data/gems/ospec/lib/ospec/matchers/generated_descriptions.rb +20 -0
- data/gems/ospec/lib/ospec/matchers/operator_matcher.rb +52 -0
- data/gems/ospec/lib/ospec/runner.rb +40 -0
- data/gems/ospec/lib/ospec/runner/example_group_runner.rb +44 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/runner/formatter/html_formatter.rb +31 -40
- data/gems/ospec/lib/ospec/runner/formatter/terminal_formatter.rb +48 -0
- data/gems/ospec/lib/ospec/runner/options.rb +36 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/runner/reporter.rb +23 -55
- data/gems/ospec/ospec.gemspec +0 -0
- data/gems/rquery/README.md +9 -0
- data/gems/rquery/lib/rquery.rb +10 -0
- data/gems/rquery/lib/rquery/ajax.rb +4 -0
- data/gems/rquery/lib/rquery/css.rb +96 -0
- data/gems/rquery/lib/rquery/document.rb +25 -0
- data/gems/rquery/lib/rquery/element.rb +292 -0
- data/gems/rquery/lib/rquery/event.rb +108 -0
- data/gems/rquery/lib/rquery/jquery.js +8177 -0
- data/gems/rquery/lib/rquery/request.rb +138 -0
- data/gems/rquery/lib/rquery/response.rb +49 -0
- data/gems/rquery/rquery.gemspec +16 -0
- data/lib/opal.js +1597 -0
- data/lib/opal.rb +6 -69
- data/lib/opal/builder.rb +115 -0
- data/lib/opal/bundle.rb +131 -0
- data/lib/opal/command.rb +11 -0
- data/lib/opal/context.rb +69 -0
- data/lib/opal/context/console.rb +12 -0
- data/lib/opal/context/file_system.rb +19 -0
- data/lib/opal/context/loader.rb +117 -0
- data/lib/opal/gem.rb +153 -0
- data/lib/opal/ruby/nodes.rb +1302 -0
- data/lib/opal/ruby/parser.rb +780 -0
- data/lib/opal/ruby/ruby_parser.rb +5170 -0
- data/lib/opal/ruby/ruby_parser.y +1298 -0
- data/opal.gemspec +11 -256
- metadata +179 -240
- data/.gitmodules +0 -6
- data/Opalfile +0 -384
- data/VERSION +0 -1
- data/demos/apps/browser_demo/index.html +0 -11
- data/demos/apps/browser_demo/lib/browser_demo.rb +0 -31
- data/demos/apps/simple_opal/Opalfile +0 -13
- data/demos/apps/simple_opal/index.html +0 -11
- data/demos/apps/simple_opal/lib/app_controller.rb +0 -62
- data/demos/apps/simple_opal/lib/main_window.rb +0 -146
- data/demos/browser/request/index.html +0 -52
- data/demos/browser/request/request.rb +0 -48
- data/gen/browser/__PROJECT_NAME__/Rakefile +0 -12
- data/gen/browser/__PROJECT_NAME__/index.html +0 -11
- data/gen/browser/__PROJECT_NAME__/javascripts/opal.debug.js +0 -4687
- data/gen/browser/__PROJECT_NAME__/javascripts/opal.min.js +0 -175
- data/gen/browser/__PROJECT_NAME__/lib/__PROJECT_NAME__.rb +0 -1
- data/lib/opal/builders/base.rb +0 -50
- data/lib/opal/builders/css.rb +0 -46
- data/lib/opal/builders/javascript.rb +0 -44
- data/lib/opal/builders/opal.rb +0 -79
- data/lib/opal/builders/ruby.rb +0 -50
- data/lib/opal/builders/ruby/generate.rb +0 -1851
- data/lib/opal/builders/ruby/nodes.rb +0 -210
- data/lib/opal/builders/ruby/ruby.rb +0 -916
- data/lib/opal/builders/ruby/ruby_parser.rb +0 -6008
- data/lib/opal/builders/ruby/ruby_parser.rb.y +0 -1451
- data/lib/opal/models/build_item.rb +0 -104
- data/lib/opal/models/hash_struct.rb +0 -40
- data/lib/opal/models/project.rb +0 -252
- data/lib/opal/models/struct_accessors.rb +0 -58
- data/lib/opal/models/target.rb +0 -176
- data/lib/opal/opal/build.rb +0 -169
- data/lib/opal/opal/env/console.rb +0 -66
- data/lib/opal/opal/env/fs.rb +0 -98
- data/lib/opal/opal/env/object.rb +0 -48
- data/lib/opal/opal/environment.rb +0 -139
- data/lib/opal/opal/gen.rb +0 -62
- data/lib/opal/opal/opal.rb +0 -75
- data/lib/opal/opal/repl.rb +0 -38
- data/lib/opal/opalfile/dsl.rb +0 -62
- data/lib/opal/opalfile/opalfile.rb +0 -133
- data/lib/opal/opalfile/task.rb +0 -96
- data/lib/opal/opalfile/task_manager.rb +0 -63
- data/lib/opal/opalfile/task_scope.rb +0 -52
- data/lib/opal/rack/app_server.rb +0 -119
- data/lib/opal/rake/opal_task.rb +0 -34
- data/opals/opal/README.md +0 -37
- data/opals/opal/browser/Opalfile +0 -11
- data/opals/opal/browser/README.md +0 -146
- data/opals/opal/browser/SIZZLE_LICESNSE.txt +0 -148
- data/opals/opal/browser/lib/browser.rb +0 -118
- data/opals/opal/browser/lib/browser/builder.rb +0 -41
- data/opals/opal/browser/lib/browser/canvas_context.rb +0 -115
- data/opals/opal/browser/lib/browser/dimensions.rb +0 -50
- data/opals/opal/browser/lib/browser/document.rb +0 -146
- data/opals/opal/browser/lib/browser/element.rb +0 -487
- data/opals/opal/browser/lib/browser/element/attributes.rb +0 -88
- data/opals/opal/browser/lib/browser/element/css.rb +0 -290
- data/opals/opal/browser/lib/browser/element/form.rb +0 -146
- data/opals/opal/browser/lib/browser/event/dom_events.rb +0 -81
- data/opals/opal/browser/lib/browser/event/event.rb +0 -177
- data/opals/opal/browser/lib/browser/event/trigger_events.rb +0 -53
- data/opals/opal/browser/lib/browser/geometry.rb +0 -97
- data/opals/opal/browser/lib/browser/json.rb +0 -32
- data/opals/opal/browser/lib/browser/request/request.rb +0 -201
- data/opals/opal/browser/lib/browser/sizzle.js +0 -1068
- data/opals/opal/browser/lib/browser/string.rb +0 -42
- data/opals/opal/browser/lib/browser/touch.rb +0 -37
- data/opals/opal/browser/lib/browser/vml_context.js +0 -33
- data/opals/opal/browser/lib/browser/window.rb +0 -36
- data/opals/opal/browser/spec/browser/browser_detection_spec.rb +0 -7
- data/opals/opal/browser/spec/document/aref_spec.rb +0 -110
- data/opals/opal/browser/spec/document/ready_spec.rb +0 -16
- data/opals/opal/browser/spec/element/body_spec.rb +0 -11
- data/opals/opal/browser/spec/element/clear_spec.rb +0 -26
- data/opals/opal/browser/spec/element/empty_spec.rb +0 -29
- data/opals/opal/browser/spec/element/has_class_spec.rb +0 -40
- data/opals/opal/browser/spec/element/hidden_spec.rb +0 -23
- data/opals/opal/browser/spec/element/hide_spec.rb +0 -31
- data/opals/opal/browser/spec/element/remove_spec.rb +0 -25
- data/opals/opal/browser/spec/element/show_spec.rb +0 -31
- data/opals/opal/browser/spec/element/style_spec.rb +0 -69
- data/opals/opal/browser/spec/element/toggle_spec.rb +0 -31
- data/opals/opal/browser/spec/element/visible_spec.rb +0 -23
- data/opals/opal/browser/spec/spec_helper.rb +0 -1
- data/opals/opal/opal/Opalfile +0 -14
- data/opals/opal/opal/spec/core/array/compact_spec.rb +0 -15
- data/opals/opal/opal/spec/fixtures/super.rb +0 -70
- data/opals/opal/opal/spec/language/____temp_remove_this.rb +0 -12
- data/opals/opal/opal/spec/language/block_spec.rb +0 -18
- data/opals/opal/opal/spec/language/case_spec.rb +0 -103
- data/opals/opal/opal/spec/language/metaclass_spec.rb +0 -21
- data/opals/opal/opal/spec/language/super_spec.rb +0 -26
- data/opals/opal/runtime/Opalfile +0 -78
- data/opals/opal/runtime/README.md +0 -12
- data/opals/opal/runtime/docs/debugging.md +0 -51
- data/opals/opal/runtime/lib/array.rb +0 -1516
- data/opals/opal/runtime/lib/basic_object.rb +0 -49
- data/opals/opal/runtime/lib/class.rb +0 -54
- data/opals/opal/runtime/lib/dir.rb +0 -36
- data/opals/opal/runtime/lib/error.rb +0 -49
- data/opals/opal/runtime/lib/false_class.rb +0 -52
- data/opals/opal/runtime/lib/file.rb +0 -79
- data/opals/opal/runtime/lib/hash.rb +0 -791
- data/opals/opal/runtime/lib/io.rb +0 -39
- data/opals/opal/runtime/lib/kernel.rb +0 -288
- data/opals/opal/runtime/lib/match_data.rb +0 -36
- data/opals/opal/runtime/lib/module.rb +0 -109
- data/opals/opal/runtime/lib/nil_class.rb +0 -69
- data/opals/opal/runtime/lib/number.rb +0 -398
- data/opals/opal/runtime/lib/proc.rb +0 -77
- data/opals/opal/runtime/lib/range.rb +0 -63
- data/opals/opal/runtime/lib/regexp.rb +0 -111
- data/opals/opal/runtime/lib/ruby.rb +0 -30
- data/opals/opal/runtime/lib/string.rb +0 -328
- data/opals/opal/runtime/lib/symbol.rb +0 -40
- data/opals/opal/runtime/lib/top_self.rb +0 -33
- data/opals/opal/runtime/lib/true_class.rb +0 -45
- data/opals/opal/runtime/runtime/browser.js +0 -287
- data/opals/opal/runtime/runtime/debug.js +0 -180
- data/opals/opal/runtime/runtime/opal.js +0 -1008
- data/opals/opal/runtime/runtime/post_opal.js +0 -1
- data/opals/opal/runtime/runtime/pre_opal.js +0 -2
- data/opals/opal/runtime/runtime/server_side.js +0 -50
- data/opals/opal/spec/LICENSE.txt +0 -26
- data/opals/opal/spec/Opalfile +0 -5
- data/opals/opal/spec/bin/spec.rb +0 -43
- data/opals/opal/spec/lib/spec.rb +0 -33
- data/opals/opal/spec/lib/spec/dsl.rb +0 -41
- data/opals/opal/spec/lib/spec/example.rb +0 -35
- data/opals/opal/spec/lib/spec/example/before_and_after_hooks.rb +0 -81
- data/opals/opal/spec/lib/spec/example/errors.rb +0 -42
- data/opals/opal/spec/lib/spec/example/example_group.rb +0 -37
- data/opals/opal/spec/lib/spec/example/example_group_factory.rb +0 -43
- data/opals/opal/spec/lib/spec/example/example_group_hierarchy.rb +0 -45
- data/opals/opal/spec/lib/spec/example/example_group_proxy.rb +0 -41
- data/opals/opal/spec/lib/spec/example/example_methods.rb +0 -73
- data/opals/opal/spec/lib/spec/example/example_proxy.rb +0 -48
- data/opals/opal/spec/lib/spec/expectations.rb +0 -46
- data/opals/opal/spec/lib/spec/expectations/errors.rb +0 -35
- data/opals/opal/spec/lib/spec/expectations/fail_with.rb +0 -37
- data/opals/opal/spec/lib/spec/expectations/handler.rb +0 -48
- data/opals/opal/spec/lib/spec/matchers.rb +0 -50
- data/opals/opal/spec/lib/spec/matchers/be.rb +0 -26
- data/opals/opal/spec/lib/spec/matchers/generated_descriptions.rb +0 -47
- data/opals/opal/spec/lib/spec/matchers/operator_matcher.rb +0 -66
- data/opals/opal/spec/lib/spec/runner.rb +0 -48
- data/opals/opal/spec/lib/spec/runner/example_group_runner.rb +0 -71
- data/opals/opal/spec/lib/spec/runner/formatter/terminal_formatter.rb +0 -82
- data/opals/opal/spec/lib/spec/runner/options.rb +0 -63
- data/opals/opal/spec/resources/index.html +0 -25
- data/opals/opal/spec/resources/spec.css +0 -132
- data/spec/cherry_kit/iseq_spec.rb +0 -38
- data/spec/spec_helper.rb +0 -16
- data/spec/vienna_spec.rb +0 -7
- data/yard/index.html +0 -43
- data/yard/style.css +0 -765
data/.gitignore
CHANGED
data/LICENSE
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
Copyright (C) 2011 by Adam Beynon
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
|
11
|
+
all copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
THE SOFTWARE.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
Opalspec based on RSPEC, original license:
|
|
25
|
+
==========================================
|
|
26
|
+
|
|
27
|
+
Copyright (c) 2005-2010 The RSpec Development Team
|
|
28
|
+
|
|
29
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
30
|
+
a copy of this software and associated documentation files (the
|
|
31
|
+
"Software"), to deal in the Software without restriction, including
|
|
32
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
33
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
34
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
35
|
+
the following conditions:
|
|
36
|
+
|
|
37
|
+
The above copyright notice and this permission notice shall be
|
|
38
|
+
included in all copies or substantial portions of the Software.
|
|
39
|
+
|
|
40
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
41
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
42
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
43
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
44
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
45
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
46
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
Opalite contains Sizzle, original license:
|
|
50
|
+
==========================================
|
|
51
|
+
|
|
52
|
+
MIT License
|
|
53
|
+
----
|
|
54
|
+
|
|
55
|
+
Copyright (c) 2009 John Resig
|
|
56
|
+
|
|
57
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
58
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
59
|
+
in the Software without restriction, including without limitation the rights
|
|
60
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
61
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
62
|
+
furnished to do so, subject to the following conditions:
|
|
63
|
+
|
|
64
|
+
The above copyright notice and this permission notice shall be included in
|
|
65
|
+
all copies or substantial portions of the Software.
|
|
66
|
+
|
|
67
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
68
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
69
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
70
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
71
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
72
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
73
|
+
THE SOFTWARE.
|
|
74
|
+
|
|
75
|
+
|
data/README.md
CHANGED
|
@@ -1,4 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
Opal: Ruby runtime for javascript
|
|
2
|
+
=================================
|
|
3
|
+
|
|
4
|
+
**Homepage**: [http://opalscript.org](http://opalscript.org)
|
|
5
|
+
**Github**: [http://github.com/adambeynon/opal](http://github.com/adambeynon/opal)
|
|
6
|
+
|
|
7
|
+
Description
|
|
8
|
+
-----------
|
|
9
|
+
|
|
10
|
+
Opal is a ruby runtime and set of core libraries designed to run
|
|
11
|
+
directly on top of javascript. It supports the gem packaging system for
|
|
12
|
+
building ruby ready for the browser. It also uses therubyracer to
|
|
13
|
+
provide a command line REPL and environment for running ruby server-side
|
|
14
|
+
inside a javascript context.
|
|
15
|
+
|
|
16
|
+
Installation
|
|
17
|
+
------------
|
|
18
|
+
|
|
19
|
+
Opal is distributed as a gem, so install with:
|
|
20
|
+
|
|
21
|
+
$ gem install opal
|
|
22
|
+
|
|
23
|
+
Alternativley, you may just clone this git repo. No building is
|
|
24
|
+
neccessary.
|
|
25
|
+
|
|
26
|
+
Usage
|
|
27
|
+
-----
|
|
28
|
+
|
|
29
|
+
The opal build tools can be used in three ways. As a simple repl, the
|
|
30
|
+
bundler tasks and the simple build tasks.
|
|
31
|
+
|
|
32
|
+
**1. opal Command-line tool**
|
|
33
|
+
|
|
34
|
+
In its current form, the `opal` executable is very simple - it provides
|
|
35
|
+
a simple ruby repl that uses therubyracer to provide an embedable
|
|
36
|
+
javascript context. If you have installed the gem, to run the REPL,
|
|
37
|
+
simply type:
|
|
38
|
+
|
|
39
|
+
$ opal
|
|
40
|
+
|
|
41
|
+
or if you have cloned this repository, type:
|
|
42
|
+
|
|
43
|
+
$ bin/opal
|
|
44
|
+
|
|
45
|
+
The REPL can be used like any other repl, and internally each command is
|
|
46
|
+
being compiled into javascript, and run in the context which opal is
|
|
47
|
+
already loaded into.
|
|
48
|
+
|
|
49
|
+
Changelog
|
|
50
|
+
---------
|
|
51
|
+
|
|
52
|
+
- **30 March 2011**: 0.3.0 Release
|
|
53
|
+
- Major redesign of build tools to use v8 for server side opal
|
|
54
|
+
- Split all opal packages into actual gems
|
|
55
|
+
- File and Dir classes for both browser and v8 gem runtimes
|
|
3
56
|
|
|
4
|
-
Vienna is the code name for the build tools for opal. This is actually what the gem is, where as opal are the core libraries. See github.com/adambeynon/opal for the core libraries.
|
data/Rakefile
CHANGED
|
@@ -1,163 +1,86 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
|
-
require 'rake'
|
|
3
1
|
require 'yard'
|
|
4
2
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
gemspec.homepage = "http://opalscript.org"
|
|
13
|
-
gemspec.authors = ["Adam Beynon"]
|
|
14
|
-
gemspec.files.include 'opals/opal/**/*'
|
|
15
|
-
end
|
|
16
|
-
Jeweler::GemcutterTasks.new
|
|
17
|
-
rescue LoadError
|
|
18
|
-
puts "Jeweler not available. Install it with: sudo gem install jeweler"
|
|
3
|
+
OPAL_DOC_ROOT = "doc"
|
|
4
|
+
OPAL_DOC_GEMS = "doc/gems"
|
|
5
|
+
OPAL_GIT_REPO = "git@github.com:adambeynon/opal.git"
|
|
6
|
+
|
|
7
|
+
desc "Rebuild ruby_parser.rb for opal build tools"
|
|
8
|
+
task :parser do
|
|
9
|
+
%x{racc -E -l lib/opal/ruby/ruby_parser.y -o lib/opal/ruby/ruby_parser.rb}
|
|
19
10
|
end
|
|
20
11
|
|
|
12
|
+
desc "Requires this development version of opal (not installed one)"
|
|
13
|
+
task :opal do
|
|
14
|
+
$:.unshift File.join(__FILE__, '..', 'lib')
|
|
15
|
+
require 'opal'
|
|
16
|
+
end
|
|
21
17
|
|
|
18
|
+
desc "Builds standalone opal.js file (opal + core + rquery) for the browser"
|
|
19
|
+
task :browser => :opal do
|
|
20
|
+
gem = Opal::Gem.new File.join(__FILE__, '..', 'gems', 'rquery')
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
task :opal_gem do
|
|
25
|
-
require File.join(File.dirname(__FILE__), 'lib', 'opal')
|
|
22
|
+
content = gem.bundle :to => 'tmp/opal.js'
|
|
26
23
|
end
|
|
27
24
|
|
|
25
|
+
desc "Builds spec runner for core lib"
|
|
26
|
+
task :opal_spec => :opal do
|
|
27
|
+
gem = Opal::Gem.new File.join(__FILE__, '..', 'gems', 'opal')
|
|
28
|
+
content = gem.bundle
|
|
29
|
+
File.open('tmp/opal_spec.js', 'w+') { |out| out.write content }
|
|
30
|
+
end
|
|
28
31
|
|
|
32
|
+
desc "Building example for a simple builder"
|
|
33
|
+
task :simple => :opal do
|
|
34
|
+
builder = Opal::Builder.new :project_dir => File.join(Dir.getwd, 'tmp'),
|
|
35
|
+
:files => 'testing.rb',
|
|
36
|
+
:out => 'testing.js'
|
|
29
37
|
|
|
30
|
-
|
|
31
|
-
task :ruby_parser do
|
|
32
|
-
%x{racc -E lib/vienna/builders/ruby/ruby_parser.rb.y -o lib/vienna/builders/ruby/ruby_parser.rb}
|
|
38
|
+
builder.build
|
|
33
39
|
end
|
|
34
40
|
|
|
35
|
-
|
|
41
|
+
desc "Rebuilds the documentation"
|
|
42
|
+
task :doc => ['doc:clean', 'doc:opal', 'doc:gems']
|
|
36
43
|
|
|
37
44
|
namespace :doc do
|
|
38
|
-
|
|
39
|
-
# rebuild demos
|
|
40
|
-
desc "Rebuild demos"
|
|
41
|
-
task :demos => :opal_gem do
|
|
42
|
-
# every demo uses an index.html file inside of the demos folder
|
|
43
|
-
base = File.join(File.dirname(__FILE__), 'demos')
|
|
44
|
-
demos = File.join(base, '**', 'index.html')
|
|
45
|
-
# we build all demos to vienna/doc/demos
|
|
46
|
-
Dir.glob(demos).each do |demo|
|
|
47
|
-
puts "building demo: #{demo}"
|
|
48
|
-
# path will be (demos/)path(/index.html)
|
|
49
|
-
path = /^#{Regexp.escape base}\/(.*)\/index\.html$/.match(demo)[1]
|
|
50
|
-
|
|
51
|
-
build_root = File.join(File.dirname(__FILE__), 'doc', 'demos', path)
|
|
52
|
-
|
|
53
|
-
puts build_root
|
|
54
|
-
project = Vienna::Project.new File.dirname(demo),
|
|
55
|
-
:build_root => build_root
|
|
56
|
-
|
|
57
|
-
# FIXME: maybe only set options if no Opalfile... some of the CherryKit
|
|
58
|
-
# apps may want to include some css etc etc, so dont overwrite them?
|
|
59
|
-
project.options :lib_directories => [""],
|
|
60
|
-
:javascripts_prefix => "",
|
|
61
|
-
:copy_html => true
|
|
62
|
-
project.build!
|
|
63
|
-
project.clean!
|
|
64
|
-
# puts project
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# opal/runtime docs
|
|
45
|
+
# Opal documentation
|
|
69
46
|
YARD::Rake::YardocTask.new(:opal) do |t|
|
|
70
|
-
t.files = ['
|
|
71
|
-
t.
|
|
72
|
-
t.files += ['-', 'opals/runtime/docs/**/*.md']
|
|
73
|
-
t.options = ['-o./doc/opal/']
|
|
74
|
-
t.options += ['-r./opals/runtime/README.md']
|
|
75
|
-
t.options += ['-mmarkdown']
|
|
76
|
-
t.options += ['--title', 'Opal Documentation']
|
|
47
|
+
t.files = ['lib/**/*.rb']
|
|
48
|
+
t.options = ['--title', 'Documentation for Opal', '--markup', 'markdown']
|
|
77
49
|
end
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
t.options = ['-o./doc/browser/']
|
|
83
|
-
t.options += ['-r./opals/browser/README.md']
|
|
84
|
-
t.options += ['-mmarkdown']
|
|
85
|
-
t.options += ['--title', 'Browser Documentation']
|
|
50
|
+
|
|
51
|
+
desc "Clean doc dir ready for rebuilding"
|
|
52
|
+
task :clean do
|
|
53
|
+
rm_rf OPAL_DOC_ROOT
|
|
86
54
|
end
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
:build_prefix => ""
|
|
101
|
-
|
|
102
|
-
project.build!
|
|
103
|
-
project.clean!
|
|
104
|
-
|
|
105
|
-
# spec html file
|
|
106
|
-
from = File.join(File.dirname(__FILE__), 'opals', 'spec', 'resources', 'index.html')
|
|
107
|
-
|
|
108
|
-
FileUtils.copy from, File.join(build_root, 'index.html')
|
|
55
|
+
|
|
56
|
+
desc "Generate documentation for opal and all gems"
|
|
57
|
+
task :gems do
|
|
58
|
+
Dir.mkdir OPAL_DOC_GEMS unless File.exists? OPAL_DOC_GEMS
|
|
59
|
+
|
|
60
|
+
%w[core].each do |gem|
|
|
61
|
+
gem_root = File.join Dir.getwd, 'gems', gem
|
|
62
|
+
doc_root = File.join gem_root, 'doc'
|
|
63
|
+
new_doc_root = File.join OPAL_DOC_GEMS, gem
|
|
64
|
+
|
|
65
|
+
puts " **#{gem}**"
|
|
66
|
+
Dir.chdir(gem_root) do
|
|
67
|
+
system "rake yard"
|
|
109
68
|
end
|
|
69
|
+
|
|
70
|
+
mv doc_root, new_doc_root
|
|
110
71
|
end
|
|
111
72
|
end
|
|
112
|
-
end
|
|
113
73
|
|
|
114
|
-
desc "
|
|
115
|
-
task :
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
:javascript_name => 'opal.debug.js',
|
|
125
|
-
:bin_file => nil
|
|
126
|
-
project.build!
|
|
127
|
-
project.clean!
|
|
128
|
-
|
|
129
|
-
# release build
|
|
130
|
-
project = Vienna::Project.new opal_root, :build_mode => :release,
|
|
131
|
-
:build_root => build_root
|
|
132
|
-
|
|
133
|
-
project.options :javascripts_prefix => '',
|
|
134
|
-
:javascript_name => 'opal.js',
|
|
135
|
-
:bin_file => nil
|
|
136
|
-
project.build!
|
|
137
|
-
project.clean!
|
|
138
|
-
|
|
139
|
-
# minify!
|
|
140
|
-
%x{java -jar extras/compiler.jar --js=doc/opal.js --js_output_file=doc/opal.min.js}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
# Also place all three into gen directory
|
|
144
|
-
%w{opal.min.js opal.debug.js}.each do |src|
|
|
145
|
-
FileUtils.copy "doc/#{src}", "gen/browser/__PROJECT_NAME__/javascripts/#{src}"
|
|
74
|
+
desc "Push changes to gh-pages branch"
|
|
75
|
+
task :pages do
|
|
76
|
+
Dir.chdir(OPAL_DOC_ROOT) do
|
|
77
|
+
system "git init"
|
|
78
|
+
system "git add ."
|
|
79
|
+
system "git commit -a -m 'Update docs for #{Time.now.asctime}'"
|
|
80
|
+
system "git remote add origin #{OPAL_GIT_REPO}"
|
|
81
|
+
system "git checkout -b gh-pages"
|
|
82
|
+
system "git push -f origin gh-pages"
|
|
83
|
+
end
|
|
146
84
|
end
|
|
147
85
|
end
|
|
148
86
|
|
|
149
|
-
task :doc => ['doc:browser', 'doc:opal', 'doc:demos'] do
|
|
150
|
-
# go through each set of generated docs, and replace the style.css file
|
|
151
|
-
%w{browser opal}.each do |opal|
|
|
152
|
-
from = File.join(File.dirname(__FILE__), 'yard', 'style.css')
|
|
153
|
-
to = File.join(File.dirname(__FILE__), 'doc', opal, 'css', 'style.css')
|
|
154
|
-
FileUtils.copy from, to
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
# copy our index.html and its necessary css files
|
|
158
|
-
%w{index.html style.css}.each do |resource|
|
|
159
|
-
from = File.join File.dirname(__FILE__), 'yard', resource
|
|
160
|
-
to = File.join(File.dirname(__FILE__), 'doc')
|
|
161
|
-
FileUtils.copy from, to
|
|
162
|
-
end
|
|
163
|
-
end
|
data/bin/opal
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
|
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
require 'opal'
|
|
7
|
+
require 'opal/command'
|
|
8
|
+
|
|
9
|
+
Opal::Command.ruby_repl
|
|
7
10
|
|
|
8
|
-
# begin
|
|
9
|
-
# require 'rubygems'
|
|
10
|
-
# require 'v8'
|
|
11
|
-
# rescue Exception
|
|
12
|
-
# abort "therubyracer not available. Install it with: sudo gem install therubyracer"
|
|
13
|
-
# end
|
data/gems/core/README.md
ADDED
data/gems/core/Rakefile
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
Gem::Specification.new do |s|
|
|
3
|
+
s.name = "core"
|
|
4
|
+
s.version = "0.0.1"
|
|
5
|
+
s.authors = ["Adam Beynon"]
|
|
6
|
+
s.email = ["adam@adambeynon.com"]
|
|
7
|
+
s.homepage = "http://github.com/adambeynon/opal"
|
|
8
|
+
s.summary = "Core libraries for opal"
|
|
9
|
+
|
|
10
|
+
s.files = Dir.glob("{bin,lib}/**/*") + %w[README.md]
|
|
11
|
+
s.require_path = "lib"
|
|
12
|
+
end
|
|
13
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
module Kernel
|
|
3
|
+
# Try to load the library or file named `path`. An error is thrown if the
|
|
4
|
+
# path cannot be resolved.
|
|
5
|
+
#
|
|
6
|
+
# @param [String] path The path to load
|
|
7
|
+
# @return [true, false]
|
|
8
|
+
def require(path)
|
|
9
|
+
`VM.require(path);`
|
|
10
|
+
true
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
require 'core/basic_object'
|
|
15
|
+
require 'core/module'
|
|
16
|
+
require 'core/class'
|
|
17
|
+
require 'core/kernel'
|
|
18
|
+
require 'core/top_self'
|
|
19
|
+
require 'core/nil_class'
|
|
20
|
+
require 'core/true_class'
|
|
21
|
+
require 'core/false_class'
|
|
22
|
+
require 'core/array'
|
|
23
|
+
require 'core/numeric'
|
|
24
|
+
require 'core/hash'
|
|
25
|
+
require 'core/error'
|
|
26
|
+
require 'core/string'
|
|
27
|
+
require 'core/symbol'
|
|
28
|
+
require 'core/proc'
|
|
29
|
+
require 'core/range'
|
|
30
|
+
require 'core/file'
|
|
31
|
+
require 'core/dir'
|
|
32
|
+
require 'core/vm'
|
|
33
|
+
|