Class: WebpackRails::RequireDirectiveProcessor
- Inherits:
-
Object
- Object
- WebpackRails::RequireDirectiveProcessor
- Defined in:
- lib/webpack_rails/require_directive_processor.rb
Constant Summary collapse
- DIRECTIVE_PATTERN =
/^.*?=\s*webpack_require\s+(.*?)\s*$/
Class Method Summary collapse
- .cache_key ⇒ Object
- .call(input) ⇒ Object
- .config ⇒ Object
- .config=(new_config) ⇒ Object
- .configure(webpack_task_config) ⇒ Object
- .instance ⇒ Object
Instance Method Summary collapse
- #call(input) ⇒ Object
- #config ⇒ Object
- #dev_server_base_url ⇒ Object
- #process_require(context, bundle_filename) ⇒ Object
Class Method Details
.cache_key ⇒ Object
25 26 27 28 |
# File 'lib/webpack_rails/require_directive_processor.rb', line 25 def self.cache_key config_serialized = @config ? @config.to_json : '{}' @cache_key ||= "RequireDirectiveProcessor:#{::WebpackRails::VERSION}:#{config_serialized}".freeze end |
.call(input) ⇒ Object
34 35 36 |
# File 'lib/webpack_rails/require_directive_processor.rb', line 34 def self.call(input) instance.call(input) end |
.config ⇒ Object
21 22 23 |
# File 'lib/webpack_rails/require_directive_processor.rb', line 21 def self.config @config end |
.config=(new_config) ⇒ Object
15 16 17 18 19 |
# File 'lib/webpack_rails/require_directive_processor.rb', line 15 def self.config=(new_config) @cache_key = nil @instance = nil @config = new_config end |
.configure(webpack_task_config) ⇒ Object
9 10 11 12 13 |
# File 'lib/webpack_rails/require_directive_processor.rb', line 9 def self.configure(webpack_task_config) Class.new(RequireDirectiveProcessor) do self.config = webpack_task_config end end |
.instance ⇒ Object
30 31 32 |
# File 'lib/webpack_rails/require_directive_processor.rb', line 30 def self.instance @instance ||= new end |
Instance Method Details
#call(input) ⇒ Object
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/webpack_rails/require_directive_processor.rb', line 61 def call(input) data = input[:data] context = input[:environment].context_class.new(input) output = data.gsub(DIRECTIVE_PATTERN) do |match_text| process_require(context, $1) end context..merge(data: output) end |
#config ⇒ Object
38 39 40 |
# File 'lib/webpack_rails/require_directive_processor.rb', line 38 def config self.class.config end |
#dev_server_base_url ⇒ Object
42 43 44 |
# File 'lib/webpack_rails/require_directive_processor.rb', line 42 def dev_server_base_url "#{config[:protocol]}://#{config[:host]}:#{config[:port]}" end |
#process_require(context, bundle_filename) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/webpack_rails/require_directive_processor.rb', line 46 def process_require(context, bundle_filename) if config[:dev_server] if bundle_filename.end_with? '.js' # emit a script tag pointing at the dev server js url return %{document.write('<script src="#{dev_server_base_url}/#{bundle_filename}"></script>');} end # probably a css file, contents will be included in js instead to enable hot module replacement return "\n" end # will be handled by normal sprockets require context.require_asset(bundle_filename) return "\n" end |