Module: Revelio::SlimTemplateExtension

Includes:
TemplateType
Defined in:
lib/revelio/slim_template_extension.rb

Instance Method Summary collapse

Methods included from TemplateType

#resolve_template_info, #template_type

Instance Method Details

#call(template, source = nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/revelio/slim_template_extension.rb', line 7

def call(template, source = nil)
  compiled = super
  return compiled unless Revelio.config.debug_mode

  relative, type, short = resolve_template_info(template)

  preamble = %{<!-- revelio-begin file="#{relative}" type="#{type}" short="#{short}" -->}
  postamble = %{<!-- revelio-end file="#{relative}" -->}

  # Insert preamble AFTER buffer initialization, postamble at the end
  result = compiled.sub(
    "@output_buffer = output_buffer || ActionView::OutputBuffer.new;",
    "@output_buffer = output_buffer || ActionView::OutputBuffer.new; @output_buffer.safe_append='#{preamble}';"
  )
  "#{result}\n@output_buffer.safe_append='#{postamble}';\n@output_buffer"
end