Class: Sprockets::ERBProcessor
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/sprockets/erb_processor.rb |
Class Method Summary
- .call(input)
-
.instance
Public: Return singleton instance with default options.
- .new(&block) ⇒ ERBProcessor constructor
Instance Attribute Summary
- #keyword_constructor? ⇒ Boolean readonly private
Instance Method Summary
Constructor Details
.new(&block) ⇒ ERBProcessor
# File 'lib/sprockets/erb_processor.rb', line 16
def initialize(&block) @block = block end
Class Method Details
.call(input)
[ GitHub ]# File 'lib/sprockets/erb_processor.rb', line 12
def self.call(input) instance.call(input) end
.instance
Public: Return singleton instance with default options.
Returns ERBProcessor object.
# File 'lib/sprockets/erb_processor.rb', line 8
def self.instance @instance ||= new end
Instance Attribute Details
#keyword_constructor? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'lib/sprockets/erb_processor.rb', line 39
def keyword_constructor? return @keyword_constructor if defined? @keyword_constructor @keyword_constructor = ::ERB.instance_method(:initialize).parameters.include?([:key, :trim_mode]) end
Instance Method Details
#call(input)
[ GitHub ]# File 'lib/sprockets/erb_processor.rb', line 20
def call(input) if keyword_constructor? # Ruby 2.6+ engine = ::ERB.new(input[:data], trim_mode: '<>') else engine = ::ERB.new(input[:data], nil, '<>') end engine.filename = input[:filename] context = input[:environment].context_class.new(input) klass = (class << context; self; end) klass.const_set(:ENV, context.env_proxy) klass.class_eval(&@block) if @block data = engine.result(context.instance_eval('binding')) context. .merge(data: data) end