Class: WebpackRails::RequireDirectiveProcessor

Inherits:
Tilt::Template
  • Object
show all
Defined in:
lib/webpack_rails/require_directive_processor.rb

Constant Summary collapse

DIRECTIVE_PATTERN =
/^.*?=\s*webpack_require\s+(.*?)\s*$/

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configObject



17
18
19
# File 'lib/webpack_rails/require_directive_processor.rb', line 17

def self.config
  @config
end

.config=(new_config) ⇒ Object



13
14
15
# File 'lib/webpack_rails/require_directive_processor.rb', line 13

def self.config=(new_config)
  @config = new_config
end

.configure(webpack_task_config) ⇒ Object



7
8
9
10
11
# File 'lib/webpack_rails/require_directive_processor.rb', line 7

def self.configure(webpack_task_config)
  Class.new(RequireDirectiveProcessor) do
    self.config = webpack_task_config
  end
end

Instance Method Details

#configObject



24
25
26
# File 'lib/webpack_rails/require_directive_processor.rb', line 24

def config
  self.class.config
end

#dev_server_base_urlObject



28
29
30
# File 'lib/webpack_rails/require_directive_processor.rb', line 28

def dev_server_base_url
  "#{config[:protocol]}://#{config[:host]}:#{config[:port]}"
end

#evaluate(context, locals) ⇒ Object



45
46
47
48
49
# File 'lib/webpack_rails/require_directive_processor.rb', line 45

def evaluate(context, locals)
  data.gsub(DIRECTIVE_PATTERN) do |match_text|
    process_require(context, locals, $1)
  end
end

#prepareObject



21
22
# File 'lib/webpack_rails/require_directive_processor.rb', line 21

def prepare
end

#process_require(context, locals, bundle_filename) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/webpack_rails/require_directive_processor.rb', line 32

def process_require(context, locals, bundle_filename)
  if config[:dev_server]
    if bundle_filename.end_with? '.js'
      return %{document.write('<script src="#{dev_server_base_url}/#{bundle_filename}?reload=#{config[:dev_server_reload]}"></script>');}
    end
    return ''
  end

  # will be handled by normal sprockets require
  context.require_asset(bundle_filename)
  return ''
end