Class: Faml::Html

Inherits:
Temple::HTML::Fast
  • Object
show all
Defined in:
lib/faml/html.rb

Instance Method Summary collapse

Instance Method Details

#on_haml_attr(name, value) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/faml/html.rb', line 23

def on_haml_attr(name, value)
  if empty_exp?(value)
    true_attribute(name)
  elsif value[0] == :dvalue
    sym = unique_name
    [:multi,
     [:code, "#{sym} = (#{value[1]})"],
     [:case, sym,
      ['true', true_attribute(name)],
      ['false, nil', [:multi]],
      [:else, [:multi,
               [:static, " #{name}=#{options[:attr_quote]}"],
               [:escape, true, [:dynamic, sym]],
               [:static, options[:attr_quote]],
              ]],
     ],
    ]
  else
    [:multi,
     [:static, " #{name}=#{options[:attr_quote]}"],
     compile(value),
     [:static, options[:attr_quote]]]
  end
end

#on_haml_attrs(code) ⇒ Object



19
20
21
# File 'lib/faml/html.rb', line 19

def on_haml_attrs(code)
  [:dynamic, "::Faml::AttributeBuilder.build(#{options[:attr_quote].inspect}, #{options[:format] == :html}, #{code})"]
end

#on_haml_doctype(type) ⇒ Object



48
49
50
51
52
# File 'lib/faml/html.rb', line 48

def on_haml_doctype(type)
  compile([:html, :doctype, type])
rescue Temple::FilterError
  [:multi]
end

#on_haml_preserve(sym) ⇒ Object



54
55
56
# File 'lib/faml/html.rb', line 54

def on_haml_preserve(sym)
  [:dynamic, "::Faml::Compiler.find_and_preserve(#{sym}.to_s)"]
end

#on_haml_tag(name, self_closing, attrs, content = nil) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/faml/html.rb', line 9

def on_haml_tag(name, self_closing, attrs, content = nil)
  name = name.to_s
  closed = self_closing && (!content || empty_exp?(content))
  result = [:multi, [:static, "<#{name}"], compile(attrs)]
  result << [:static, (closed && @format != :html ? ' /' : '') + '>']
  result << compile(content) if content
  result << [:static, "</#{name}>"] unless closed
  result
end