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,88 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# attributes.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
|
-
|
|
28
|
-
class Element
|
|
29
|
-
|
|
30
|
-
# @group Accessing Element Attributes
|
|
31
|
-
|
|
32
|
-
# Retreive the {DataAttributeAccessor} instance for this element.
|
|
33
|
-
#
|
|
34
|
-
# The returned object can then be used to modify/retrieve data items from the
|
|
35
|
-
# element itself.
|
|
36
|
-
#
|
|
37
|
-
# @example HTML
|
|
38
|
-
# !!!plain
|
|
39
|
-
# <div id="some_id" data-method="delete"></div>
|
|
40
|
-
#
|
|
41
|
-
# @example Accessing data attributes
|
|
42
|
-
# elem = Document[:some_id]
|
|
43
|
-
# puts elem.data[:method]
|
|
44
|
-
# # => "delete"
|
|
45
|
-
#
|
|
46
|
-
# @return [DataAttributeAccessor] the attribute accessor
|
|
47
|
-
def data
|
|
48
|
-
@data ||= DataAttributeAccessor.new self
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
class DataAttributeAccessor
|
|
52
|
-
|
|
53
|
-
def initialize(element)
|
|
54
|
-
@element = element
|
|
55
|
-
`#{self}.__element__ = #{element}.__element__;`
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Retrieve the given `key`. Returns the key as a {String} if it exists, or
|
|
59
|
-
# `nil` otherwise.
|
|
60
|
-
#
|
|
61
|
-
# @return [String, nil] the data from the element.
|
|
62
|
-
def [](key)
|
|
63
|
-
nil
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Sets the new value for the given key
|
|
67
|
-
#
|
|
68
|
-
# @param [String, Symbol] key
|
|
69
|
-
# @param [String] value
|
|
70
|
-
def []=(key, value)
|
|
71
|
-
nil
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def has_key?(key)
|
|
75
|
-
false
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def include?(key)
|
|
79
|
-
has_key? key
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def member?(key)
|
|
83
|
-
has_key? key
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
# @endgroup
|
|
88
|
-
end
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# css.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
|
-
|
|
28
|
-
class Element
|
|
29
|
-
|
|
30
|
-
# @group Styling of the Element
|
|
31
|
-
|
|
32
|
-
# Set the given style property +name+ to the given +value+ for +element+.
|
|
33
|
-
# Name should/can be ruby case, or css-property or camelcase. Every property
|
|
34
|
-
# will be converted to the correct format within this method.
|
|
35
|
-
#
|
|
36
|
-
# @param [Element] element the element to set the style on
|
|
37
|
-
# @param [Symbol, String] name the style property name to set
|
|
38
|
-
# @param [String, Number] value the value to set
|
|
39
|
-
# @return [Element] returns +element+
|
|
40
|
-
def self.css(element, name, value = false)
|
|
41
|
-
# FIXME: should really check if comment or text node, and then skip if so.
|
|
42
|
-
|
|
43
|
-
# make sure we are dealing with a string
|
|
44
|
-
name = name.to_s
|
|
45
|
-
# get the actual style property (IE uses the element itself)
|
|
46
|
-
style = `#{element}.__element__.style || #{element}.__element__`
|
|
47
|
-
# convert to camelCaseStyle
|
|
48
|
-
name = `#{name}.replace(/[_-]\D/g, function(res) {
|
|
49
|
-
return res.charAt(1).toUpperCase();
|
|
50
|
-
});`
|
|
51
|
-
|
|
52
|
-
if value == false
|
|
53
|
-
# no value, so retrieve (nil is a good value: set to :none)
|
|
54
|
-
`return #{style}[#{name}] || "";`
|
|
55
|
-
else
|
|
56
|
-
# set style property
|
|
57
|
-
`return #{style}[#{name}] = #{value};`
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
#
|
|
62
|
-
# @param {Hash} styles
|
|
63
|
-
#
|
|
64
|
-
def css(styles = nil)
|
|
65
|
-
case styles
|
|
66
|
-
when nil
|
|
67
|
-
@style ||= StyleDeclaration.new self
|
|
68
|
-
when Hash
|
|
69
|
-
styles.each { |style, value| Element.css self, style, value }
|
|
70
|
-
when String, Symbol
|
|
71
|
-
Element.css self, styles
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
alias_method :style, :css
|
|
76
|
-
|
|
77
|
-
# Checks whether the receiver has the passed in class_name
|
|
78
|
-
#
|
|
79
|
-
# @example Checking for classes
|
|
80
|
-
# # Assuming the following HTML
|
|
81
|
-
# # <div id="some_id" class="first second"></div>
|
|
82
|
-
#
|
|
83
|
-
# elem = Document['some_id']
|
|
84
|
-
#
|
|
85
|
-
# elem.has_class? 'first'
|
|
86
|
-
# # => true
|
|
87
|
-
#
|
|
88
|
-
# elem.has_class? 'third'
|
|
89
|
-
# # => false
|
|
90
|
-
#
|
|
91
|
-
# @param [String, Symbol] class_name the class_name to check
|
|
92
|
-
# @return [true, false] if the element has the given class_name
|
|
93
|
-
def has_class?(class_name)
|
|
94
|
-
self.class_name.__contains__ class_name.to_s, " "
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# Adds the given class_name to the receivers' classes, unless the class
|
|
98
|
-
# already have the class
|
|
99
|
-
#
|
|
100
|
-
# @param [String, Symbol] class_name the class_name to add
|
|
101
|
-
# @return [Element] returns the receiver
|
|
102
|
-
def add_class(class_name)
|
|
103
|
-
self.class_name += " #{class_name}" unless has_class? class_name
|
|
104
|
-
self
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
# Adds each of the given class_names using {#add_class}.
|
|
108
|
-
#
|
|
109
|
-
# @param [Array<String, Symbol>] class_names the list of class_names
|
|
110
|
-
# @return [Element] returns the receiver
|
|
111
|
-
def add_classes(*class_names)
|
|
112
|
-
class_names.each do |class_name|
|
|
113
|
-
add_class class_name
|
|
114
|
-
end
|
|
115
|
-
self
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
# Remove the given class_name from the element, if it has the class_name
|
|
119
|
-
#
|
|
120
|
-
# @param [String, Symbol] class_name the class_name to remove
|
|
121
|
-
# @return [Element] returns the receiver
|
|
122
|
-
def remove_class(class_name)
|
|
123
|
-
class_name = class_name.to_s
|
|
124
|
-
`#{self}.__element__.className = #{self.class_name}.replace(new RegExp('(^|\\s)' + #{class_name} + '(?:\\s|$)'), '$1');`
|
|
125
|
-
self
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
# Adds the given class_name to the receiver if it does not already have the
|
|
129
|
-
# class_name, otherwise removes it.
|
|
130
|
-
#
|
|
131
|
-
# @param [String, Symbol] class_name the class_name to toggle
|
|
132
|
-
# @return [Element] returns the receiver
|
|
133
|
-
def toggle_class(class_name)
|
|
134
|
-
class_name = class_name.to_s
|
|
135
|
-
has_class?(class_name) ? remove_class(class_name) : add_class(class_name)
|
|
136
|
-
self
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
# As we overwrite #class, this allows us to still access its functionality
|
|
140
|
-
alias_method :__class__, :class
|
|
141
|
-
|
|
142
|
-
# Set the class name. Here we do not append, just rewrite the entire class
|
|
143
|
-
# name.
|
|
144
|
-
#
|
|
145
|
-
# @param [String] class_name the class to set
|
|
146
|
-
# @return [Elements] returns the receiver
|
|
147
|
-
def class_name=(class_name)
|
|
148
|
-
`#{self}.__element__.className = #{class_name}.toString();`
|
|
149
|
-
self
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
alias_method `#{self}.Y('class=')`, :class_name=
|
|
153
|
-
|
|
154
|
-
# Returns the CSS class name for the receiver. See {#__class__} for default
|
|
155
|
-
# access.
|
|
156
|
-
#
|
|
157
|
-
# @return [String] returns class name
|
|
158
|
-
def class
|
|
159
|
-
`return #{self}.__element__.className || "";`
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
alias_method :class_name, :class
|
|
163
|
-
|
|
164
|
-
# set class names from hash
|
|
165
|
-
def set_class_names(class_names)
|
|
166
|
-
current = self.class_name.split ' '
|
|
167
|
-
|
|
168
|
-
class_names.each do |name, flag|
|
|
169
|
-
if current.include? name
|
|
170
|
-
unless flag
|
|
171
|
-
current.delete name
|
|
172
|
-
end
|
|
173
|
-
else
|
|
174
|
-
if flag
|
|
175
|
-
current << name
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
self.class_name = current.join(" ")
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
# Returns `true` if the receiver is visible, or `false` otherwise.
|
|
184
|
-
#
|
|
185
|
-
# @example HTML
|
|
186
|
-
# !!!plain
|
|
187
|
-
# <div id="foo" style="display: none;"></div>
|
|
188
|
-
# <div id="bar"></div>
|
|
189
|
-
#
|
|
190
|
-
# @example Ruby
|
|
191
|
-
# Document[:foo].visible?
|
|
192
|
-
# # => false
|
|
193
|
-
# Document[:bar].visible?
|
|
194
|
-
# # => true
|
|
195
|
-
#
|
|
196
|
-
# @return [Boolean]
|
|
197
|
-
def visible?
|
|
198
|
-
Element.css(self, 'display') != "none"
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
# Returns `true` if the receiver is hidden, `false` otherwise.
|
|
202
|
-
#
|
|
203
|
-
# @example HTML
|
|
204
|
-
# !!!plain
|
|
205
|
-
# <div id="foo" style="display: none;"></div>
|
|
206
|
-
# <div id="bar"></div>
|
|
207
|
-
#
|
|
208
|
-
# @example Ruby
|
|
209
|
-
# Document[:foo].hidden?
|
|
210
|
-
# # => true
|
|
211
|
-
# Document[:bar].hidden?
|
|
212
|
-
# # => false
|
|
213
|
-
#
|
|
214
|
-
# @return [Boolean]
|
|
215
|
-
def hidden?
|
|
216
|
-
Element.css(self, 'display') == "none"
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
# Hides the receiver in the DOM using the `display = none;` property. Returns
|
|
220
|
-
# the receiver for chaining.
|
|
221
|
-
#
|
|
222
|
-
# @example HTML
|
|
223
|
-
# !!!plain
|
|
224
|
-
# <div id='foo'></div>
|
|
225
|
-
#
|
|
226
|
-
# @example Ruby
|
|
227
|
-
# Document[:foo].hide
|
|
228
|
-
# # => #<Element div, id='foo'> (and is now hidden)
|
|
229
|
-
#
|
|
230
|
-
# @return [Element] returns the receiver
|
|
231
|
-
def hide
|
|
232
|
-
Element.css self, :display, 'none'
|
|
233
|
-
self
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
# Shows the receiver in the DOM using the `display = ''` property. Returns the
|
|
237
|
-
# receiver for chaining.
|
|
238
|
-
#
|
|
239
|
-
# @example HTML
|
|
240
|
-
# !!!plain
|
|
241
|
-
# <div id='foo' style='display:none'></div>
|
|
242
|
-
#
|
|
243
|
-
# @example Ruby
|
|
244
|
-
# Document[:foo].show
|
|
245
|
-
# # => #<Element div, id='foo'> (and is now visible)
|
|
246
|
-
#
|
|
247
|
-
# @return [Element] returns the receiver
|
|
248
|
-
def show
|
|
249
|
-
Element.css self, :display, ''
|
|
250
|
-
self
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
# Toggles the visible state of the receiver by checking its current
|
|
254
|
-
# {#visible?} state. If currently visible, the element will become hidden, or
|
|
255
|
-
# if currently hidden, the element will become visible.
|
|
256
|
-
#
|
|
257
|
-
# @return [Element] returns the receiver
|
|
258
|
-
def toggle
|
|
259
|
-
visible? ? hide : show
|
|
260
|
-
self
|
|
261
|
-
end
|
|
262
|
-
|
|
263
|
-
# Set the opacity of the receiver
|
|
264
|
-
#
|
|
265
|
-
# @return [Element] returns the receiver
|
|
266
|
-
def opacity=(opacity)
|
|
267
|
-
raise "not implemented"
|
|
268
|
-
end
|
|
269
|
-
|
|
270
|
-
# A hash like interface for setting and retreiving CSS properties for the
|
|
271
|
-
# dom element it represents.
|
|
272
|
-
class StyleDeclaration
|
|
273
|
-
|
|
274
|
-
# Initialize witht he given {Element} instance.
|
|
275
|
-
#
|
|
276
|
-
# @param [Element] element
|
|
277
|
-
def initialize(element)
|
|
278
|
-
`#{self}.__element__ = #{element}.__element__;`
|
|
279
|
-
`#{self}.__style__ = #{element}.__element__.style || #{element}.__element__;`
|
|
280
|
-
end
|
|
281
|
-
|
|
282
|
-
def [](style_name)
|
|
283
|
-
Element.css self, style_name
|
|
284
|
-
end
|
|
285
|
-
|
|
286
|
-
def []=(style_name, value)
|
|
287
|
-
Element.css self, style_name, value
|
|
288
|
-
end
|
|
289
|
-
end
|
|
290
|
-
end
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# form.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
|
-
|
|
28
|
-
class Element
|
|
29
|
-
# @group Dealing with Forms and Input Elements
|
|
30
|
-
|
|
31
|
-
# Disables the receiver. The status of this property can be checked with
|
|
32
|
-
# either {#enabled?} or {#disabled?}.
|
|
33
|
-
#
|
|
34
|
-
# @return [Element] returns self
|
|
35
|
-
def disable
|
|
36
|
-
`#{self}.__element__.disabled = true;`
|
|
37
|
-
self
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Enables the receiver. The status of this property can be checked with
|
|
41
|
-
# either {#enabled?} or {#disabled?}.
|
|
42
|
-
#
|
|
43
|
-
# @return [Element] returns self
|
|
44
|
-
def enable
|
|
45
|
-
`#{self}.__element__.disabled = false;`
|
|
46
|
-
self
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Enables or disables the receiver as appropriate. This is a generic method
|
|
50
|
-
# to achieve the functionality of {#disable} and {#enable}.
|
|
51
|
-
#
|
|
52
|
-
# @return [Element] returns self
|
|
53
|
-
def enabled=(flag)
|
|
54
|
-
flag ? enable : disable
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# Returns `true` if the receiver is enabled, `false` otherwise.
|
|
58
|
-
#
|
|
59
|
-
# @return [Boolean]
|
|
60
|
-
def enabled?
|
|
61
|
-
`return #{self}.__element__.disabled ? #{false} : #{true};`
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# Returns `true` if the receiver is disabled, `false` otherwise.
|
|
65
|
-
#
|
|
66
|
-
# @return [Boolean]
|
|
67
|
-
def disabled?
|
|
68
|
-
`return #{self}.__element__.disabled ? #{true} : #{false};`
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# Gives the receiver keyboard focus, and then returns the receiver.
|
|
72
|
-
#
|
|
73
|
-
# @return [Element] returns receiver
|
|
74
|
-
def focus
|
|
75
|
-
`#{self}.__element__.focus();`
|
|
76
|
-
self
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# Selects all the text in the receiver, and then returns `self`.
|
|
80
|
-
#
|
|
81
|
-
# @return [Element] returns receiver
|
|
82
|
-
def select
|
|
83
|
-
`#{self}.__element__.select();`
|
|
84
|
-
self
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def value=(value)
|
|
88
|
-
`var elem = #{self}.__element__, tag = elem.tagName.toLowerCase();
|
|
89
|
-
if (tag === 'input') {
|
|
90
|
-
var type = #{self}.__element__.type.toLowerCase();
|
|
91
|
-
if (type == 'checkbox' || type == 'radio') {
|
|
92
|
-
throw "need to handle checkbox/radio";
|
|
93
|
-
} else {
|
|
94
|
-
#{self}.__element__.value = #{value};
|
|
95
|
-
}
|
|
96
|
-
} else if (tag == 'textarea') {
|
|
97
|
-
elem.value = #{value};
|
|
98
|
-
}`
|
|
99
|
-
value
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
# Returns the value of the receiver, whose type will depend on the receiver.
|
|
103
|
-
# Text inputs and textareas will return a string, checkboxes and radio buttons
|
|
104
|
-
# will return a boolean.
|
|
105
|
-
#
|
|
106
|
-
# @return [Object] value of receiver
|
|
107
|
-
def value
|
|
108
|
-
`var elem = #{self}.__element__, tag = elem.tagName.toLowerCase();
|
|
109
|
-
if (tag == 'input') {
|
|
110
|
-
var type = elem.type.toLowerCase();
|
|
111
|
-
if (type == 'checkbox' || type == 'radio') {
|
|
112
|
-
throw "need to handle checkbox.radio"
|
|
113
|
-
} else {
|
|
114
|
-
return elem.value;
|
|
115
|
-
}
|
|
116
|
-
} else if (tag == 'textarea') {
|
|
117
|
-
return elem.value;
|
|
118
|
-
}
|
|
119
|
-
`
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
# Checkboxes and radio buttons can be checked, and this returns their state.
|
|
123
|
-
# The result of this method is undetermined for normal input elements that do
|
|
124
|
-
# not have a checked state.
|
|
125
|
-
#
|
|
126
|
-
# @return [Boolean]
|
|
127
|
-
def checked?
|
|
128
|
-
`return #{self}.__element__.checked ? #{true} : #{false};`
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# Same as above
|
|
132
|
-
def on?
|
|
133
|
-
checked?
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
# see above
|
|
137
|
-
def off?
|
|
138
|
-
!checked?
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
def checked=(flag)
|
|
142
|
-
# ...
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
# @endgroup
|
|
146
|
-
end
|