opal 0.3.6 → 0.3.9

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.
Files changed (98) hide show
  1. data/README.md +69 -97
  2. data/bin/opal +2 -2
  3. data/{lib/core → corelib}/array.rb +85 -56
  4. data/corelib/boolean.rb +20 -0
  5. data/corelib/class.rb +58 -0
  6. data/{lib → corelib}/core.rb +2 -50
  7. data/corelib/dir.rb +22 -0
  8. data/{lib/core → corelib}/enumerable.rb +0 -0
  9. data/corelib/error.rb +19 -0
  10. data/{lib/core → corelib}/file.rb +7 -9
  11. data/{lib/core → corelib}/hash.rb +104 -144
  12. data/{lib/core → corelib}/kernel.rb +38 -44
  13. data/corelib/load_order +21 -0
  14. data/{lib/core → corelib}/match_data.rb +0 -0
  15. data/{lib/core → corelib}/module.rb +12 -8
  16. data/{lib/core → corelib}/nil_class.rb +2 -2
  17. data/{lib/core → corelib}/numeric.rb +37 -100
  18. data/corelib/object.rb +37 -0
  19. data/{lib/core → corelib}/proc.rb +3 -3
  20. data/corelib/range.rb +27 -0
  21. data/{lib/core → corelib}/regexp.rb +1 -1
  22. data/{lib/core → corelib}/string.rb +16 -107
  23. data/{lib/core → corelib}/top_self.rb +0 -0
  24. data/lib/opal.rb +7 -0
  25. data/lib/opal/browserify.rb +34 -0
  26. data/{opal_lib → lib}/opal/builder.rb +70 -24
  27. data/lib/opal/command.rb +52 -0
  28. data/lib/opal/context.rb +197 -0
  29. data/{opal_lib/opal/ruby/parser.rb → lib/opal/lexer.rb} +20 -4
  30. data/{opal_lib/opal/ruby → lib/opal}/nodes.rb +238 -127
  31. data/lib/opal/parser.rb +4894 -0
  32. data/{opal_lib/opal/ruby/ruby_parser.y → lib/opal/parser.y} +38 -18
  33. data/lib/rbp.rb +2 -0
  34. data/lib/rbp/package.rb +49 -0
  35. data/runtime/class.js +216 -189
  36. data/runtime/fs.js +2 -2
  37. data/runtime/init.js +242 -244
  38. data/runtime/loader.js +78 -99
  39. data/runtime/module.js +34 -40
  40. data/runtime/post.js +2 -2
  41. data/runtime/pre.js +1 -1
  42. data/runtime/runtime.js +129 -135
  43. data/{lib → stdlib}/dev.rb +10 -10
  44. data/{lib → stdlib}/racc/parser.rb +0 -6
  45. data/{lib → stdlib}/strscan.rb +4 -4
  46. metadata +57 -105
  47. data/lib/core/basic_object.rb +0 -51
  48. data/lib/core/class.rb +0 -38
  49. data/lib/core/dir.rb +0 -26
  50. data/lib/core/error.rb +0 -75
  51. data/lib/core/false_class.rb +0 -81
  52. data/lib/core/object.rb +0 -6
  53. data/lib/core/range.rb +0 -27
  54. data/lib/core/symbol.rb +0 -42
  55. data/lib/core/true_class.rb +0 -41
  56. data/lib/ospec.rb +0 -7
  57. data/lib/ospec/autorun.rb +0 -8
  58. data/lib/ospec/dsl.rb +0 -15
  59. data/lib/ospec/example.rb +0 -11
  60. data/lib/ospec/example/before_and_after_hooks.rb +0 -56
  61. data/lib/ospec/example/errors.rb +0 -17
  62. data/lib/ospec/example/example_group.rb +0 -12
  63. data/lib/ospec/example/example_group_factory.rb +0 -18
  64. data/lib/ospec/example/example_group_hierarchy.rb +0 -21
  65. data/lib/ospec/example/example_group_methods.rb +0 -100
  66. data/lib/ospec/example/example_group_proxy.rb +0 -15
  67. data/lib/ospec/example/example_methods.rb +0 -46
  68. data/lib/ospec/example/example_proxy.rb +0 -18
  69. data/lib/ospec/expectations.rb +0 -19
  70. data/lib/ospec/expectations/errors.rb +0 -8
  71. data/lib/ospec/expectations/fail_with.rb +0 -9
  72. data/lib/ospec/expectations/handler.rb +0 -33
  73. data/lib/ospec/helpers/scratch.rb +0 -18
  74. data/lib/ospec/matchers.rb +0 -24
  75. data/lib/ospec/matchers/be.rb +0 -1
  76. data/lib/ospec/matchers/generated_descriptions.rb +0 -20
  77. data/lib/ospec/matchers/operator_matcher.rb +0 -54
  78. data/lib/ospec/matchers/raise_error.rb +0 -38
  79. data/lib/ospec/runner.rb +0 -90
  80. data/lib/ospec/runner/example_group_runner.rb +0 -41
  81. data/lib/ospec/runner/formatter/html_formatter.rb +0 -139
  82. data/lib/ospec/runner/formatter/terminal_formatter.rb +0 -48
  83. data/lib/ospec/runner/options.rb +0 -34
  84. data/lib/ospec/runner/reporter.rb +0 -82
  85. data/opal_lib/opal.rb +0 -16
  86. data/opal_lib/opal/build_methods.rb +0 -51
  87. data/opal_lib/opal/bundle.rb +0 -70
  88. data/opal_lib/opal/command.rb +0 -68
  89. data/opal_lib/opal/context.rb +0 -81
  90. data/opal_lib/opal/context/console.rb +0 -10
  91. data/opal_lib/opal/context/file_system.rb +0 -34
  92. data/opal_lib/opal/context/loader.rb +0 -135
  93. data/opal_lib/opal/gem.rb +0 -84
  94. data/opal_lib/opal/rake/builder_task.rb +0 -44
  95. data/opal_lib/opal/rake/spec_task.rb +0 -32
  96. data/opal_lib/opal/ruby/ruby_parser.rb +0 -4862
  97. data/opal_lib/opal/version.rb +0 -4
  98. data/runtime/debug.js +0 -84
@@ -1,81 +0,0 @@
1
- # Instances of `FalseClass` represent logically false values. There may
2
- # only be one instance of `FalseClass`, which is the global value
3
- # `false`. Attempts to create a new instance will yield an error.
4
- # `FalseClass` provides methods to perform logical operations with other
5
- # ruby objects.
6
- #
7
- # Implementation details
8
- # ----------------------
9
- #
10
- # Due to the way messages are passed inside opal, `false` is not
11
- # actually toll-free bridged onto the native javascript `false` value.
12
- # In javascript, `false` and `true` are both instances of the Boolean
13
- # type, which means they would need to share the same method_table in
14
- # opal, which would remove their ability to be true instances of Rubys'
15
- # `TrueClass` or `FalseClass`.
16
- #
17
- # As javascripts `false` is not actually the value used in opal, passing
18
- # the native `false` value will cause errors when messages are sent to
19
- # it. Within a file directly loaded by opal, `Qfalse` is a free variable
20
- # that points to the actualy ruby instance of this class. This variable
21
- # may be passed around freely.
22
- class FalseClass
23
-
24
- # Returns a string representation of `false`, which is simply
25
- # `"false"`.
26
- #
27
- # @example
28
- #
29
- # false.to_s # => "false"
30
- #
31
- # @return [String]
32
- def to_s
33
- "false"
34
- end
35
-
36
- # And; This always returns `false`.
37
- #
38
- # @example
39
- #
40
- # false & true # => false
41
- # false & nil # => false
42
- # false & false # => false
43
- #
44
- # @return [false]
45
- def &(other)
46
- false
47
- end
48
-
49
- # Or; If `other` is `false` or `nil`, returns `false`, otherwise
50
- # returns `true`.
51
- #
52
- # @example
53
- #
54
- # false & false # => false
55
- # false & nil # => false
56
- # false & true # => true
57
- # false & [1, 2, 3] # => true
58
- #
59
- # @return [true, false]
60
- def |(other)
61
- `return other.$r ? Qtrue : Qfalse;`
62
- end
63
-
64
- # Exclusive Or; If `other` is `false` or `nil`, then it returns
65
- # `false`, otherwise returns `true`.
66
- #
67
- # @example
68
- #
69
- # false & false # => false
70
- # false & nil # => false
71
- # false & true # => true
72
- # false & [1, 2, 3] # => true
73
- #
74
- # @return [true, false]
75
- def ^(other)
76
- `return other.$r ? Qtrue : Qfalse;`
77
- end
78
- end
79
-
80
- FALSE = false
81
-
data/lib/core/object.rb DELETED
@@ -1,6 +0,0 @@
1
- # Core object in hierarchy. Most of the implementation of this core
2
- # object are implemented in {Kernel}.
3
- class Object < BasicObject
4
-
5
- end
6
-
data/lib/core/range.rb DELETED
@@ -1,27 +0,0 @@
1
- class Range
2
-
3
- def begin
4
- `return self.$beg;`
5
- end
6
-
7
- alias_method :first, :begin
8
-
9
- def end
10
- `return self.$end;`
11
- end
12
-
13
- def to_s
14
- `var str = #{`self.$beg`.to_s};
15
- var str2 = #{`self.$end`.to_s};
16
- var join = self.$exc ? '...' : '..';
17
- return str + join + str2;`
18
- end
19
-
20
- def inspect
21
- `var str = #{`self.$beg`.inspect};
22
- var str2 = #{`self.$end`.inspect};
23
- var join = self.$exc ? '...' : '..';
24
- return str + join + str2;`
25
- end
26
- end
27
-
data/lib/core/symbol.rb DELETED
@@ -1,42 +0,0 @@
1
- # `Symbols` are used to represent names and can often be used in place
2
- # of enum variables used in other languages. Symbols can be constructed
3
- # using their literal syntax or one of the various `to_sym` methods
4
- # found in the standard library:
5
- #
6
- # :some_symbol # => :some_symbol
7
- # "a_string".to_sym # => :a_string
8
- #
9
- # It is important to note that regardless of the context that created
10
- # them, two symbols with the same name will always be the exact same
11
- # object. The opal runtime guarantees this as it creates them. If one
12
- # exists already with the required name, it will be returned instead of
13
- # creating a new one.
14
- #
15
- # Implementation details
16
- # ----------------------
17
- #
18
- # Internally, symbols are just javascript strings. They are constructed
19
- # with the javascript `new String(symbol_name)` syntax. Once created,
20
- # they have their class and method tables altered to point towards the
21
- # {Symbol} class. This avoids them conflicting with regular strings.
22
- #
23
- # Symbols are implemented as strings for performance. They are only
24
- # created once per name, so past the initial creation phase, which
25
- # happends just the once, they perform as quickly as just passig them
26
- # between method calls, and as strings their native prototype offers all
27
- # the required functionality needed by the class.
28
- class Symbol
29
-
30
- def inspect
31
- `return ':' + self.toString();`
32
- end
33
-
34
- def to_sym
35
- self
36
- end
37
-
38
- def intern
39
- self
40
- end
41
- end
42
-
@@ -1,41 +0,0 @@
1
- # Instances of `TrueClass` represent logically true values. There may
2
- # only be one instance of `TrueClass`, which is the global value
3
- # `true`. Attempts to create a new instance will yield an error.
4
- # `TrueClass` provides methods to perform logical operations with other
5
- # ruby objects.
6
- #
7
- # Implementation details
8
- # ----------------------
9
- #
10
- # Due to the way messages are passed inside opal, `true` is not
11
- # actually toll-free bridged onto the native javascript `true` value.
12
- # In javascript, `true` and `true` are both instances of the Boolean
13
- # type, which means they would need to share the same method_table in
14
- # opal, which would remove their ability to be true instances of Rubys'
15
- # `TrueClass` or `FalseClass`.
16
- #
17
- # As javascripts `true` is not actually the value used in opal, passing
18
- # the native `true` value will cause errors when messages are sent to
19
- # it. Within a file directly loaded by opal, `Qtrue` is a free variable
20
- # that points to the actualy ruby instance of this class. This variable
21
- # may be passed around freely.
22
- class TrueClass
23
- def to_s
24
- "true"
25
- end
26
-
27
- def &(other)
28
- `return other.$r ? Qtrue : Qfalse;`
29
- end
30
-
31
- def |(other)
32
- true
33
- end
34
-
35
- def ^(other)
36
- `return other.$r ? Qfalse : Qtrue;`
37
- end
38
- end
39
-
40
- TRUE = true
41
-
data/lib/ospec.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'ospec/matchers'
2
- require 'ospec/expectations'
3
- require 'ospec/example'
4
- require 'ospec/runner'
5
- require 'ospec/dsl'
6
- require 'ospec/helpers/scratch'
7
-
data/lib/ospec/autorun.rb DELETED
@@ -1,8 +0,0 @@
1
- require 'ospec'
2
-
3
- if RUBY_ENGINE == 'opal-browser'
4
- Spec::Runner.autorun_browser
5
- else
6
- Spec::Runner.autorun
7
- end
8
-
data/lib/ospec/dsl.rb DELETED
@@ -1,15 +0,0 @@
1
- module Spec
2
-
3
- module DSL
4
-
5
- module Main
6
-
7
- def describe(name, &block)
8
- Spec::Example::ExampleGroupFactory.create_example_group name, &block
9
- end
10
- end # Main
11
- end
12
- end
13
-
14
- include Spec::DSL::Main
15
-
data/lib/ospec/example.rb DELETED
@@ -1,11 +0,0 @@
1
-
2
- require 'ospec/example/before_and_after_hooks'
3
- require 'ospec/example/example_group_proxy'
4
- require 'ospec/example/example_proxy'
5
- require 'ospec/example/example_group_methods'
6
- require 'ospec/example/example_group_factory'
7
- require 'ospec/example/example_group_hierarchy'
8
- require 'ospec/example/example_methods'
9
- require 'ospec/example/example_group'
10
- require 'ospec/example/errors'
11
-
@@ -1,56 +0,0 @@
1
-
2
- module Spec
3
- module Example
4
-
5
- module BeforeAndAfterHooks
6
-
7
- def before(scope = :each, &block)
8
- before_parts(scope) << block
9
- end
10
-
11
- alias_method :append_before, :before
12
-
13
- def before_each_parts
14
- @before_each_parts ||= []
15
- end
16
-
17
- def before_all_parts
18
- @before_all_parts ||= []
19
- end
20
-
21
- def before_parts(scope)
22
- if scope == :each
23
- before_each_parts
24
- elsif scope == :all
25
- before_all_parts
26
- else
27
- []
28
- end
29
- end
30
-
31
-
32
- def after(scope = :each, &block)
33
- after_parts(scope) << block
34
- end
35
-
36
- def after_each_parts
37
- @after_each_parts ||= []
38
- end
39
-
40
- def after_all_parts
41
- @after_all_parts ||= []
42
- end
43
-
44
- def after_parts(scope)
45
- if scope == :each
46
- after_each_parts
47
- elsif scope == :all
48
- after_all_parts
49
- else
50
- []
51
- end
52
- end
53
-
54
- end
55
- end
56
- end
@@ -1,17 +0,0 @@
1
- module Spec
2
-
3
- module Example
4
-
5
- class ExamplePendingError < StandardError
6
-
7
- end
8
-
9
- class NotYetImplementedError < ExamplePendingError
10
-
11
- def initialize
12
- @message = "Not Yet Implemented"
13
- end
14
- end
15
- end
16
- end
17
-
@@ -1,12 +0,0 @@
1
-
2
- module Spec
3
-
4
- module Example
5
-
6
- class ExampleGroup
7
-
8
- extend Spec::Example::ExampleGroupMethods
9
- include Spec::Example::ExampleMethods
10
- end
11
- end
12
- end
@@ -1,18 +0,0 @@
1
-
2
- module Spec
3
-
4
- module Example
5
-
6
- class ExampleGroupFactory
7
-
8
- def self.register_example_group klass
9
- Spec::Runner.options.add_example_group klass
10
- end
11
-
12
- def self.create_example_group(group_name, &block)
13
- ExampleGroup.describe group_name, &block
14
- end
15
- end
16
- end
17
- end
18
-
@@ -1,21 +0,0 @@
1
-
2
- module Spec
3
-
4
- module Example
5
-
6
- class ExampleGroupHierarchy
7
-
8
- def initialize(example_group_class)
9
- @example_group_class = example_group_class
10
- end
11
-
12
- def run_before_each(example)
13
- @example_group_class.before_each_parts.each do |part|
14
- # puts "in each part before"
15
- example.instance_eval &part
16
- end
17
- end
18
-
19
- end
20
- end
21
- end
@@ -1,100 +0,0 @@
1
- module Spec
2
- module Example
3
- module ExampleGroupMethods
4
-
5
- include Spec::Example::BeforeAndAfterHooks
6
-
7
- def describe group_name, &group_block
8
- subclass group_name, &group_block
9
- end
10
-
11
- def subclass group_name, &group_block
12
- @class_count ||= 0
13
- klass = const_set "Subclass#{@class_count}", Class.new(self)
14
- klass.description = group_name
15
- Spec::Example::ExampleGroupFactory.register_example_group klass
16
- klass.module_eval(&group_block)
17
- klass
18
- end
19
-
20
- def example(example_name, &implementation)
21
- example_proxy = Spec::Example::ExampleProxy.new example_name
22
- example_proxies << example_proxy
23
- example_implementations[example_proxy] = implementation || pending_implementation
24
- example_proxy
25
- end
26
-
27
- alias_method :it, :example
28
- alias_method :specify, :example
29
-
30
- def description
31
- @description ||= "PLACEHOLDER DESCRIPTION"
32
- end
33
-
34
- def description=(description)
35
- @description = description
36
- self
37
- end
38
-
39
- def pending_implementation
40
- proc {
41
- raise Spec::Example::NotYetImplementedError.new
42
- }
43
- end
44
-
45
- def run(run_options)
46
- examples = examples_to_run run_options
47
- notify run_options.reporter
48
- success = true
49
- before_all_instance_variables = nil
50
-
51
- run_before_all run_options
52
- run_examples success, before_all_instance_variables, examples, run_options
53
- run_after_all run_options
54
- end
55
-
56
- def run_examples(success, instance_variables, examples, run_options)
57
- examples.each do |example|
58
- example_group_instance = new example,
59
- &example_implementations[example]
60
-
61
- example_group_instance.execute run_options, instance_variables
62
- end
63
- end
64
-
65
- def run_before_all(run_options)
66
- before_all_parts.each do |part|
67
- part.call
68
- end
69
- end
70
-
71
- def run_after_all(run_options)
72
- after_all_parts.each do |part|
73
- part.call
74
- end
75
- end
76
-
77
- def notify(reporter)
78
- reporter.example_group_started Spec::Example::ExampleGroupProxy.new(self)
79
- end
80
-
81
- def examples_to_run(run_options)
82
- example_proxies
83
- end
84
-
85
- def example_proxies
86
- @example_proxies ||= []
87
- end
88
-
89
- def example_implementations
90
- @example_implementations ||= {}
91
- @example_implementations
92
- end
93
-
94
- def example_group_hierarchy
95
- @example_group_hierarchy ||= Spec::Example::ExampleGroupHierarchy.new self
96
- end
97
- end
98
- end
99
- end
100
-