opal-sprockets 0.4.0.0.11.0.rc1.3.1.beta2 → 0.4.1.0.10.4.3.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7f468bcbf61d1f13cb364f124c53b8ae927ea02a
4
- data.tar.gz: 6f759a6a77b4e6ae82733c2a504a1b0ffc562fd3
3
+ metadata.gz: 4104f099f47f460aa0aab8c3ecb662e5ea3de68e
4
+ data.tar.gz: acd913df6b2b999883a0a27d31d24ee9d4120514
5
5
  SHA512:
6
- metadata.gz: b894dc0cd1e9b0b8443f3e915dc18719786a63c0443f096d419ca71b4551e50c3d6f42d7f96f74e61b9c7cad1c01e46490539fcc7d5f686d912380867bb61186
7
- data.tar.gz: 2718a9c2659da6a27d290102f00b0405af71760547f65a77cb96754205a4165e96aba496561da57f57d272e4c51ad95b7bbc226e399f26e2cd93597888b26095
6
+ metadata.gz: 1077f5ca7ac88685d8a65115a11073df209e0d4fb04cb966f94d905cbac4ab9a8ae195151528a4f26b7110116894d388f92f783922553b7745fc2638ebe8c397
7
+ data.tar.gz: eaffc409fd570ceeb68463290177e4214300b7e60918a3ff7a043a4e26ab48c747c54fdb2d6c150a7096f80f649fb89ca07f5aa27b08ce61bdda31b907a042d6
data/.travis.yml CHANGED
@@ -6,7 +6,7 @@ matrix:
6
6
  env: RACK_VERSION='< 2.0.0' SPROCKETS_VERSION='~> 3.4.1'
7
7
  - rvm: 2.1.10
8
8
  env: RACK_VERSION='< 2.0.0' SPROCKETS_VERSION='~> 3.5.2'
9
- - rvm: 2.2.5
9
+ - rvm: 2.2.6
10
10
  env: SPROCKETS_VERSION='~> 3.6.3'
11
11
  - rvm: 2.3.4
12
12
  env: SPROCKETS_VERSION='~> 3.7.1'
data/Gemfile CHANGED
@@ -1,13 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
- opal_path = File.expand_path('../opal')
5
- if File.exist? opal_path
6
- gem 'opal', path: opal_path
7
- else
8
- gem 'opal', github: 'opal/opal'
9
- end
10
-
11
4
  rack_version = ENV['RACK_VERSION']
12
5
  sprockets_version = ENV['SPROCKETS_VERSION']
13
6
 
@@ -1,8 +1,8 @@
1
1
  module Opal
2
2
  module Sprockets
3
- BASE_VERSION = '0.4.0'
4
- OPAL_VERSION = '0.11.0.rc1'
3
+ BASE_VERSION = '0.4.1'
4
+ OPAL_VERSION = '0.10.4'
5
5
  SPROCKETS_VERSION = '3.1'
6
- VERSION = "#{BASE_VERSION}.#{OPAL_VERSION}.#{SPROCKETS_VERSION}.beta2"
6
+ VERSION = "#{BASE_VERSION}.#{OPAL_VERSION}.#{SPROCKETS_VERSION}.0"
7
7
  end
8
8
  end
@@ -1 +1,5 @@
1
+ require 'opal'
1
2
  require 'opal/sprockets'
3
+ require 'opal/sprockets/version'
4
+
5
+ Opal::Sprockets::Server = ::Opal::Server
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-sprockets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0.0.11.0.rc1.3.1.beta2
4
+ version: 0.4.1.0.10.4.3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elia Schito
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.11.0.rc1
34
+ version: 0.10.4
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.11.0.rc1
41
+ version: 0.10.4
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: tilt
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -113,14 +113,6 @@ files:
113
113
  - example/config.ru
114
114
  - example/index.html
115
115
  - lib/opal-sprockets.rb
116
- - lib/opal/sprockets.rb
117
- - lib/opal/sprockets/environment.rb
118
- - lib/opal/sprockets/erb.rb
119
- - lib/opal/sprockets/path_reader.rb
120
- - lib/opal/sprockets/processor.rb
121
- - lib/opal/sprockets/server.rb
122
- - lib/opal/sprockets/source_map_header_patch.rb
123
- - lib/opal/sprockets/source_map_server.rb
124
116
  - lib/opal/sprockets/version.rb
125
117
  - opal-sprockets.gemspec
126
118
  - spec/fixtures/complex_sprockets.js.rb.erb
@@ -160,9 +152,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
160
152
  version: '0'
161
153
  required_rubygems_version: !ruby/object:Gem::Requirement
162
154
  requirements:
163
- - - ">"
155
+ - - ">="
164
156
  - !ruby/object:Gem::Version
165
- version: 1.3.1
157
+ version: '0'
166
158
  requirements: []
167
159
  rubyforge_project:
168
160
  rubygems_version: 2.6.8
@@ -1,23 +0,0 @@
1
- require 'sprockets'
2
- require 'opal/sprockets/processor'
3
- require 'opal/sprockets/erb'
4
-
5
- module Opal
6
- class Environment < ::Sprockets::Environment
7
- def initialize *args
8
- super
9
- append_opal_paths
10
- end
11
-
12
- def use_gem gem_name
13
- Opal.use_gem gem_name
14
- append_opal_paths
15
- end
16
-
17
- private
18
-
19
- def append_opal_paths
20
- Opal.paths.each { |p| append_path p }
21
- end
22
- end
23
- end
@@ -1,29 +0,0 @@
1
- require 'tilt'
2
- require 'sprockets'
3
- require 'opal/sprockets/processor'
4
-
5
- module Opal
6
- module ERB
7
- class Processor < ::Opal::Processor
8
- def initialize_engine
9
- super
10
- require_template_library 'opal/erb'
11
- end
12
-
13
- def evaluate(context, locals, &block)
14
- compiler = Opal::ERB::Compiler.new(@data, context.logical_path.sub(/#{REGEXP_START}templates\//, ''))
15
- @data = compiler.prepared_source
16
- super
17
- end
18
- end
19
- end
20
- end
21
-
22
- if Sprockets.respond_to? :register_transformer
23
- extra_args = [{mime_type: 'application/javascript', silence_deprecation: true}]
24
- else
25
- extra_args = []
26
- end
27
-
28
- Tilt.register 'opalerb', Opal::ERB::Processor
29
- Sprockets.register_engine '.opalerb', Opal::ERB::Processor, *extra_args
@@ -1,36 +0,0 @@
1
- module Opal
2
- module Sprockets
3
-
4
- class PathReader
5
- def initialize(env, context)
6
- @env ||= env
7
- @context ||= context
8
- end
9
-
10
- def read path
11
- if path.end_with? '.js'
12
- context.depend_on_asset(path)
13
- env[path, bundle: true].to_s
14
- else
15
- context.depend_on(path)
16
- File.open(expand(path), 'rb:UTF-8'){|f| f.read}
17
- end
18
- rescue ::Sprockets::FileNotFound
19
- nil
20
- end
21
-
22
- def expand path
23
- env.resolve(path) or
24
- # Sprockets 3 just returns nil for unknown paths
25
- raise ::Sprockets::FileNotFound, path.inspect
26
- end
27
-
28
- def paths
29
- env.paths
30
- end
31
-
32
- attr_reader :env, :context
33
- end
34
-
35
- end
36
- end
@@ -1,177 +0,0 @@
1
- require 'set'
2
- require 'tilt/opal'
3
- require 'sprockets'
4
- require 'opal/builder'
5
- require 'opal/sprockets/path_reader'
6
- require 'opal/sprockets/source_map_server'
7
-
8
- $OPAL_SOURCE_MAPS = {}
9
-
10
- module Opal
11
- # Internal: The Processor class is used to make ruby files (with .rb or .opal
12
- # extensions) available to any sprockets based server. Processor will then
13
- # get passed any ruby source file to build.
14
- class Processor < TiltTemplate
15
- @@cache_key = nil
16
- def self.cache_key
17
- @@cache_key ||= ['Opal', Opal::VERSION, Opal::Config.config].to_json.freeze
18
- end
19
-
20
- def self.reset_cache_key!
21
- @@cache_key = nil
22
- end
23
-
24
- def evaluate(context, locals, &block)
25
- return super unless context.is_a? ::Sprockets::Context
26
-
27
- @sprockets = sprockets = context.environment
28
-
29
- # In Sprockets 3 logical_path has an odd behavior when the filename is "index"
30
- # thus we need to bake our own logical_path
31
- filename = context.respond_to?(:filename) ? context.filename : context.pathname.to_s
32
- root_path_regexp = Regexp.escape(context.root_path)
33
- logical_path = filename.gsub(%r{^#{root_path_regexp}/?(.*?)#{sprockets_extnames_regexp}}, '\1')
34
-
35
- compiler_options = self.compiler_options.merge(file: logical_path)
36
-
37
- # Opal will be loaded immediately to as the runtime redefines some crucial
38
- # methods such that need to be implemented as soon as possible:
39
- #
40
- # E.g. It forwards .toString() to .$to_s() for Opal objects including Array.
41
- # If .$to_s() is not implemented and some other lib is loaded before
42
- # corelib/* .toString results in an `undefined is not a function` error.
43
- compiler_options.merge!(requirable: false) if logical_path == 'opal'
44
-
45
- compiler = Compiler.new(data, compiler_options)
46
- result = compiler.compile
47
-
48
- process_requires(compiler.requires, context)
49
- process_required_trees(compiler.required_trees, context)
50
-
51
- if Opal::Config.source_map_enabled
52
- map_contents = compiler.source_map.as_json.to_json
53
- ::Opal::SourceMapServer.set_map_cache(sprockets, logical_path, map_contents)
54
- end
55
-
56
- result.to_s
57
- end
58
-
59
- def self.sprockets_extnames_regexp(sprockets)
60
- joined_extnames = (['.js']+sprockets.engines.keys).map { |ext| Regexp.escape(ext) }.join('|')
61
- Regexp.new("(#{joined_extnames})*$")
62
- end
63
-
64
- def sprockets_extnames_regexp
65
- @sprockets_extnames_regexp ||= self.class.sprockets_extnames_regexp(@sprockets)
66
- end
67
-
68
- def process_requires(requires, context)
69
- requires.each do |required|
70
- required = required.to_s.sub(sprockets_extnames_regexp, '')
71
- context.require_asset required unless ::Opal::Config.stubbed_files.include? required
72
- end
73
- end
74
-
75
- # Internal: Add files required with `require_tree` as asset dependencies.
76
- #
77
- # Mimics (v2) Sprockets::DirectiveProcessor#process_require_tree_directive
78
- def process_required_trees(required_trees, context)
79
- return if required_trees.empty?
80
-
81
- # This is the root dir of the logical path, we need this because
82
- # the compiler gives us the path relative to the file's logical path.
83
- dirname = File.dirname(file).gsub(/#{Regexp.escape File.dirname(context.logical_path)}#{REGEXP_END}/, '')
84
- dirname = Pathname(dirname)
85
-
86
- required_trees.each do |original_required_tree|
87
- required_tree = Pathname(original_required_tree)
88
-
89
- unless required_tree.relative?
90
- raise ArgumentError, "require_tree argument must be a relative path: #{required_tree.inspect}"
91
- end
92
-
93
- required_tree = dirname.join(file, '..', required_tree)
94
-
95
- unless required_tree.directory?
96
- raise ArgumentError, "require_tree argument must be a directory: #{{source: original_required_tree, pathname: required_tree}.inspect}"
97
- end
98
-
99
- context.depend_on required_tree.to_s
100
-
101
- environment = context.environment
102
-
103
- processor = ::Sprockets::DirectiveProcessor.new
104
- processor.instance_variable_set('@dirname', File.dirname(file))
105
- processor.instance_variable_set('@environment', environment)
106
- path = processor.__send__(:expand_relative_dirname, :require_tree, original_required_tree)
107
- absolute_paths = environment.__send__(:stat_sorted_tree_with_dependencies, path).first.map(&:first)
108
-
109
- absolute_paths.each do |path|
110
- path = Pathname(path)
111
- pathname = path.relative_path_from(dirname).to_s
112
-
113
- if name.to_s == file then next
114
- elsif path.directory? then context.depend_on(path.to_s)
115
- else context.require_asset(pathname)
116
- end
117
- end
118
- end
119
- end
120
-
121
- # @deprecated
122
- def self.stubbed_files
123
- warn "Deprecated: `::Opal::Processor.stubbed_files' is deprecated, use `::Opal::Config.stubbed_files' instead"
124
- puts caller(5)
125
- ::Opal::Config.stubbed_files
126
- end
127
-
128
- # @deprecated
129
- def self.stub_file(name)
130
- warn "Deprecated: `::Opal::Processor.stub_file' is deprecated, use `::Opal::Config.stubbed_files << #{name.inspect}.to_s' instead"
131
- puts caller(5)
132
- ::Opal::Config.stubbed_files << name.to_s
133
- end
134
-
135
-
136
- private
137
-
138
- def stubbed_files
139
- ::Opal::Config.stubbed_files
140
- end
141
- end
142
- end
143
-
144
- module Opal::Sprockets::Processor
145
- module PlainJavaScriptLoader
146
- def self.call(input)
147
- sprockets = input[:environment]
148
- asset = OpenStruct.new(input)
149
-
150
- opal_extnames = sprockets.engines.map do |ext, engine|
151
- ext if engine <= ::Opal::Processor
152
- end.compact
153
-
154
- path_extnames = -> path { File.basename(path).scan(/\.[^.]+/) }
155
- processed_by_opal = -> asset { (path_extnames[asset.filename] & opal_extnames).any? }
156
-
157
- unless processed_by_opal[asset]
158
- [
159
- input[:data],
160
- %{if (typeof(OpalLoaded) === 'undefined') OpalLoaded = []; OpalLoaded.push(#{input[:name].to_json});}
161
- ].join(";\n")
162
- end
163
- end
164
- end
165
- end
166
-
167
-
168
- if Sprockets.respond_to? :register_transformer
169
- extra_args = [{mime_type: 'application/javascript', silence_deprecation: true}]
170
- else
171
- extra_args = []
172
- end
173
-
174
- Sprockets.register_engine '.rb', Opal::Processor, *extra_args
175
- Sprockets.register_engine '.opal', Opal::Processor, *extra_args
176
- Sprockets.register_postprocessor 'application/javascript', Opal::Sprockets::Processor::PlainJavaScriptLoader
177
-
@@ -1,135 +0,0 @@
1
- require 'rack'
2
- require 'opal/source_map'
3
- require 'sprockets'
4
- require 'sourcemap'
5
- require 'erb'
6
- require 'opal/sprockets/source_map_server'
7
- require 'opal/sprockets/source_map_header_patch'
8
-
9
- module Opal
10
- module Sprockets
11
- class Server
12
- SOURCE_MAPS_PREFIX_PATH = '/__OPAL_SOURCE_MAPS__'
13
-
14
- attr_accessor :debug, :use_index, :index_path, :main, :public_root,
15
- :public_urls, :sprockets, :prefix
16
-
17
- def initialize options = {}
18
- @use_index = true
19
- @public_root = nil
20
- @public_urls = ['/']
21
- @sprockets = options.fetch(:sprockets, ::Sprockets::Environment.new)
22
- @debug = options.fetch(:debug, true)
23
- @prefix = options.fetch(:prefix, '/assets')
24
-
25
- Opal.paths.each { |p| @sprockets.append_path(p) }
26
-
27
- yield self if block_given?
28
- create_app
29
- end
30
-
31
- def public_dir=(dir)
32
- @public_root = dir
33
- @public_urls = ["/"]
34
- end
35
-
36
- def source_map=(enabled)
37
- Opal::Config.source_map_enabled = enabled
38
- end
39
-
40
- def source_map_enabled
41
- Opal::Config.source_map_enabled
42
- end
43
-
44
- def append_path path
45
- @sprockets.append_path path
46
- end
47
-
48
- def use_gem gem_name
49
- @sprockets.use_gem gem_name
50
- end
51
-
52
- def create_app
53
- server, sprockets, prefix = self, @sprockets, self.prefix
54
- sprockets.logger.level ||= Logger::DEBUG
55
- source_map_enabled = self.source_map_enabled
56
- if source_map_enabled
57
- maps_prefix = SOURCE_MAPS_PREFIX_PATH
58
- maps_app = SourceMapServer.new(sprockets, maps_prefix)
59
- ::Opal::Sprockets::SourceMapHeaderPatch.inject!(maps_prefix)
60
- end
61
-
62
- @app = Rack::Builder.app do
63
- not_found = lambda { |env| [404, {}, []] }
64
- use Rack::Deflater
65
- use Rack::ShowExceptions
66
- use Index, server if server.use_index
67
- if source_map_enabled
68
- map(maps_prefix) do
69
- use Rack::ConditionalGet
70
- use Rack::ETag
71
- run maps_app
72
- end
73
- end
74
- map(prefix) { run sprockets }
75
- run Rack::Static.new(not_found, root: server.public_root, urls: server.public_urls)
76
- end
77
- end
78
-
79
- def call(env)
80
- @app.call env
81
- end
82
-
83
- class Index
84
-
85
- def initialize(app, server)
86
- @app = app
87
- @server = server
88
- @index_path = server.index_path
89
- end
90
-
91
- def call(env)
92
- if %w[/ /index.html].include? env['PATH_INFO']
93
- [200, { 'Content-Type' => 'text/html' }, [html]]
94
- else
95
- @app.call env
96
- end
97
- end
98
-
99
- # Returns the html content for the root path. Supports ERB
100
- def html
101
- if @index_path
102
- raise "index does not exist: #{@index_path}" unless File.exist?(@index_path)
103
- Tilt.new(@index_path).render(self)
104
- else
105
- raise "Main asset path not configured (set 'main' within Opal::Server.new block)" if @server.main.nil?
106
- source
107
- end
108
- end
109
-
110
- def javascript_include_tag name
111
- sprockets = @server.sprockets
112
- prefix = @server.prefix
113
- debug = @server.debug
114
-
115
- ::Opal::Sprockets.javascript_include_tag(name, sprockets: sprockets, prefix: prefix, debug: debug)
116
- end
117
-
118
- def source
119
- <<-HTML
120
- <!DOCTYPE html>
121
- <html>
122
- <head>
123
- <meta charset="utf-8">
124
- <title>Opal Server</title>
125
- </head>
126
- <body>
127
- #{javascript_include_tag @server.main}
128
- </body>
129
- </html>
130
- HTML
131
- end
132
- end
133
- end
134
- end
135
- end
@@ -1,41 +0,0 @@
1
- require 'sprockets/server'
2
-
3
- module Opal
4
- module Sprockets
5
- module SourceMapHeaderPatch
6
- # Adds the source map header to all sprocket responses for assets
7
- # with a .rb or .opal extension in the extension chain.
8
- def headers_with_opal_source_maps(env, asset, length)
9
- headers_without_opal_source_maps(env, asset, length).tap do |current_headers|
10
- if asset.pathname.to_s =~ /\.(rb|opal)\b/
11
- base_path = asset.logical_path.gsub('.js', '')
12
- current_headers['X-SourceMap'] = "#{::Opal::Sprockets::SourceMapHeaderPatch.prefix}/#{base_path}.map"
13
- end
14
- end
15
- end
16
-
17
- def self.included(base)
18
- # Poor man's alias_method_chain :)
19
- base.send(:alias_method, :headers_without_opal_source_maps, :headers)
20
- base.send(:alias_method, :headers, :headers_with_opal_source_maps)
21
- end
22
-
23
- def self.inject!(prefix)
24
- self.prefix = prefix
25
- unless ::Sprockets::Server.ancestors.include?(self)
26
- ::Sprockets::Server.send :include, self
27
- end
28
- end
29
-
30
- def self.prefix
31
- @prefix
32
- end
33
-
34
- def self.prefix= val
35
- @prefix = val
36
- end
37
- end
38
- end
39
- end
40
-
41
-
@@ -1,115 +0,0 @@
1
- module Opal
2
- class SourceMapServer
3
- # Carelessly taken from Sprockets::Caching (Sprockets v2)
4
- class Cache
5
- def initialize
6
- @cache = {}
7
- end
8
-
9
- attr_reader :cache
10
-
11
- def cache_get(key)
12
- # `Cache#get(key)` for Memcache
13
- if cache.respond_to?(:get)
14
- cache.get(key)
15
-
16
- # `Cache#[key]` so `Hash` can be used
17
- elsif cache.respond_to?(:[])
18
- cache[key]
19
-
20
- # `Cache#read(key)` for `ActiveSupport::Cache` support
21
- elsif cache.respond_to?(:read)
22
- cache.read(key)
23
-
24
- else
25
- nil
26
- end
27
- end
28
-
29
- def cache_set(key, value)
30
- # `Cache#set(key, value)` for Memcache
31
- if cache.respond_to?(:set)
32
- cache.set(key, value)
33
-
34
- # `Cache#[key]=value` so `Hash` can be used
35
- elsif cache.respond_to?(:[]=)
36
- cache[key] = value
37
-
38
- # `Cache#write(key, value)` for `ActiveSupport::Cache` support
39
- elsif cache.respond_to?(:write)
40
- cache.write(key, value)
41
- end
42
-
43
- value
44
- end
45
- end
46
-
47
- def self.get_map_cache(sprockets, logical_path)
48
- logical_path = logical_path.gsub(/\.js#{REGEXP_END}/, '')
49
- cache_key = cache_key_for_path(logical_path+'.map')
50
- cache(sprockets).cache_get(cache_key)
51
- end
52
-
53
- def self.set_map_cache(sprockets, logical_path, map_contents)
54
- logical_path = logical_path.gsub(/\.js#{REGEXP_END}/, '')
55
- cache_key = cache_key_for_path(logical_path+'.map')
56
- cache(sprockets).cache_set(cache_key, map_contents)
57
- end
58
-
59
- def self.cache(sprockets)
60
- @cache ||= sprockets.cache ? sprockets : Cache.new
61
- end
62
-
63
- def self.cache_key_for_path(logical_path)
64
- base_name = logical_path.gsub(/\.js#{REGEXP_END}/, '')
65
- File.join('opal', 'source_maps', base_name)
66
- end
67
-
68
-
69
- def initialize sprockets, prefix = '/'
70
- @sprockets = sprockets
71
- @prefix = prefix
72
- end
73
-
74
- attr_reader :sprockets, :prefix
75
-
76
- def inspect
77
- "#<#{self.class}:#{object_id}>"
78
- end
79
-
80
- def call(env)
81
- prefix_regex = %r{^(?:#{prefix}/|/)}
82
- path_info = env['PATH_INFO'].to_s.sub(prefix_regex, '')
83
-
84
- case path_info
85
- when %r{^(.*)\.self\.map$}
86
- path = $1
87
- asset = sprockets[path+'.js']
88
- return not_found(path) if asset.nil?
89
-
90
- # "logical_name" of a BundledAsset keeps the .js extension
91
- source = SourceMapServer.get_map_cache(sprockets, asset.logical_path)
92
- return not_found(asset) if source.nil?
93
-
94
- map = JSON.parse(source)
95
- map['sources'] = map['sources'].map {|s| "#{prefix}/#{s}"}
96
- source = map.to_json
97
-
98
- return [200, {"Content-Type" => "text/json"}, [source.to_s]]
99
- when %r{^(.*)\.rb$}
100
- begin
101
- asset = sprockets.resolve(path_info.sub(/\.rb#{REGEXP_END}/,''))
102
- rescue Sprockets::FileNotFound
103
- return not_found(path_info)
104
- end
105
- return [200, {"Content-Type" => "text/ruby"}, [Pathname(asset).read]]
106
- else
107
- not_found(path_info)
108
- end
109
- end
110
-
111
- def not_found(*messages)
112
- not_found = [404, {}, [{not_found: messages}.inspect]]
113
- end
114
- end
115
- end
@@ -1,78 +0,0 @@
1
- require 'opal'
2
- require 'opal/sprockets/processor'
3
- require 'opal/sprockets/erb'
4
- require 'opal/sprockets/server'
5
-
6
- module Opal
7
- module Sprockets
8
- # Bootstraps modules loaded by sprockets on `Opal.modules` marking any
9
- # non-Opal asset as already loaded.
10
- #
11
- # @example
12
- #
13
- # Opal::Sprockets.load_asset('application')
14
- #
15
- # @example Will output the following JavaScript:
16
- #
17
- # if (typeof(Opal) !== 'undefined') {
18
- # Opal.loaded("opal");
19
- # Opal.loaded("jquery.self");
20
- # Opal.load("application");
21
- # }
22
- #
23
- # @param name [String] The logical name of the main asset to be loaded (without extension)
24
- #
25
- # @return [String] JavaScript code
26
- def self.load_asset(name, _sprockets = :deprecated)
27
- if _sprockets != :deprecated && !@load_asset_warning_displayed
28
- @load_asset_warning_displayed = true
29
- warn "Passing a sprockets environment to Opal::Sprockets.load_asset no more needed.\n #{caller(1, 3).join("\n ")}"
30
- end
31
-
32
- name = name.sub(/(\.(js|rb|opal))*\z/, '')
33
- stubbed_files = ::Opal::Config.stubbed_files
34
-
35
- loaded = ['opal', 'corelib/runtime'] + stubbed_files.to_a
36
-
37
- "if (typeof(Opal) !== 'undefined') { "\
38
- "Opal.loaded(#{loaded.to_json}); "\
39
- "if (typeof(OpalLoaded) === 'undefined') Opal.loaded(OpalLoaded); "\
40
- "if (Opal.modules[#{name.to_json}]) Opal.load(#{name.to_json}); "\
41
- "}"
42
- end
43
-
44
- # Generate a `<script>` tag for Opal assets.
45
- #
46
- # @param [String] name The logical name of the asset to be loaded (without extension)
47
- # @param [Hash] options The options about sprockets
48
- # @option options [Sprockets::Environment] :sprockets The sprockets instance
49
- # @option options [String] :prefix The prefix String at which is mounted Sprockets, e.g. '/assets'
50
- # @option options [Boolean] :debug Wether to enable debug mode along with sourcemaps support
51
- #
52
- # @return a string of HTML code containing `<script>` tags.
53
- def self.javascript_include_tag(name, options = {})
54
- sprockets = options.fetch(:sprockets)
55
- prefix = options.fetch(:prefix)
56
- debug = options.fetch(:debug)
57
-
58
- # Avoid double slashes
59
- prefix = prefix.chop if prefix.end_with? '/'
60
-
61
- asset = sprockets[name]
62
- raise "Cannot find asset: #{name}" if asset.nil?
63
- scripts = []
64
-
65
- if debug
66
- asset.to_a.map do |dependency|
67
- scripts << %{<script src="#{prefix}/#{dependency.logical_path}?body=1"></script>}
68
- end
69
- else
70
- scripts << %{<script src="#{prefix}/#{name}.js"></script>}
71
- end
72
-
73
- scripts << %{<script>#{::Opal::Sprockets.load_asset(name)}</script>}
74
-
75
- scripts.join "\n"
76
- end
77
- end
78
- end