opal 0.3.44 → 0.4.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/.travis.yml +0 -1
- data/CHANGELOG.md +52 -0
- data/README.md +3 -3
- data/Rakefile +32 -8
- data/bin/opal +69 -16
- data/config.ru +1 -1
- data/examples/native/app/app.rb +28 -9
- data/examples/rack/app/app.rb +1 -1
- data/lib/opal.rb +0 -1
- data/lib/opal/cli.rb +106 -0
- data/lib/opal/lexer.rb +4 -2
- data/lib/opal/parser.rb +603 -360
- data/lib/opal/processor.rb +20 -8
- data/lib/opal/server.rb +47 -0
- data/lib/opal/source_map.rb +63 -0
- data/lib/opal/sprockets_parser.rb +77 -0
- data/lib/opal/sprockets_source_map_header.rb +21 -0
- data/lib/opal/target_scope.rb +14 -7
- data/lib/opal/version.rb +1 -1
- data/opal.gemspec +2 -0
- data/opal/opal-browser/script_loader.rb +7 -7
- data/opal/opal-parser.js.erb +2 -2
- data/opal/opal-source-maps.js.erb +2 -0
- data/opal/opal.rb +3 -4
- data/opal/opal/array.rb +31 -28
- data/opal/opal/boolean.rb +4 -0
- data/opal/opal/class.rb +14 -5
- data/opal/opal/enumerable.rb +68 -8
- data/opal/opal/error.rb +1 -1
- data/opal/opal/hash.rb +15 -18
- data/opal/opal/kernel.rb +24 -10
- data/opal/opal/native.rb +31 -0
- data/opal/opal/nil_class.rb +7 -2
- data/opal/opal/numeric.rb +10 -1
- data/opal/opal/proc.rb +4 -0
- data/opal/opal/range.rb +1 -1
- data/opal/opal/regexp.rb +13 -3
- data/opal/opal/runtime.js +134 -51
- data/opal/opal/string.rb +45 -22
- data/opal/opal/time.rb +25 -7
- data/opal/source_map.rb +63 -0
- data/opal/source_map/generator.rb +251 -0
- data/opal/source_map/parser.rb +102 -0
- data/opal/source_map/vlq.rb +122 -0
- data/opal/strscan.rb +30 -12
- data/spec/opal/class/_inherited_spec.rb +1 -1
- data/spec/{rubyspec/core → opal}/class/bridge_class_spec.rb +5 -3
- data/spec/{rubyspec/core → opal}/class/extend_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/class/instance_methods_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/class/last_value_spec.rb +0 -1
- data/spec/{rubyspec/core → opal}/json/parse_spec.rb +0 -0
- data/spec/{rubyspec/core/kernel/block_given.rb → opal/kernel/block_given_spec.rb} +0 -0
- data/spec/{rubyspec/core → opal}/kernel/class_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/extend_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/format_spec.rb +0 -0
- data/spec/opal/kernel/freeze_spec.rb +15 -0
- data/spec/{rubyspec/core → opal}/kernel/match_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/method_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/methods_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/nil_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/p_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/printf_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/proc_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/rand_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/respond_to_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/sprintf_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/kernel/to_json_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/module/alias_method_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/module/ancestors_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/module/append_features_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/module/constants_spec.rb +0 -0
- data/spec/{rubyspec/core → opal}/module/module_function_spec.rb +0 -1
- data/spec/opal/native_spec.rb +85 -3
- data/spec/opal/numeric/equal_spec.rb +9 -0
- data/spec/opal/parser/irb_spec.rb +43 -0
- data/spec/{rubyspec/core → opal}/proc/proc_tricks_spec.rb +0 -0
- data/spec/opal/runtime/block_send_spec.rb +28 -0
- data/spec/{rubyspec/core/runtime → opal/runtime2}/call_spec.rb +0 -0
- data/spec/{rubyspec/core/runtime → opal/runtime2}/class_hierarchy_spec.rb +0 -0
- data/spec/{rubyspec/core/runtime → opal/runtime2}/def_spec.rb +0 -0
- data/spec/{rubyspec/core/runtime → opal/runtime2}/defined_spec.rb +0 -0
- data/spec/{rubyspec/core/runtime → opal/runtime2}/super_spec.rb +0 -0
- data/spec/opal/source_map_spec.rb +19 -0
- data/spec/opal/string/freeze_spec.rb +15 -0
- data/spec/{rubyspec/core → opal}/string/to_json_spec.rb +0 -0
- data/spec/ospec/runner.rb +3 -0
- data/spec/parser/str_spec.rb +4 -0
- data/spec/rubyspec/core/enumerable/fixtures/classes.rb +2 -2
- data/spec/rubyspec/core/enumerable/none_spec.rb +68 -0
- data/spec/rubyspec/core/enumerable/sort_by_spec.rb +31 -0
- data/spec/rubyspec/core/hash/size_spec.rb +1 -1
- data/spec/rubyspec/core/hash/to_native_spec.rb +3 -3
- data/spec/rubyspec/core/string/fixtures/classes.rb +49 -0
- data/spec/rubyspec/core/string/index_spec.rb +405 -0
- data/spec/rubyspec/filters/bugs/language/class.rb +0 -2
- data/spec/rubyspec/filters/bugs/language/module.rb +3 -0
- data/spec/rubyspec/language/array_spec.rb +1 -1
- data/spec/rubyspec/language/block_spec.rb +1 -1
- data/spec/rubyspec/language/module_spec.rb +5 -5
- data/spec/rubyspec/language/predefined_spec.rb +1 -2
- data/spec/rubyspec/library/stringscanner/element_reference_spec.rb +29 -0
- data/spec/rubyspec/spec_helper.rb +31 -0
- metadata +130 -76
- data/lib/opal/erb.rb +0 -41
- data/opal/erb.rb +0 -19
- data/spec/opal/erb/erb_spec.rb +0 -31
- data/spec/simple_erb_template.opalerb +0 -1
- data/spec/templates/foo/bar.opalerb +0 -1
- data/spec/templates/prefixed.opalerb +0 -1
data/lib/opal/erb.rb
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
require 'opal/parser'
|
|
2
|
-
|
|
3
|
-
module Opal
|
|
4
|
-
module ERB
|
|
5
|
-
def self.parse(str, name='(erb)')
|
|
6
|
-
body = str.gsub('"', '\\"').gsub(/<%=([\s\S]+?)%>/) do
|
|
7
|
-
inner = $1.gsub(/\\'/, "'").gsub(/\\"/, '"')
|
|
8
|
-
"\")\nout.<<(#{ inner })\nout.<<(\""
|
|
9
|
-
end.gsub(/<%([\s\S]+?)%>/) do
|
|
10
|
-
"\")\n#{ $1 }\nout.<<(\""
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
code = "ERB.new('#{name}') do\nout = []\nout.<<(\"#{ body }\")\nout.join\nend\n"
|
|
14
|
-
Opal.parse code
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
class Processor < Tilt::Template
|
|
18
|
-
self.default_mime_type = 'application/javascript'
|
|
19
|
-
|
|
20
|
-
def self.engine_initialized?
|
|
21
|
-
true
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def initialize_engine
|
|
25
|
-
require_template_library 'opal'
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def prepare
|
|
29
|
-
# ...
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def evaluate(scope, locals, &block)
|
|
33
|
-
Opal::ERB.parse data, scope.logical_path.sub(/^templates\//, '')
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
Tilt.register 'opalerb', Opal::ERB::Processor
|
|
40
|
-
Sprockets.register_engine '.opalerb', Opal::ERB::Processor
|
|
41
|
-
|
data/opal/erb.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# Provides Template module for registering erb templates
|
|
2
|
-
require 'opal-template'
|
|
3
|
-
|
|
4
|
-
class ERB
|
|
5
|
-
def initialize(name, &body)
|
|
6
|
-
@body = body
|
|
7
|
-
@name = name
|
|
8
|
-
Template[name] = self
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def inspect
|
|
12
|
-
"#<ERB: name=#{@name.inspect}>"
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def render(ctx = self)
|
|
16
|
-
ctx.instance_eval(&@body)
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
data/spec/opal/erb/erb_spec.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
require 'erb'
|
|
2
|
-
|
|
3
|
-
# Our 3 templates we use (we can require them as normal files)
|
|
4
|
-
require 'simple_erb_template'
|
|
5
|
-
require 'templates/prefixed'
|
|
6
|
-
require 'templates/foo/bar'
|
|
7
|
-
|
|
8
|
-
describe "Opal ERB files" do
|
|
9
|
-
it "should be defined by their filename on Template namespace" do
|
|
10
|
-
Template['simple_erb_template'].should be_kind_of(ERB)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should remove 'templates/' path prefix" do
|
|
14
|
-
Template['templates/prefixed'].should be_nil
|
|
15
|
-
Template['prefixed'].should be_kind_of(ERB)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "should maintain '/' in template paths" do
|
|
19
|
-
Template['foo/bar'].should be_kind_of(ERB)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "calling the block with a context should render the block" do
|
|
23
|
-
@some_data = "hello"
|
|
24
|
-
Template['simple_erb_template'].render(self).should == "<div>hello</div>\n"
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "should accept quotes in strings" do
|
|
28
|
-
@name = "adam"
|
|
29
|
-
Template['foo/bar'].render(self).should == "<div class=\"foo\">hello there adam</div>\n"
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div><%= @some_data %></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div class="foo">hello <%= "there " + @name %></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Prefixed content.
|