class Confinement::Renderer::Erb
Public Instance Methods
call(source, view_context, path:, &block)
click to toggle source
# File lib/confinement.rb, line 496 def call(source, view_context, path:, &block) method_name = if path "_#{Digest::MD5.hexdigest(source)}__#{path.to_s.tr("^A-Za-z", "_")}" else "_#{Digest::MD5.hexdigest(source)}" end compile(method_name, source, view_context, path: path) view_context.public_send(method_name, &block) end
Private Instance Methods
compile(method_name, source, view_context, path:)
click to toggle source
# File lib/confinement.rb, line 511 def compile(method_name, source, view_context, path:) if !view_context.respond_to?(method_name) compiled_erb = Erubi::CaptureEndEngine .new(source, bufvar: :@_buf, ensure: true, yield_returns_buffer: true) .src eval_location = if path [path.to_s, 0] else [] end view_context.instance_eval(<<~RUBY, *eval_location) def #{method_name} #{compiled_erb} end RUBY end end