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
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# build_item.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
|
-
# An item to be build (ruby, css, image etc)
|
|
32
|
-
class BuildItem
|
|
33
|
-
|
|
34
|
-
include StructAccessors
|
|
35
|
-
|
|
36
|
-
# target
|
|
37
|
-
attr_reader :target
|
|
38
|
-
|
|
39
|
-
def initialize(target, options={})
|
|
40
|
-
# puts "making a new build item with filename: #{options[:filename]}"
|
|
41
|
-
@target = target
|
|
42
|
-
merge! options
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# Should this item be included in the build. Items might be to start, but
|
|
46
|
-
# might then be hidden. e.g, ruby files are first put in a copy stage, but
|
|
47
|
-
# then they are changed to a 'build:ruby' stage instead, so the inital item
|
|
48
|
-
# will become hidden.
|
|
49
|
-
def hidden?
|
|
50
|
-
self[:hidden] ||= false
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# For use with above: actually sets builditem to be hidden
|
|
54
|
-
def hide!
|
|
55
|
-
self[:hidden] = true
|
|
56
|
-
self
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# This is called whenever the build item is created. Uses 'entry:prepare'
|
|
60
|
-
# task
|
|
61
|
-
def prepare!
|
|
62
|
-
opalfile = target.opalfile
|
|
63
|
-
if opalfile.has_task? 'build_item:prepare'
|
|
64
|
-
opalfile.invoke 'build_item:prepare',
|
|
65
|
-
:build_item => self,
|
|
66
|
-
:target => target,
|
|
67
|
-
:config => target.config,
|
|
68
|
-
:project => target.project
|
|
69
|
-
end
|
|
70
|
-
self
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# Build the item
|
|
74
|
-
def build!
|
|
75
|
-
build_to build_path
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def stage!
|
|
79
|
-
build_to staging_path
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def build_to(dst_path)
|
|
83
|
-
raise "no build task defined for #{filename}" if build_task.nil?
|
|
84
|
-
|
|
85
|
-
# find build task
|
|
86
|
-
opalfile = target.opalfile
|
|
87
|
-
if !opalfile.has_task? build_task
|
|
88
|
-
raise "Could not build #{filename}: no task defined (#{build_task})"
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
opalfile.invoke build_task,
|
|
92
|
-
:build_item => self,
|
|
93
|
-
:target => target,
|
|
94
|
-
:config => target.config,
|
|
95
|
-
:project => target.project,
|
|
96
|
-
:src_path => source_path,
|
|
97
|
-
:src_paths => source_paths,
|
|
98
|
-
:dst_path => dst_path
|
|
99
|
-
|
|
100
|
-
self
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
end
|
|
104
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# hash_struct.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 HashStruct
|
|
32
|
-
|
|
33
|
-
include StructAccessors
|
|
34
|
-
|
|
35
|
-
def initialize(hash)
|
|
36
|
-
merge! hash
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
end
|
|
40
|
-
end
|
data/lib/opal/models/project.rb
DELETED
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# project.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
|
-
module Vienna
|
|
28
|
-
|
|
29
|
-
class Project
|
|
30
|
-
|
|
31
|
-
# full path to project
|
|
32
|
-
attr_reader :project_root
|
|
33
|
-
|
|
34
|
-
# build options
|
|
35
|
-
attr_reader :build_options
|
|
36
|
-
|
|
37
|
-
# the main target
|
|
38
|
-
attr_reader :main_target
|
|
39
|
-
|
|
40
|
-
def self.load project_path
|
|
41
|
-
if File.exists? File.join(project_path, 'Opalfile')
|
|
42
|
-
return new(project_path)
|
|
43
|
-
end
|
|
44
|
-
nil
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
BASE_OPALFILE = File.join(Vienna::PATH, 'Opalfile')
|
|
48
|
-
|
|
49
|
-
def initialize(project_root, build_options={})
|
|
50
|
-
|
|
51
|
-
# unless File.exists? File.join(project_root, 'Opalfile')
|
|
52
|
-
# raise "Not a valid project (no Opalfile)"
|
|
53
|
-
# end
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
@opalfile = nil
|
|
58
|
-
@config = nil
|
|
59
|
-
|
|
60
|
-
@build_options = build_options
|
|
61
|
-
@project_root = project_root
|
|
62
|
-
@targets = nil
|
|
63
|
-
|
|
64
|
-
# load_paths are where we might have an opal located - defaults to our
|
|
65
|
-
# system load paths and a 'opals' directory in the project itself. We add
|
|
66
|
-
# the opals dir to the start of the array, so any custom system opals will
|
|
67
|
-
# be used instead of the systems version (for custom/development means)
|
|
68
|
-
setup_load_paths
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
# lets begin by loading our root opalfile
|
|
72
|
-
# @opalfile = Opalfile.new(BASE_OPALFILE)
|
|
73
|
-
opalfile
|
|
74
|
-
# puts "\n\n\n\n######################################## ENV"
|
|
75
|
-
# p Opalfile.env
|
|
76
|
-
# puts "######################################## TASKS"
|
|
77
|
-
# puts @opalfile.tasks.each_key.map { |key| key }
|
|
78
|
-
# puts "######################################## DONE\n\n\n\n"
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def setup_load_paths
|
|
82
|
-
@load_paths = []
|
|
83
|
-
# first, add our system 'opals' directory
|
|
84
|
-
@load_paths << File.join(Vienna::PATH, 'opals')
|
|
85
|
-
# add all opals from 'opal', which are runtime, opal, browser, spec
|
|
86
|
-
@load_paths.unshift File.join(Vienna::PATH, 'opals', 'opal')
|
|
87
|
-
# if our project root has an 'opals' dir, add that.
|
|
88
|
-
local_opals = File.join(@project_root, 'opals')
|
|
89
|
-
if File.exist?(local_opals) and File.directory?(local_opals)
|
|
90
|
-
@load_paths.unshift local_opals
|
|
91
|
-
# hardcoded.. if we have an opal directory inside our opals, add each of
|
|
92
|
-
# those as we are using a development version of opal.
|
|
93
|
-
local_opal = File.join(local_opals, 'opal')
|
|
94
|
-
if File.exist?(local_opal) and File.directory?(local_opal)
|
|
95
|
-
@load_paths.unshift local_opal
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def project_name
|
|
101
|
-
@project_name ||= File.basename @project_root
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def inspect
|
|
105
|
-
"#<Vienna::Project #{File.basename(project_root)}>"
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
# Opalfile is a build task setup for each bundle, app, opal or theme. It
|
|
109
|
-
# allows the developer to setup custom build options and processes which
|
|
110
|
-
# can depend on the environment etc. Inspired by Buildfiles in Sproutcore.
|
|
111
|
-
def opalfile
|
|
112
|
-
return @opalfile if @opalfile
|
|
113
|
-
Opalfile.root_opalfile = BASE_OPALFILE
|
|
114
|
-
@opalfile = Opalfile.root_opalfile
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def config
|
|
118
|
-
@config
|
|
119
|
-
# ...
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
# Add some options to main config
|
|
123
|
-
def options(options={})
|
|
124
|
-
# options.each do |key, value|
|
|
125
|
-
opalfile.config project_name.to_sym, options
|
|
126
|
-
# end
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
# Add a new referenced target (target_name) from the given target. The given
|
|
130
|
-
# target is used as it might have a sub-vendor or sub-theme where the given
|
|
131
|
-
# target is actually stored.
|
|
132
|
-
def require_target(target_name, from_target)
|
|
133
|
-
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
# Every target. A target is a opal, theme, or application. Recursively find
|
|
137
|
-
# if needed.
|
|
138
|
-
def targets
|
|
139
|
-
# If we have already found them, just return them
|
|
140
|
-
return @targets if @targets
|
|
141
|
-
# hash of targets: target name to target instance
|
|
142
|
-
@targets = {}
|
|
143
|
-
# first we must add ourselves as a target - default is opal type
|
|
144
|
-
# application
|
|
145
|
-
# puts "need to add self as target"
|
|
146
|
-
target = add_target :target_name => File.basename(project_root),
|
|
147
|
-
:target_type => :opal,
|
|
148
|
-
:target_root => project_root,
|
|
149
|
-
:project => self,
|
|
150
|
-
:main_target => true
|
|
151
|
-
|
|
152
|
-
@main_target = target
|
|
153
|
-
# find all targets for this project_root with given config
|
|
154
|
-
find_targets_for target, config
|
|
155
|
-
|
|
156
|
-
# puts "finished finding targets"
|
|
157
|
-
# targets
|
|
158
|
-
@targets
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
# Find all targets relative to the given root_path with the given config
|
|
162
|
-
def find_targets_for the_target, config
|
|
163
|
-
# puts "looking for targets..... #{the_target.target_name} .. #{@targets.inspect}"
|
|
164
|
-
# p the_target.opalfile
|
|
165
|
-
# puts "looking for targets"
|
|
166
|
-
# puts the_target.required.inspect
|
|
167
|
-
# puts "down to here"
|
|
168
|
-
the_target.required.each do |target|
|
|
169
|
-
# if we already know about the target, skip it
|
|
170
|
-
next if @targets.has_key?(target.to_s)
|
|
171
|
-
# currently only look in our own opals/ root
|
|
172
|
-
# try_path = File.join(Vienna::PATH, 'opals', target.to_s)
|
|
173
|
-
found = @load_paths.each do |load_path|
|
|
174
|
-
try_path = File.join load_path, target.to_s
|
|
175
|
-
if File.exist?(try_path) and File.directory?(try_path)
|
|
176
|
-
# found target, so add it
|
|
177
|
-
target = add_target :target_name => target.to_s,
|
|
178
|
-
:target_type => :opal,
|
|
179
|
-
:target_root => try_path,
|
|
180
|
-
:project => self
|
|
181
|
-
# search this target for all dependencies
|
|
182
|
-
find_targets_for target, config
|
|
183
|
-
break true
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
|
-
unless found
|
|
187
|
-
raise "Could not find required opal #{target}. (Required in #{the_target.target_name})"
|
|
188
|
-
end
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
# puts "and all the way to here"
|
|
192
|
-
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
# add a target
|
|
196
|
-
def add_target(options)
|
|
197
|
-
targets[options[:target_name]] = Target.new options
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
def clean!
|
|
201
|
-
main_target.opalfile.invoke 'build:clean',
|
|
202
|
-
:project => self,
|
|
203
|
-
:target => main_target,
|
|
204
|
-
:config => main_target.config
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
def build!()
|
|
208
|
-
puts "load_paths:"
|
|
209
|
-
puts @load_paths
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
# get main target and put it at the end
|
|
213
|
-
all_targets = targets.each_value.to_a
|
|
214
|
-
|
|
215
|
-
# puts "all of our targets:"
|
|
216
|
-
|
|
217
|
-
# puts all_targets
|
|
218
|
-
|
|
219
|
-
all_targets.push all_targets.slice!(all_targets.index @main_target)
|
|
220
|
-
all_targets.each do |target|
|
|
221
|
-
|
|
222
|
-
# puts "\n############################################################"
|
|
223
|
-
# puts "# #{target.target_name}"
|
|
224
|
-
# puts "############################################################\n"
|
|
225
|
-
# prepare
|
|
226
|
-
target.prepare!
|
|
227
|
-
# go through and build each to get list of build_items
|
|
228
|
-
target.build!
|
|
229
|
-
end
|
|
230
|
-
|
|
231
|
-
# only once we have built all our targets do we run the pacakge command
|
|
232
|
-
# because some reliances will mean opal etc are not available until every
|
|
233
|
-
# opal is built
|
|
234
|
-
# puts "main target.."
|
|
235
|
-
main_target.opalfile.invoke 'build:package',
|
|
236
|
-
:project => self,
|
|
237
|
-
:target => main_target,
|
|
238
|
-
:config => main_target.config
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
# def get the build mode
|
|
242
|
-
def build_mode
|
|
243
|
-
@build_options[:build_mode] || :debug
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
# build root. by default this is the root of the main target, but can be
|
|
247
|
-
# custom
|
|
248
|
-
def build_root
|
|
249
|
-
@build_options[:build_root] || @main_target.target_root
|
|
250
|
-
end
|
|
251
|
-
end
|
|
252
|
-
end
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# struct_accessors.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
|
-
module Vienna
|
|
28
|
-
|
|
29
|
-
module StructAccessors
|
|
30
|
-
|
|
31
|
-
def method_missing(accessor_name, *args)
|
|
32
|
-
accessor_name = accessor_name.to_s
|
|
33
|
-
|
|
34
|
-
# accessor =
|
|
35
|
-
if accessor_name =~ /=$/
|
|
36
|
-
accessor_name = accessor_name[0..-2]
|
|
37
|
-
self[accessor_name] = args[0]
|
|
38
|
-
else # acessor
|
|
39
|
-
self[accessor_name]
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def merge!(options)
|
|
44
|
-
@__struct_accessors__ ||= {}
|
|
45
|
-
@__struct_accessors__.merge! options
|
|
46
|
-
self
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def [](key)
|
|
50
|
-
@__struct_accessors__[key.to_sym]
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def []=(key, value)
|
|
54
|
-
@__struct_accessors__[key.to_sym] = value
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
end
|
|
58
|
-
end
|