Class: Haml::Compiler

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/haml/template.rb,
lib/haml/compiler.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

- (Compiler) initialize(options)

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

- precompiled



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



10
11
12
# File 'lib/haml/template.rb', line 10

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

- precompiled_method_return_value_without_haml_xss



13
# File 'lib/haml/template.rb', line 13

alias_method :precompiled_method_return_value_without_haml_xss, :precompiled_method_return_value

- 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