Class: Haml::Compiler

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/haml/compiler.rb,
lib/haml/template.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Util

#av_template_class, #balance, #caller_info, #check_encoding, #check_haml_encoding, #contains_interpolation?, #def_static_method, #handle_interpolation, #html_safe, #human_indentation, #inspect_obj, #powerset, #rails_xss_safe?, #silence_warnings, #static_method_name, #unescape_interpolation

Constructor Details

#initialize(options) ⇒ Compiler

Returns a new instance of Compiler



9
10
11
12
13
14
# File 'lib/haml/compiler.rb', line 9

def initialize(options)
  @options     = options
  @output_tabs = 0
  @to_merge    = []
  @precompiled = ''
end

Instance Attribute Details

#options

Returns the value of attribute options



7
8
9
# File 'lib/haml/compiler.rb', line 7

def options
  @options
end

Instance Method Details

#compile(node)



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/haml/compiler.rb', line 16

def compile(node)
  parent = instance_variable_defined?('@node') ? @node : nil
  @node = node
  if node.children.empty?
    send(:"compile_#{node.type}")
  else
    send(:"compile_#{node.type}") {node.children.each {|c| compile c}}
  end
ensure
  @node = parent
end

#precompiledString

The source code that is evaluated to produce the Haml document.

In Ruby 1.9, this is automatically converted to the correct encoding (see the :encoding option).

Returns:

  • (String)


35
36
37
# File 'lib/haml/compiler.rb', line 35

def precompiled
  @precompiled
end

#precompiled_method_return_value_with_haml_xss Also known as: precompiled_method_return_value



17
18
19
# File 'lib/haml/template.rb', line 17

def precompiled_method_return_value_with_haml_xss
  "::Haml::Util.html_safe(#{precompiled_method_return_value_without_haml_xss})"
end

#precompiled_with_ambles(local_names)

Returns the precompiled string with the preamble and postamble.

Initializes to ActionView::OutputBuffer when available; this is necessary to avoid ordering issues with partial layouts in Rails. If not available, initializes to nil.



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/haml/compiler.rb', line 55

def precompiled_with_ambles(local_names)
  preamble = <<END.gsub("\n", ";")
begin
extend Haml::Helpers
_hamlout = @haml_buffer = Haml::Buffer.new(haml_buffer, #{options.for_buffer.inspect})
_erbout = _hamlout.buffer
@output_buffer = output_buffer ||= ActionView::OutputBuffer.new rescue nil
END
  postamble = <<END.gsub("\n", ";")
#{precompiled_method_return_value}
ensure
@haml_buffer = @haml_buffer.upper if @haml_buffer
end
END
  preamble + locals_code(local_names) + precompiled + postamble
end

#precompiled_with_return_value



46
47
48
# File 'lib/haml/compiler.rb', line 46

def precompiled_with_return_value
  precompiled + ";" + precompiled_method_return_value
end