opal-sprockets 0.3.0 → 0.4.0.0.10.0.3.0.beta1
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.
- checksums.yaml +4 -4
- data/.gitignore +11 -0
- data/.travis.yml +11 -4
- data/Gemfile +6 -0
- data/README.md +1 -1
- data/Rakefile +1 -0
- data/example/app/application.rb +11 -2
- data/example/app/user.rb +21 -0
- data/example/config.ru +1 -1
- data/lib/opal/sprockets/version.rb +4 -1
- data/lib/opal-sprockets.rb +4 -0
- data/opal-sprockets.gemspec +4 -2
- data/spec/fixtures/complex_sprockets.js.rb.erb +5 -0
- data/spec/fixtures/file_with_directives.js +2 -0
- data/spec/fixtures/jst_file.js.jst +1 -0
- data/spec/fixtures/no_requires.rb +1 -0
- data/spec/fixtures/opal_file.rb +2 -0
- data/spec/fixtures/require_tree_test.rb +3 -0
- data/spec/fixtures/required_file.js +1 -0
- data/spec/fixtures/required_tree_test/required_file1.rb +1 -0
- data/spec/fixtures/required_tree_test/required_file2.rb +1 -0
- data/spec/fixtures/requires.rb +7 -0
- data/spec/fixtures/source_map/subfolder/other_file.rb +1 -0
- data/spec/fixtures/source_map.rb +1 -0
- data/spec/fixtures/sprockets_file.js.rb +3 -0
- data/spec/fixtures/sprockets_require_tree_test.rb +3 -0
- data/spec/shared/path_finder_shared.rb +19 -0
- data/spec/shared/path_reader_shared.rb +31 -0
- data/spec/sprockets/erb_spec.rb +38 -0
- data/spec/sprockets/path_reader_spec.rb +41 -0
- data/spec/sprockets/processor_spec.rb +79 -0
- data/spec/sprockets/server_spec.rb +103 -0
- data/spec/sprockets_spec.rb +32 -0
- data/spec/tilt/opal_spec.rb +37 -0
- metadata +94 -35
- data/example/app/foo.rb +0 -7
- data/lib/opal/sprockets/environment.rb +0 -22
- data/lib/opal/sprockets/erb.rb +0 -29
- data/lib/opal/sprockets/processor.rb +0 -124
- data/lib/opal/sprockets/server.rb +0 -159
- data/lib/opal/sprockets.rb +0 -4
- data/spec/fixtures/app/foo.rb +0 -0
- data/spec/fixtures/app2/bar.js +0 -0
- data/spec/opal/sprockets/server_spec.rb +0 -15
- data/spec/processor_spec.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db4efadd12763aeaa629cc26f864cf137e8bbfeb
|
4
|
+
data.tar.gz: 8833ebcf05c70a990f8c6ef7246e7f952ec70cb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc56ecd71399b8a31ddb3216061e04b8bd698f270679e07b8e3c486883ddb88af1a948ded8f34b5371f8f760905f71e347b9a2f25aaa7a74f62fc986f6da05c8
|
7
|
+
data.tar.gz: 6d9eb5fc2430d60abfd8447788aa3ace748de305b65f76703337dfe027c1685826dbbdd9f88477b241d6d942e47cc8032ecab47797b8576b4716a71addc9ea85
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
matrix:
|
4
|
+
include:
|
5
|
+
- rvm: 2.0.0
|
6
|
+
env: RACK_VERSION='< 2.0.0' SPROCKETS_VERSION='~> 3.4.1'
|
7
|
+
- rvm: 2.1.10
|
8
|
+
env: RACK_VERSION='< 2.0.0' SPROCKETS_VERSION='~> 3.5.2'
|
9
|
+
- rvm: 2.2.5
|
10
|
+
env: SPROCKETS_VERSION='~> 3.6.3'
|
11
|
+
- rvm: 2.3.1
|
12
|
+
env: SPROCKETS_VERSION='~> 3.7.0'
|
13
|
+
- rvm: 2.4.0-preview1
|
7
14
|
|
8
15
|
notifications:
|
9
16
|
irc: "irc.freenode.org#opal"
|
data/Gemfile
CHANGED
data/README.md
CHANGED
data/Rakefile
CHANGED
data/example/app/application.rb
CHANGED
data/example/app/user.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
class User
|
2
|
+
def initialize(name)
|
3
|
+
@name = name
|
4
|
+
end
|
5
|
+
|
6
|
+
def authenticated?
|
7
|
+
if admin? or special_persmission?
|
8
|
+
true
|
9
|
+
else
|
10
|
+
raise "not authenticated"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def admin?
|
15
|
+
@name == 'Bob'
|
16
|
+
end
|
17
|
+
|
18
|
+
def special_persmission?
|
19
|
+
false
|
20
|
+
end
|
21
|
+
end
|
data/example/config.ru
CHANGED
data/lib/opal-sprockets.rb
CHANGED
data/opal-sprockets.gemspec
CHANGED
@@ -14,9 +14,11 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
15
|
s.require_paths = ['lib']
|
16
16
|
|
17
|
-
s.add_dependency 'sprockets'
|
18
|
-
s.add_dependency 'opal',
|
17
|
+
s.add_dependency 'sprockets', "~> #{Opal::Sprockets::SPROCKETS_VERSION}"
|
18
|
+
s.add_dependency 'opal', "~> #{Opal::Sprockets::OPAL_VERSION}"
|
19
|
+
s.add_dependency 'tilt', '>= 1.4'
|
19
20
|
|
20
21
|
s.add_development_dependency 'rake'
|
21
22
|
s.add_development_dependency 'rspec'
|
23
|
+
s.add_development_dependency 'rack-test'
|
22
24
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
#= require sprockets_file
|
@@ -0,0 +1 @@
|
|
1
|
+
puts 'hi there'
|
@@ -0,0 +1 @@
|
|
1
|
+
console.log('required file');
|
@@ -0,0 +1 @@
|
|
1
|
+
p 1
|
@@ -0,0 +1 @@
|
|
1
|
+
p 2
|
@@ -0,0 +1 @@
|
|
1
|
+
puts 'other!'
|
@@ -0,0 +1 @@
|
|
1
|
+
puts 'smap!'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
shared_examples :path_finder do
|
4
|
+
# @param path
|
5
|
+
# the path we want to read
|
6
|
+
#
|
7
|
+
# @param full_path
|
8
|
+
# the expanded path that should be found
|
9
|
+
#
|
10
|
+
it 'returns the full path if the path exists' do
|
11
|
+
expect(path_finder.find(path)).to eq(full_path)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'returns nil if the path is missing' do
|
15
|
+
expect(path_finder.find('unexpected-path')).to eq(nil)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Below the helpers expected from a spec that
|
4
|
+
# includes these shared examples:
|
5
|
+
#
|
6
|
+
# @object [PathReader] path_reader the object under test
|
7
|
+
# @method [String] path the path we want to read
|
8
|
+
# @method [String] contents the contents we expect to be read
|
9
|
+
#
|
10
|
+
shared_examples :path_reader do
|
11
|
+
describe '#paths' do
|
12
|
+
it 'is an Enumberable' do
|
13
|
+
expect(path_reader.paths).to be_an(Enumerable)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'includes Opal.paths' do
|
17
|
+
paths = path_reader.paths.to_a
|
18
|
+
Opal.paths.each { |path| expect(paths).to include(path) }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#read' do
|
23
|
+
it 'responds to #path' do
|
24
|
+
expect(path_reader.read(path)).to eq(contents)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns nil if the file is missing' do
|
28
|
+
expect(path_reader.read('unexpected-path!')).to be_nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'opal/sprockets/erb'
|
3
|
+
|
4
|
+
describe Opal::ERB::Processor do
|
5
|
+
let(:pathname) { Pathname("/Code/app/mylib/opal/foo.#{ext}") }
|
6
|
+
let(:environment) { double(Sprockets::Environment,
|
7
|
+
cache: nil,
|
8
|
+
:[] => nil,
|
9
|
+
resolve: pathname.expand_path.to_s,
|
10
|
+
engines: double(keys: %w[.rb .js .erb .opal]),
|
11
|
+
) }
|
12
|
+
let(:sprockets_context) { double(Sprockets::Context,
|
13
|
+
logical_path: "foo.#{ext}",
|
14
|
+
environment: environment,
|
15
|
+
pathname: pathname,
|
16
|
+
filename: pathname.to_s,
|
17
|
+
root_path: '/Code/app/mylib',
|
18
|
+
is_a?: true,
|
19
|
+
) }
|
20
|
+
let(:required_assets) { [] }
|
21
|
+
let(:template) { described_class.new { |t| %Q{<% print("") %><a href="<%= url %>"><%= name %></a>} } }
|
22
|
+
before { allow(sprockets_context).to receive(:require_asset) {|asset| required_assets << asset } }
|
23
|
+
|
24
|
+
let(:ext) { 'opalerb' }
|
25
|
+
|
26
|
+
it "is registered for '.opalerb' files" do
|
27
|
+
expect(Tilt["test.#{ext}"]).to eq(described_class)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'renders the template' do
|
31
|
+
expect(template.render(sprockets_context)).to include('"<a href=\""')
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'implicitly requires "erb"' do
|
35
|
+
template.render(sprockets_context)
|
36
|
+
expect(required_assets).to eq(['erb'])
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'shared/path_reader_shared'
|
3
|
+
require 'opal/sprockets/path_reader'
|
4
|
+
|
5
|
+
describe Opal::Sprockets::PathReader do
|
6
|
+
let(:env) { Sprockets::Environment.new }
|
7
|
+
let(:context) { double('context', depend_on: nil, depend_on_asset: nil) }
|
8
|
+
let(:contents) { File.read(full_path) }
|
9
|
+
let(:full_path) { fixtures_dir.join(logical_path+'.js.rb') }
|
10
|
+
let(:logical_path) { 'sprockets_file' }
|
11
|
+
let(:fixtures_dir) { Pathname('../../fixtures/').expand_path(__FILE__) }
|
12
|
+
|
13
|
+
subject(:path_reader) { described_class.new(env, context) }
|
14
|
+
|
15
|
+
before do
|
16
|
+
Opal.paths.each {|p| env.append_path(p)}
|
17
|
+
env.append_path fixtures_dir
|
18
|
+
end
|
19
|
+
|
20
|
+
include_examples :path_reader do
|
21
|
+
let(:path) { logical_path }
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'can read stuff from sprockets env' do
|
25
|
+
expect(path_reader.read(logical_path)).to eq(contents)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'reads js files processing their directives' do
|
29
|
+
path = 'file_with_directives.js'
|
30
|
+
full_path = fixtures_dir.join(path)
|
31
|
+
required_contents = File.read(fixtures_dir.join('required_file.js')).strip
|
32
|
+
read_contents = path_reader.read(path)
|
33
|
+
actual_contents = full_path.read
|
34
|
+
|
35
|
+
expect(actual_contents).to include('//= require')
|
36
|
+
expect(read_contents).not_to include('//= require')
|
37
|
+
|
38
|
+
expect(read_contents).to include(required_contents)
|
39
|
+
expect(actual_contents).not_to include(required_contents)
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'opal/sprockets/processor'
|
3
|
+
|
4
|
+
describe Opal::Processor do
|
5
|
+
let(:pathname) { Pathname("/Code/app/mylib/opal/foo.#{ext}") }
|
6
|
+
let(:environment) { double(Sprockets::Environment,
|
7
|
+
cache: nil,
|
8
|
+
:[] => nil,
|
9
|
+
resolve: pathname.expand_path.to_s,
|
10
|
+
engines: double(keys: %w[.rb .js .opal]),
|
11
|
+
) }
|
12
|
+
let(:sprockets_context) { double(Sprockets::Context,
|
13
|
+
logical_path: "foo.#{ext}",
|
14
|
+
environment: environment,
|
15
|
+
pathname: pathname,
|
16
|
+
filename: pathname.to_s,
|
17
|
+
root_path: '/Code/app/mylib',
|
18
|
+
is_a?: true,
|
19
|
+
) }
|
20
|
+
|
21
|
+
%w[.rb .opal].each do |ext|
|
22
|
+
let(:ext) { ext }
|
23
|
+
|
24
|
+
describe %Q{with extension "#{ext}"} do
|
25
|
+
it "is registered for '#{ext}' files" do
|
26
|
+
expect(Sprockets.engines[ext]).to eq(described_class)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "compiles and evaluates the template on #render" do
|
30
|
+
template = described_class.new { |t| "puts 'Hello, World!'\n" }
|
31
|
+
expect(template.render(sprockets_context)).to include('"Hello, World!"')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '.stubbed_files' do
|
37
|
+
around do |e|
|
38
|
+
config.stubbed_files.clear
|
39
|
+
e.run
|
40
|
+
config.stubbed_files.clear
|
41
|
+
end
|
42
|
+
|
43
|
+
let(:stubbed_file) { 'foo' }
|
44
|
+
let(:template) { described_class.new { |t| "require #{stubbed_file.inspect}" } }
|
45
|
+
let(:config) { Opal::Config }
|
46
|
+
|
47
|
+
it 'usually require files' do
|
48
|
+
expect(sprockets_context).to receive(:require_asset).with(stubbed_file)
|
49
|
+
template.render(sprockets_context)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'skips require of stubbed file' do
|
53
|
+
config.stubbed_files << stubbed_file.to_s
|
54
|
+
expect(sprockets_context).not_to receive(:require_asset).with(stubbed_file)
|
55
|
+
template.render(sprockets_context)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'marks a stubbed file as loaded' do
|
59
|
+
config.stubbed_files << stubbed_file.to_s
|
60
|
+
asset = double(dependencies: [], pathname: Pathname('bar'), logical_path: 'bar')
|
61
|
+
allow(environment).to receive(:[]).with('bar.js') { asset }
|
62
|
+
allow(environment).to receive(:engines) { {'.rb' => described_class, '.opal' => described_class} }
|
63
|
+
|
64
|
+
code = ::Opal::Sprockets.load_asset('bar', environment)
|
65
|
+
expect(code).to match(stubbed_file)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe '.cache_key' do
|
70
|
+
it 'can be reset' do
|
71
|
+
Opal::Config.arity_check_enabled = true
|
72
|
+
old_cache_key = described_class.cache_key
|
73
|
+
Opal::Config.arity_check_enabled = false
|
74
|
+
expect(described_class.cache_key).to eq(old_cache_key)
|
75
|
+
described_class.reset_cache_key!
|
76
|
+
expect(described_class.cache_key).not_to eq(old_cache_key)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'sourcemap'
|
3
|
+
require 'rack/test'
|
4
|
+
|
5
|
+
describe Opal::Sprockets::Server do
|
6
|
+
include Rack::Test::Methods
|
7
|
+
|
8
|
+
let(:maps_prefix) { described_class::SOURCE_MAPS_PREFIX_PATH }
|
9
|
+
|
10
|
+
def app
|
11
|
+
described_class.new { |s|
|
12
|
+
s.main = 'opal'
|
13
|
+
s.debug = false
|
14
|
+
s.append_path File.expand_path('../../fixtures', __FILE__)
|
15
|
+
s.sprockets.logger = Logger.new(nil)
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'serves assets from /assets' do
|
20
|
+
get '/assets/opal.js'
|
21
|
+
expect(last_response).to be_ok
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'serves assets with complex sprockets requires' do
|
25
|
+
asset = app.sprockets['complex_sprockets']
|
26
|
+
expect(asset).to be_truthy
|
27
|
+
|
28
|
+
assets = asset.to_a.map do |sub_asset|
|
29
|
+
sub_asset.logical_path.gsub(/\.self\.js$/, '.js')
|
30
|
+
end
|
31
|
+
|
32
|
+
%w[
|
33
|
+
base64.js
|
34
|
+
no_requires.js
|
35
|
+
jst_file.js
|
36
|
+
required_tree_test/required_file1.js
|
37
|
+
required_tree_test/required_file2.js
|
38
|
+
file_with_directives.js
|
39
|
+
].each do |logical_path|
|
40
|
+
expect(assets).to include(logical_path)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'source maps' do
|
45
|
+
it 'serves map on a top level file' do
|
46
|
+
get '/assets/source_map.js'
|
47
|
+
expect(last_response).to be_ok
|
48
|
+
|
49
|
+
get maps_prefix+'/source_map.self.map'
|
50
|
+
expect(last_response).to be_ok
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'serves map on a subfolder file' do
|
54
|
+
js_path = '/assets/source_map/subfolder/other_file.self.js'
|
55
|
+
map_path = maps_prefix+'/source_map/subfolder/other_file.self.map'
|
56
|
+
|
57
|
+
get js_path
|
58
|
+
|
59
|
+
expect(last_response).to be_ok
|
60
|
+
received_map_path = extract_map_path(last_response)
|
61
|
+
expect(expand_path(received_map_path, js_path+'/..')).to eq(map_path)
|
62
|
+
|
63
|
+
get maps_prefix+'/source_map/subfolder/other_file.self.map'
|
64
|
+
expect(last_response).to be_ok
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'serves map on a subfolder file' do
|
68
|
+
js_path = '/assets/source_map/subfolder/other_file.self.js'
|
69
|
+
map_path = maps_prefix+'/source_map/subfolder/other_file.self.map'
|
70
|
+
|
71
|
+
get js_path
|
72
|
+
|
73
|
+
expect(last_response).to be_ok
|
74
|
+
received_map_path = extract_map_path(last_response)
|
75
|
+
expect(expand_path(received_map_path, js_path+'/..')).to eq(map_path)
|
76
|
+
|
77
|
+
get maps_prefix+'/source_map/subfolder/other_file.self.map'
|
78
|
+
expect(last_response).to be_ok
|
79
|
+
map = ::SourceMap::Map.from_json(last_response.body)
|
80
|
+
expect(map.sources).to include(maps_prefix+'/source_map/subfolder/other_file.rb')
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def extract_map_path(response)
|
85
|
+
source_map_comment_regexp = %r{//# sourceMappingURL=(.*)$}
|
86
|
+
|
87
|
+
case
|
88
|
+
when response.body =~ source_map_comment_regexp
|
89
|
+
body.scan(source_map_comment_regexp).first.first
|
90
|
+
when response.headers['X-SourceMap']
|
91
|
+
response.headers['X-SourceMap']
|
92
|
+
else
|
93
|
+
raise "cannot find source map in response: #{response.inspect}"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def expand_path(file_name, dir_string)
|
98
|
+
path = File.expand_path(file_name, dir_string)
|
99
|
+
# Remove Windows letter and colon (eg. C:) from path
|
100
|
+
path = path[2..-1] if !(RUBY_PLATFORM =~ /mswin|mingw/).nil?
|
101
|
+
path
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'opal/sprockets'
|
3
|
+
|
4
|
+
describe Opal::Sprockets do
|
5
|
+
let(:env) { Sprockets::Environment.new }
|
6
|
+
before { Opal.paths.each { |path| env.append_path path } }
|
7
|
+
|
8
|
+
describe '.load_asset' do
|
9
|
+
it 'loads the main asset' do
|
10
|
+
code = described_class.load_asset('console', env)
|
11
|
+
expect(code).to include('Opal.load("console");')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'marks as loaded "opal" plus all non opal assets' do
|
15
|
+
code = described_class.load_asset('corelib/runtime', env)
|
16
|
+
expect(code).to include('Opal.loaded(["opal","corelib/runtime"]);')
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'returns an empty string if the asset is not found' do
|
20
|
+
code = described_class.load_asset('foo', env)
|
21
|
+
expect(code).to eq('')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '.javascript_include_tag' do
|
26
|
+
it 'works with trailing / in the prefix' do
|
27
|
+
code = described_class.javascript_include_tag('corelib/runtime', prefix: '/', sprockets: env, debug: false)
|
28
|
+
expect(code).to include('src="/corelib/runtime.')
|
29
|
+
expect(code).not_to include('//')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'tilt/opal'
|
3
|
+
|
4
|
+
describe Opal::TiltTemplate do
|
5
|
+
%w[rb js.rb opal js.opal].each do |ext|
|
6
|
+
let(:ext) { ext }
|
7
|
+
|
8
|
+
describe %Q{with extension ".#{ext}"} do
|
9
|
+
it "is registered for '.#{ext}' files" do
|
10
|
+
expect(Tilt["test.#{ext}"]).to be <= described_class
|
11
|
+
end
|
12
|
+
|
13
|
+
it "compiles and evaluates the template on #render" do
|
14
|
+
template = described_class.new('file') { |t| "puts 'Hello, World!'\n" }
|
15
|
+
expect(template.render(Object.new)).to include('"Hello, World!"')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it "support :build option" do
|
21
|
+
template = described_class.new('./spec/fixtures/opal_file.rb', :build=>true)
|
22
|
+
output = template.render
|
23
|
+
expect(output).to include('"hi from opal!"')
|
24
|
+
expect(output).to include('self.$require("corelib/runtime");')
|
25
|
+
end
|
26
|
+
|
27
|
+
it "support :builder option" do
|
28
|
+
builder = Opal::Builder.new(:stubs=>['opal'])
|
29
|
+
template = described_class.new('./spec/fixtures/opal_file.rb', :builder=>builder)
|
30
|
+
|
31
|
+
2.times do
|
32
|
+
output = template.render
|
33
|
+
expect(output.scan(/hi from opal!/).length).to eql(1)
|
34
|
+
expect(output).not_to include('self.$require("corelib/runtime");')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,69 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opal-sprockets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.0
|
4
|
+
version: 0.4.0.0.10.0.3.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Beynon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sprockets
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '3.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '3.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: opal
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.10.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.10.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: tilt
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
47
|
+
version: '1.4'
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- -
|
52
|
+
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
54
|
+
version: '1.4'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- -
|
59
|
+
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
61
|
version: '0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- -
|
66
|
+
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
75
|
version: '0'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- -
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rack-test
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
67
95
|
- !ruby/object:Gem::Version
|
68
96
|
version: '0'
|
69
97
|
description: Sprockets suppoer for opal.
|
@@ -72,30 +100,43 @@ executables: []
|
|
72
100
|
extensions: []
|
73
101
|
extra_rdoc_files: []
|
74
102
|
files:
|
75
|
-
- .gitignore
|
76
|
-
- .rspec
|
77
|
-
- .travis.yml
|
103
|
+
- ".gitignore"
|
104
|
+
- ".rspec"
|
105
|
+
- ".travis.yml"
|
78
106
|
- Gemfile
|
79
107
|
- README.md
|
80
108
|
- Rakefile
|
81
109
|
- example/Gemfile
|
82
110
|
- example/app/application.rb
|
83
|
-
- example/app/
|
111
|
+
- example/app/user.rb
|
84
112
|
- example/config.ru
|
85
113
|
- example/index.html
|
86
114
|
- lib/opal-sprockets.rb
|
87
|
-
- lib/opal/sprockets.rb
|
88
|
-
- lib/opal/sprockets/environment.rb
|
89
|
-
- lib/opal/sprockets/erb.rb
|
90
|
-
- lib/opal/sprockets/processor.rb
|
91
|
-
- lib/opal/sprockets/server.rb
|
92
115
|
- lib/opal/sprockets/version.rb
|
93
116
|
- opal-sprockets.gemspec
|
94
|
-
- spec/fixtures/
|
95
|
-
- spec/fixtures/
|
96
|
-
- spec/
|
97
|
-
- spec/
|
117
|
+
- spec/fixtures/complex_sprockets.js.rb.erb
|
118
|
+
- spec/fixtures/file_with_directives.js
|
119
|
+
- spec/fixtures/jst_file.js.jst
|
120
|
+
- spec/fixtures/no_requires.rb
|
121
|
+
- spec/fixtures/opal_file.rb
|
122
|
+
- spec/fixtures/require_tree_test.rb
|
123
|
+
- spec/fixtures/required_file.js
|
124
|
+
- spec/fixtures/required_tree_test/required_file1.rb
|
125
|
+
- spec/fixtures/required_tree_test/required_file2.rb
|
126
|
+
- spec/fixtures/requires.rb
|
127
|
+
- spec/fixtures/source_map.rb
|
128
|
+
- spec/fixtures/source_map/subfolder/other_file.rb
|
129
|
+
- spec/fixtures/sprockets_file.js.rb
|
130
|
+
- spec/fixtures/sprockets_require_tree_test.rb
|
131
|
+
- spec/shared/path_finder_shared.rb
|
132
|
+
- spec/shared/path_reader_shared.rb
|
98
133
|
- spec/spec_helper.rb
|
134
|
+
- spec/sprockets/erb_spec.rb
|
135
|
+
- spec/sprockets/path_reader_spec.rb
|
136
|
+
- spec/sprockets/processor_spec.rb
|
137
|
+
- spec/sprockets/server_spec.rb
|
138
|
+
- spec/sprockets_spec.rb
|
139
|
+
- spec/tilt/opal_spec.rb
|
99
140
|
homepage: http://opalrb.org
|
100
141
|
licenses: []
|
101
142
|
metadata: {}
|
@@ -105,23 +146,41 @@ require_paths:
|
|
105
146
|
- lib
|
106
147
|
required_ruby_version: !ruby/object:Gem::Requirement
|
107
148
|
requirements:
|
108
|
-
- -
|
149
|
+
- - ">="
|
109
150
|
- !ruby/object:Gem::Version
|
110
151
|
version: '0'
|
111
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
153
|
requirements:
|
113
|
-
- -
|
154
|
+
- - ">"
|
114
155
|
- !ruby/object:Gem::Version
|
115
|
-
version:
|
156
|
+
version: 1.3.1
|
116
157
|
requirements: []
|
117
158
|
rubyforge_project:
|
118
|
-
rubygems_version: 2.
|
159
|
+
rubygems_version: 2.6.4
|
119
160
|
signing_key:
|
120
161
|
specification_version: 4
|
121
162
|
summary: Sprockets support for opal
|
122
163
|
test_files:
|
123
|
-
- spec/fixtures/
|
124
|
-
- spec/fixtures/
|
125
|
-
- spec/
|
126
|
-
- spec/
|
164
|
+
- spec/fixtures/complex_sprockets.js.rb.erb
|
165
|
+
- spec/fixtures/file_with_directives.js
|
166
|
+
- spec/fixtures/jst_file.js.jst
|
167
|
+
- spec/fixtures/no_requires.rb
|
168
|
+
- spec/fixtures/opal_file.rb
|
169
|
+
- spec/fixtures/require_tree_test.rb
|
170
|
+
- spec/fixtures/required_file.js
|
171
|
+
- spec/fixtures/required_tree_test/required_file1.rb
|
172
|
+
- spec/fixtures/required_tree_test/required_file2.rb
|
173
|
+
- spec/fixtures/requires.rb
|
174
|
+
- spec/fixtures/source_map.rb
|
175
|
+
- spec/fixtures/source_map/subfolder/other_file.rb
|
176
|
+
- spec/fixtures/sprockets_file.js.rb
|
177
|
+
- spec/fixtures/sprockets_require_tree_test.rb
|
178
|
+
- spec/shared/path_finder_shared.rb
|
179
|
+
- spec/shared/path_reader_shared.rb
|
127
180
|
- spec/spec_helper.rb
|
181
|
+
- spec/sprockets/erb_spec.rb
|
182
|
+
- spec/sprockets/path_reader_spec.rb
|
183
|
+
- spec/sprockets/processor_spec.rb
|
184
|
+
- spec/sprockets/server_spec.rb
|
185
|
+
- spec/sprockets_spec.rb
|
186
|
+
- spec/tilt/opal_spec.rb
|
data/example/app/foo.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'sprockets'
|
2
|
-
|
3
|
-
module Opal
|
4
|
-
|
5
|
-
# Environment is a subclass of Sprockets::Environment which already has our opal
|
6
|
-
# load paths loaded. This makes it easy for stand-alone rack apps, or test runners
|
7
|
-
# that have opal load paths ready to use. You can also add an existing gem's lib
|
8
|
-
# directory to our load path to use real gems inside your opal environment.
|
9
|
-
#
|
10
|
-
# If you are running rails, then you just need opal-rails instead, which will
|
11
|
-
# do this for you.
|
12
|
-
class Environment < ::Sprockets::Environment
|
13
|
-
def initialize *args
|
14
|
-
super
|
15
|
-
Opal.paths.each { |p| append_path p }
|
16
|
-
end
|
17
|
-
|
18
|
-
def use_gem gem_name
|
19
|
-
append_path File.join(Gem::Specification.find_by_name(gem_name).gem_dir, 'lib')
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
data/lib/opal/sprockets/erb.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'opal'
|
2
|
-
require 'opal/compiler'
|
3
|
-
require 'sprockets'
|
4
|
-
|
5
|
-
module Opal
|
6
|
-
module ERB
|
7
|
-
class Processor < Tilt::Template
|
8
|
-
self.default_mime_type = 'application/javascript'
|
9
|
-
|
10
|
-
def self.engine_initialized?
|
11
|
-
true
|
12
|
-
end
|
13
|
-
|
14
|
-
def initialize_engine
|
15
|
-
require_template_library 'opal'
|
16
|
-
end
|
17
|
-
|
18
|
-
def prepare
|
19
|
-
end
|
20
|
-
|
21
|
-
def evaluate(scope, locals, &block)
|
22
|
-
Opal::ERB.compile data, scope.logical_path.sub(/^templates\//, '')
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
Tilt.register 'opalerb', Opal::ERB::Processor
|
29
|
-
Sprockets.register_engine '.opalerb', Opal::ERB::Processor
|
@@ -1,124 +0,0 @@
|
|
1
|
-
require 'set'
|
2
|
-
require 'sprockets'
|
3
|
-
|
4
|
-
$OPAL_SOURCE_MAPS = {}
|
5
|
-
|
6
|
-
module Opal
|
7
|
-
|
8
|
-
# Proccess using Sprockets
|
9
|
-
#
|
10
|
-
# Opal.process('opal-jquery') # => String
|
11
|
-
def self.process asset
|
12
|
-
Environment.new[asset].to_s
|
13
|
-
end
|
14
|
-
|
15
|
-
# The Processor class is used to make ruby files (with rb or opal extensions)
|
16
|
-
# available to any sprockets based server. Processor will then get passed any
|
17
|
-
# ruby source file to build. There are some options you can override globally
|
18
|
-
# which effect how certain ruby features are handled:
|
19
|
-
#
|
20
|
-
# * method_missing_enabled [true by default]
|
21
|
-
# * optimized_operators_enabled [true by default]
|
22
|
-
# * arity_check_enabled [false by default]
|
23
|
-
# * const_missing_enabled [true by default]
|
24
|
-
# * dynamic_require_severity [true by default]
|
25
|
-
# * source_map_enabled [true by default]
|
26
|
-
# * irb_enabled [false by default]
|
27
|
-
#
|
28
|
-
class Processor < Tilt::Template
|
29
|
-
self.default_mime_type = 'application/javascript'
|
30
|
-
|
31
|
-
def self.engine_initialized?
|
32
|
-
true
|
33
|
-
end
|
34
|
-
|
35
|
-
class << self
|
36
|
-
attr_accessor :method_missing_enabled
|
37
|
-
attr_accessor :arity_check_enabled
|
38
|
-
attr_accessor :const_missing_enabled
|
39
|
-
attr_accessor :dynamic_require_severity
|
40
|
-
attr_accessor :source_map_enabled
|
41
|
-
attr_accessor :irb_enabled
|
42
|
-
end
|
43
|
-
|
44
|
-
self.method_missing_enabled = true
|
45
|
-
self.arity_check_enabled = false
|
46
|
-
self.const_missing_enabled = true
|
47
|
-
self.dynamic_require_severity = :error # :error, :warning or :ignore
|
48
|
-
self.source_map_enabled = true
|
49
|
-
self.irb_enabled = false
|
50
|
-
|
51
|
-
def self.stub_file(name)
|
52
|
-
stubbed_files << name.to_s
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.stubbed_files
|
56
|
-
@stubbed_files ||= Set.new
|
57
|
-
end
|
58
|
-
|
59
|
-
def initialize_engine
|
60
|
-
require_template_library 'opal'
|
61
|
-
end
|
62
|
-
|
63
|
-
def prepare
|
64
|
-
end
|
65
|
-
|
66
|
-
def evaluate(context, locals, &block)
|
67
|
-
options = {
|
68
|
-
:method_missing => self.class.method_missing_enabled,
|
69
|
-
:arity_check => self.class.arity_check_enabled,
|
70
|
-
:const_missing => self.class.const_missing_enabled,
|
71
|
-
:dynamic_require_severity => self.class.dynamic_require_severity,
|
72
|
-
:irb => self.class.irb_enabled,
|
73
|
-
:file => context.logical_path,
|
74
|
-
}
|
75
|
-
|
76
|
-
compiler = Opal::Compiler.new
|
77
|
-
result = compiler.compile data, options
|
78
|
-
|
79
|
-
compiler.requires.each do |r|
|
80
|
-
next if stubbed_file? r
|
81
|
-
path = find_opal_require context.environment, r
|
82
|
-
context.require_asset path
|
83
|
-
end
|
84
|
-
|
85
|
-
if self.class.source_map_enabled
|
86
|
-
$OPAL_SOURCE_MAPS[context.pathname] = compiler.source_map(source_file_url(context)).to_s
|
87
|
-
"#{result}\n//@ sourceMappingURL=#{source_map_url(context)}\n"
|
88
|
-
else
|
89
|
-
result
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def source_map_url(context)
|
94
|
-
"#{prefix}/#{context.logical_path}.js.map"
|
95
|
-
end
|
96
|
-
|
97
|
-
def source_file_url(context)
|
98
|
-
"#{prefix}/#{context.logical_path.to_s}"
|
99
|
-
end
|
100
|
-
|
101
|
-
def prefix
|
102
|
-
"/__opal_source_maps__"
|
103
|
-
end
|
104
|
-
|
105
|
-
def stubbed_file?(name)
|
106
|
-
self.class.stubbed_files.include? name
|
107
|
-
end
|
108
|
-
|
109
|
-
def find_opal_require(environment, r)
|
110
|
-
path = environment.paths.find do |p|
|
111
|
-
File.exist?(File.join(p, "#{r}.rb"))
|
112
|
-
end
|
113
|
-
|
114
|
-
path ? File.join(path, "#{r}.rb") : r
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
Tilt.register 'rb', Opal::Processor
|
120
|
-
Sprockets.register_engine '.rb', Opal::Processor
|
121
|
-
|
122
|
-
Tilt.register 'opal', Opal::Processor
|
123
|
-
Sprockets.register_engine '.opal', Opal::Processor
|
124
|
-
|
@@ -1,159 +0,0 @@
|
|
1
|
-
require 'rack/file'
|
2
|
-
require 'rack/urlmap'
|
3
|
-
require 'rack/builder'
|
4
|
-
require 'rack/directory'
|
5
|
-
require 'rack/showexceptions'
|
6
|
-
require 'opal/source_map'
|
7
|
-
require 'opal/sprockets/environment'
|
8
|
-
require 'erb'
|
9
|
-
|
10
|
-
module Opal
|
11
|
-
|
12
|
-
class SourceMapServer
|
13
|
-
def initialize sprockets
|
14
|
-
@sprockets = sprockets
|
15
|
-
end
|
16
|
-
|
17
|
-
attr_reader :sprockets
|
18
|
-
|
19
|
-
attr_writer :prefix
|
20
|
-
|
21
|
-
def prefix
|
22
|
-
@prefix ||= '/__opal_source_maps__'
|
23
|
-
end
|
24
|
-
|
25
|
-
def inspect
|
26
|
-
"#<#{self.class}:#{object_id}>"
|
27
|
-
end
|
28
|
-
|
29
|
-
def call(env)
|
30
|
-
path_info = env['PATH_INFO']
|
31
|
-
|
32
|
-
if path_info =~ /\.js\.map$/
|
33
|
-
path = env['PATH_INFO'].gsub(/^\/|\.js\.map$/, '')
|
34
|
-
asset = sprockets[path]
|
35
|
-
return [404, {}, []] if asset.nil?
|
36
|
-
|
37
|
-
return [200, {"Content-Type" => "text/json"}, [$OPAL_SOURCE_MAPS[asset.pathname].to_s]]
|
38
|
-
else
|
39
|
-
return [200, {"Content-Type" => "text/text"}, [File.read(sprockets.resolve(path_info))]]
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
class Server
|
45
|
-
|
46
|
-
attr_accessor :debug, :index_path, :main, :public_dir, :sprockets
|
47
|
-
|
48
|
-
def initialize debug_or_options = {}
|
49
|
-
unless Hash === debug_or_options
|
50
|
-
warn "passing a boolean to control debug is deprecated.\n"+
|
51
|
-
"Please pass an Hash instead: Server.new(debug: true)"
|
52
|
-
options = {:debug => debug_or_options}
|
53
|
-
else
|
54
|
-
options = debug_or_options
|
55
|
-
end
|
56
|
-
|
57
|
-
@public_dir = '.'
|
58
|
-
@sprockets = Environment.new
|
59
|
-
@debug = options.fetch(:debug, true)
|
60
|
-
|
61
|
-
yield self if block_given?
|
62
|
-
create_app
|
63
|
-
end
|
64
|
-
|
65
|
-
def source_map_enabled
|
66
|
-
Opal::Processor.source_map_enabled
|
67
|
-
end
|
68
|
-
|
69
|
-
def append_path path
|
70
|
-
@sprockets.append_path path
|
71
|
-
end
|
72
|
-
|
73
|
-
def use_gem gem_name
|
74
|
-
@sprockets.use_gem gem_name
|
75
|
-
end
|
76
|
-
|
77
|
-
def create_app
|
78
|
-
server, sprockets = self, @sprockets
|
79
|
-
|
80
|
-
@app = Rack::Builder.app do
|
81
|
-
use Rack::ShowExceptions
|
82
|
-
map('/assets') { run sprockets }
|
83
|
-
map(server.source_maps.prefix) { run server.source_maps } if server.source_map_enabled
|
84
|
-
use Index, server
|
85
|
-
run Rack::Directory.new(server.public_dir)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
def source_maps
|
90
|
-
@source_maps ||= SourceMapServer.new(@sprockets)
|
91
|
-
end
|
92
|
-
|
93
|
-
def call(env)
|
94
|
-
@app.call env
|
95
|
-
end
|
96
|
-
|
97
|
-
class Index
|
98
|
-
|
99
|
-
def initialize(app, server)
|
100
|
-
@app = app
|
101
|
-
@server = server
|
102
|
-
@index_path = server.index_path
|
103
|
-
end
|
104
|
-
|
105
|
-
def call(env)
|
106
|
-
if %w[/ /index.html].include? env['PATH_INFO']
|
107
|
-
[200, { 'Content-Type' => 'text/html' }, [html]]
|
108
|
-
else
|
109
|
-
@app.call env
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
# Returns the html content for the root path. Supports ERB
|
114
|
-
def html
|
115
|
-
source = if @index_path
|
116
|
-
raise "index does not exist: #{@index_path}" unless File.exist?(@index_path)
|
117
|
-
File.read @index_path
|
118
|
-
elsif File.exist? 'index.html'
|
119
|
-
File.read 'index.html'
|
120
|
-
elsif File.exist? 'index.html.erb'
|
121
|
-
File.read 'index.html.erb'
|
122
|
-
else
|
123
|
-
SOURCE
|
124
|
-
end
|
125
|
-
|
126
|
-
::ERB.new(source).result binding
|
127
|
-
end
|
128
|
-
|
129
|
-
def javascript_include_tag source
|
130
|
-
if @server.debug
|
131
|
-
assets = @server.sprockets[source].to_a
|
132
|
-
|
133
|
-
raise "Cannot find asset: #{source}" if assets.empty?
|
134
|
-
|
135
|
-
scripts = assets.map do |a|
|
136
|
-
%Q{<script src="/assets/#{ a.logical_path }?body=1"></script>}
|
137
|
-
end
|
138
|
-
|
139
|
-
scripts.join "\n"
|
140
|
-
else
|
141
|
-
"<script src=\"/assets/#{source}.js\"></script>"
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
SOURCE = <<-HTML
|
146
|
-
<!DOCTYPE html>
|
147
|
-
<html>
|
148
|
-
<head>
|
149
|
-
<title>Opal Server</title>
|
150
|
-
</head>
|
151
|
-
<body>
|
152
|
-
<%= javascript_include_tag @server.main %>
|
153
|
-
</body>
|
154
|
-
</html>
|
155
|
-
HTML
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
data/lib/opal/sprockets.rb
DELETED
data/spec/fixtures/app/foo.rb
DELETED
File without changes
|
data/spec/fixtures/app2/bar.js
DELETED
File without changes
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Opal::Server do
|
4
|
-
it 'serves source maps only if they are enbled on the Processor' do
|
5
|
-
original_value = Opal::Processor.source_map_enabled
|
6
|
-
begin
|
7
|
-
[true, false].each do |bool|
|
8
|
-
Opal::Processor.source_map_enabled = bool
|
9
|
-
expect(subject.source_map_enabled).to eq(bool)
|
10
|
-
end
|
11
|
-
ensure
|
12
|
-
Opal::Processor.source_map_enabled = original_value
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
data/spec/processor_spec.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Opal::Processor do
|
4
|
-
let(:processor) do
|
5
|
-
Opal::Processor.new(File.expand_path('spec/fixtures/app/foo.rb'))
|
6
|
-
end
|
7
|
-
|
8
|
-
let(:sprockets) do
|
9
|
-
Sprockets::Environment.new.tap do |s|
|
10
|
-
s.append_path 'spec/fixtures/app'
|
11
|
-
s.append_path 'spec/fixtures/app2'
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "#find_opal_require" do
|
16
|
-
it "returns the full path of a matching ruby file" do
|
17
|
-
processor.find_opal_require(sprockets, 'foo').should eq(File.expand_path('spec/fixtures/app/foo.rb'))
|
18
|
-
end
|
19
|
-
|
20
|
-
it "returns original asset name if no matching ruby file" do
|
21
|
-
processor.find_opal_require(sprockets, 'doesnt_exist').should eq("doesnt_exist")
|
22
|
-
end
|
23
|
-
|
24
|
-
it "only matches ruby files (not js files)" do
|
25
|
-
processor.find_opal_require(sprockets, "bar").should eq("bar")
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|