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/lib/opal/models/target.rb
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# target.rb
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2010 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
require File.join(File.dirname(__FILE__), 'struct_accessors')
|
|
28
|
-
|
|
29
|
-
module Vienna
|
|
30
|
-
|
|
31
|
-
class Target
|
|
32
|
-
|
|
33
|
-
include StructAccessors
|
|
34
|
-
|
|
35
|
-
attr_reader :target_name, :target_type, :target_root, :project
|
|
36
|
-
|
|
37
|
-
def initialize(opts={})
|
|
38
|
-
@target_name = opts.delete :target_name
|
|
39
|
-
@target_root = opts.delete :target_root
|
|
40
|
-
@target_type = opts.delete :target_type
|
|
41
|
-
@project = opts.delete :project
|
|
42
|
-
@build_items = []
|
|
43
|
-
@main_target = opts.delete(:main_target) || false
|
|
44
|
-
@required = nil
|
|
45
|
-
merge! opts
|
|
46
|
-
|
|
47
|
-
# get opalfile all setup
|
|
48
|
-
opalfile
|
|
49
|
-
# puts "\n\n\n\n######################################## ENV"
|
|
50
|
-
# p Opalfile.env
|
|
51
|
-
# puts "######################################## TASKS"
|
|
52
|
-
# puts @opalfile.tasks.each_key.map { |key| key }
|
|
53
|
-
# puts "######################################## DONE\n\n\n\n"
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# builditems.. on;y those that are not hidden
|
|
57
|
-
def build_items
|
|
58
|
-
@build_items.reject { |e| e.hidden? }
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# is this the main target
|
|
62
|
-
def main_target?
|
|
63
|
-
@main_target
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def inspect
|
|
67
|
-
"#<Target name=#{target_name}, type=#{target_type}>"
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def opalfile
|
|
71
|
-
@opalfile ||= Opalfile.new File.join(target_root, 'Opalfile')
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# An array of the required items from the opal file
|
|
75
|
-
def required
|
|
76
|
-
return @required if @required
|
|
77
|
-
# puts "checking required"
|
|
78
|
-
req = config[:required]
|
|
79
|
-
# puts "did check rrquired"
|
|
80
|
-
# also make sure we include opal: bad things will happen if we dont
|
|
81
|
-
@required = case req
|
|
82
|
-
when Array
|
|
83
|
-
unless req.include? :opal
|
|
84
|
-
req << :opal
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
req
|
|
88
|
-
when Symbol
|
|
89
|
-
if req == :opal
|
|
90
|
-
[req]
|
|
91
|
-
else
|
|
92
|
-
[req, :opal]
|
|
93
|
-
end
|
|
94
|
-
else
|
|
95
|
-
# browser if we do not specify anything..
|
|
96
|
-
[:opal, :browser]
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def config
|
|
101
|
-
@config ||= HashStruct.new(Opalfile.config_for(project.build_mode, target_name.to_sym))
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def prepare!
|
|
105
|
-
# return
|
|
106
|
-
# return @self if @is_prepared
|
|
107
|
-
# puts "===== preparing #{target_name}"
|
|
108
|
-
# @is_prepared = true
|
|
109
|
-
# reset build items
|
|
110
|
-
@build_items = []
|
|
111
|
-
if opalfile.has_task? 'target:prepare'
|
|
112
|
-
opalfile.invoke 'target:prepare', :target => self,
|
|
113
|
-
:project => project,
|
|
114
|
-
:config => config
|
|
115
|
-
end
|
|
116
|
-
self
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
def build!
|
|
120
|
-
# return
|
|
121
|
-
if opalfile.has_task? 'target:build'
|
|
122
|
-
opalfile.invoke 'target:build', :target => self,
|
|
123
|
-
:project => project,
|
|
124
|
-
:config => config
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
# puts "################################################ build_items"
|
|
128
|
-
|
|
129
|
-
# at this point we will have a list of all our actual build items.. so go
|
|
130
|
-
# build them
|
|
131
|
-
build_items.each do |item|
|
|
132
|
-
# p item
|
|
133
|
-
item.build!
|
|
134
|
-
end
|
|
135
|
-
self
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
# find the build item with the given filename
|
|
139
|
-
def build_item_for(filename)
|
|
140
|
-
@build_items.find do |item|
|
|
141
|
-
item.filename == filename
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
# Add an item to be built. The path is relative to the target root.
|
|
146
|
-
def add_build_item(item_path, options={})
|
|
147
|
-
options[:filename] = item_path
|
|
148
|
-
@build_items << (res = BuildItem.new(self, options)).prepare!
|
|
149
|
-
res
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
# add transform (i.e. not just a copy file stage, but we need to compile it
|
|
153
|
-
# etc)
|
|
154
|
-
def add_transform(build_item, options={})
|
|
155
|
-
# puts "adding transform"
|
|
156
|
-
@build_items << (res = BuildItem.new(self, options)).prepare!
|
|
157
|
-
build_item.hide!
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
def add_composite(filename, options={})
|
|
161
|
-
options[:filename] = filename
|
|
162
|
-
options[:source_items] ||= []
|
|
163
|
-
options[:composite] = true
|
|
164
|
-
|
|
165
|
-
options[:build_path] ||= File.join(build_root, filename)
|
|
166
|
-
options[:staging_path] ||= File.join(staging_root, filename)
|
|
167
|
-
|
|
168
|
-
options[:target] ||= self
|
|
169
|
-
options[:project] ||= self
|
|
170
|
-
|
|
171
|
-
@build_items << (res = BuildItem.new(self, options)).prepare!
|
|
172
|
-
res.source_items.each { |item| item.hide! }
|
|
173
|
-
res
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
end
|
data/lib/opal/opal/build.rb
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# build.rb
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2010 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
require 'optparse'
|
|
28
|
-
require 'fileutils'
|
|
29
|
-
|
|
30
|
-
module Opal
|
|
31
|
-
|
|
32
|
-
def self.build!(args = nil)
|
|
33
|
-
args ||= ARGV
|
|
34
|
-
|
|
35
|
-
options = {}
|
|
36
|
-
|
|
37
|
-
option_parser = OptionParser.new do |opt|
|
|
38
|
-
opt.banner = <<END
|
|
39
|
-
Usage:
|
|
40
|
-
opal build [source] [destination] [options]
|
|
41
|
-
|
|
42
|
-
Description:
|
|
43
|
-
Build the given ruby files to javascript
|
|
44
|
-
|
|
45
|
-
Options:
|
|
46
|
-
END
|
|
47
|
-
|
|
48
|
-
opt.separator ""
|
|
49
|
-
|
|
50
|
-
opt.on('-w', '--watch', 'watch the given files for changes') do
|
|
51
|
-
options[:watch] = true
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
opt.on_tail('-h', '--help', 'show usage') do
|
|
55
|
-
puts option_parser
|
|
56
|
-
exit
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
option_parser.parse!(args)
|
|
62
|
-
|
|
63
|
-
case args.length
|
|
64
|
-
when 1
|
|
65
|
-
options[:source] = args[0]
|
|
66
|
-
when 2
|
|
67
|
-
options[:source] = args[0]
|
|
68
|
-
options[:destination] = args[1]
|
|
69
|
-
else
|
|
70
|
-
puts option_parser
|
|
71
|
-
exit
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
Builder.new(options).build!
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# Build some raw opal files into javascript, without the project system.
|
|
78
|
-
class Builder
|
|
79
|
-
|
|
80
|
-
# Options
|
|
81
|
-
#
|
|
82
|
-
# ### :source
|
|
83
|
-
#
|
|
84
|
-
# The source ruby file. Can either be a ruby file, a directory, or a glob
|
|
85
|
-
# for all files to compile
|
|
86
|
-
#
|
|
87
|
-
# ### :destination
|
|
88
|
-
#
|
|
89
|
-
# Where to build the given files to. Can be either a single file, or a
|
|
90
|
-
# directory to place the given files.
|
|
91
|
-
#
|
|
92
|
-
# ### :watch
|
|
93
|
-
#
|
|
94
|
-
# Watch the given sources for changes to automatically compile them.
|
|
95
|
-
#
|
|
96
|
-
# @param [Hash] options
|
|
97
|
-
def initialize(options)
|
|
98
|
-
source = options[:source]
|
|
99
|
-
destination = options[:destination]
|
|
100
|
-
@sources = {}
|
|
101
|
-
|
|
102
|
-
if File.exist?(source) && !File.directory?(source)
|
|
103
|
-
# single file
|
|
104
|
-
@sources[source] = (destination ||= source.gsub(/\.rb/, '.js'))
|
|
105
|
-
FileUtils.mkdir_p File.dirname(destination)
|
|
106
|
-
elsif File.exist?(source)
|
|
107
|
-
# directory
|
|
108
|
-
Dir.glob("#{source}/**/*.rb").each do |src|
|
|
109
|
-
if destination
|
|
110
|
-
dest = File.join(destination, File.basename(src, '.rb')) +'.js'
|
|
111
|
-
else
|
|
112
|
-
dest = File.join(File.dirname(src), File.basename(src, '.rb')) +'.js'
|
|
113
|
-
end
|
|
114
|
-
FileUtils.mkdir_p File.dirname(dest)
|
|
115
|
-
@sources[src] = dest
|
|
116
|
-
end
|
|
117
|
-
elsif /\*/.match source
|
|
118
|
-
puts "glob not yet supported"
|
|
119
|
-
else
|
|
120
|
-
raise "bad source"
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
# place each file => destination in here (glob + directory watch support)
|
|
125
|
-
|
|
126
|
-
@watch = options[:watch]
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
def build!
|
|
130
|
-
if @watch
|
|
131
|
-
puts "Watching for changes in files."
|
|
132
|
-
@sources.each do |source, destination|
|
|
133
|
-
build_file source, destination
|
|
134
|
-
end
|
|
135
|
-
loop do
|
|
136
|
-
@sources.each do |source, destination|
|
|
137
|
-
if File.stat(source).mtime > File.stat(destination).mtime
|
|
138
|
-
puts "change detected in #{source}"
|
|
139
|
-
build_file source, destination
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
begin
|
|
144
|
-
sleep 1
|
|
145
|
-
rescue Interrupt
|
|
146
|
-
puts
|
|
147
|
-
exit 0
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
else
|
|
151
|
-
@sources.each do |source, destination|
|
|
152
|
-
build_file source, destination
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
def build_file(source, destination)
|
|
158
|
-
# puts "need to build #{source} to #{destination}"
|
|
159
|
-
parser = Vienna::RubyParser.new source, File.read(source)
|
|
160
|
-
str = parser.build!
|
|
161
|
-
|
|
162
|
-
File.open(destination, 'w') do |out|
|
|
163
|
-
# fixme: quick hack.. we should be able to tell ruby parser that we want
|
|
164
|
-
# this code to be run (add (); ) by it being main, or something....
|
|
165
|
-
out.puts "#{str}.apply(opal.top_self);"
|
|
166
|
-
end
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
end
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# console.rb
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2010 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
require File.join(File.dirname(__FILE__), 'object')
|
|
28
|
-
|
|
29
|
-
module Opal
|
|
30
|
-
|
|
31
|
-
class Environment
|
|
32
|
-
|
|
33
|
-
# Used to represent the usual javascript console found in most browsers.
|
|
34
|
-
class Console < Object
|
|
35
|
-
|
|
36
|
-
def initialize(env)
|
|
37
|
-
super
|
|
38
|
-
self['log'] = proc { |msg| log(msg) }
|
|
39
|
-
self['error'] = proc { |msg| error(msg) }
|
|
40
|
-
self['info'] = proc { |msg| info(msg) }
|
|
41
|
-
self['warn'] = proc { |msg| warn(msg) }
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Log a regular message to the console.
|
|
45
|
-
#
|
|
46
|
-
# @example
|
|
47
|
-
# console.log "something"
|
|
48
|
-
#
|
|
49
|
-
def log(str = "")
|
|
50
|
-
puts str
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def error(str = "")
|
|
54
|
-
puts str
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def info(str = "")
|
|
58
|
-
puts str
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def warn(str = "")
|
|
62
|
-
puts str
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
data/lib/opal/opal/env/fs.rb
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# fs.rb
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2010 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
require File.join(File.dirname(__FILE__), 'object')
|
|
28
|
-
|
|
29
|
-
module Opal
|
|
30
|
-
|
|
31
|
-
class Environment
|
|
32
|
-
|
|
33
|
-
# File system access. The browser build of opal has simple methods of FS
|
|
34
|
-
# access/dir access simply to support require(), Dir.glob() and File.join().
|
|
35
|
-
# Server side opal aims to offer much of what Ruby offers.. reading and
|
|
36
|
-
# writing, etc. FS plays an intermediate role betweeen opal and the ruby
|
|
37
|
-
# runtime.
|
|
38
|
-
class FS < Object
|
|
39
|
-
|
|
40
|
-
def initialize(env)
|
|
41
|
-
super
|
|
42
|
-
# a hash of required files - filename => true????? er,, why not array?
|
|
43
|
-
@required_files = {}
|
|
44
|
-
self['require'] = require
|
|
45
|
-
self['getwd'] = getwd
|
|
46
|
-
|
|
47
|
-
setup_load_paths
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# Set up load paths.. basically add all our opals into the load path
|
|
51
|
-
def setup_load_paths
|
|
52
|
-
@load_paths = []
|
|
53
|
-
%w{spec}.each do |opal|
|
|
54
|
-
@load_paths << File.join(OPALS_PATH, 'opal', opal, 'lib')
|
|
55
|
-
end
|
|
56
|
-
# current dir is also in the load path..
|
|
57
|
-
@load_paths << Dir.getwd
|
|
58
|
-
@load_paths << ""
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def glob
|
|
62
|
-
proc do |glob|
|
|
63
|
-
Dir.glob(glob)
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def getwd
|
|
68
|
-
proc do
|
|
69
|
-
Dir.getwd
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# Require function from opal
|
|
74
|
-
def require
|
|
75
|
-
proc do |path|
|
|
76
|
-
# no extension? add .rb
|
|
77
|
-
path = "#{path}.rb" unless /.*\.(rb|js)$/.match(path)
|
|
78
|
-
# puts "need to require: #{path}"
|
|
79
|
-
file_path = nil
|
|
80
|
-
@load_paths.each do |load_path|
|
|
81
|
-
proposed = File.join load_path, path
|
|
82
|
-
# puts "trying: #{propos/ed}"
|
|
83
|
-
if File.exist? proposed
|
|
84
|
-
file_path = proposed
|
|
85
|
-
unless @required_files[file_path]
|
|
86
|
-
@required_files[file_path] = true
|
|
87
|
-
@environment.load_required_file file_path
|
|
88
|
-
end
|
|
89
|
-
break
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
return true if file_path
|
|
93
|
-
false
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
end
|