lib/faml/html.rb in faml-0.2.12 vs lib/faml/html.rb in faml-0.2.13
- old
+ new
@@ -1,9 +1,13 @@
require 'faml/attribute_builder'
module Faml
class Html < Temple::HTML::Fast
+ # Override temple's default
+ self.options[:format] = :html
+ self.options[:attr_quote] = "'"
+
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 ? ' /' : '') + '>']
@@ -11,26 +15,22 @@
result << [:static, "</#{name}>"] if !closed
result
end
def on_haml_attrs(code)
- [:dynamic, "::Faml::AttributeBuilder.build(#{options[:attr_quote].inspect}, #{code})"]
+ [:dynamic, "::Faml::AttributeBuilder.build(#{options[:attr_quote].inspect}, #{options[:format] == :html}, #{code})"]
end
def on_haml_attr(name, value)
if empty_exp?(value)
- if @format == :html
- [:static, " #{name}"]
- else
- [:static, " #{name}=#{options[:attr_quote]}#{name}#{options[:attr_quote]}"]
- end
+ true_attribute(name)
elsif value[0] == :dvalue
sym = unique_name
[:multi,
[:code, "#{sym} = (#{value[1]})"],
[:case, sym,
- ['true', [:static, " #{name}"]],
+ ['true', true_attribute(name)],
['false, nil', [:multi]],
[:else, [:multi,
[:static, " #{name}=#{options[:attr_quote]}"],
[:escape, true, [:dynamic, sym]],
[:static, options[:attr_quote]],
@@ -51,8 +51,18 @@
[:multi]
end
def on_haml_preserve(sym)
[:dynamic, "::Faml::Compiler.find_and_preserve(#{sym}.to_s)"]
+ end
+
+ private
+
+ def true_attribute(name)
+ if @format == :html
+ [:static, " #{name}"]
+ else
+ [:static, " #{name}=#{options[:attr_quote]}#{name}#{options[:attr_quote]}"]
+ end
end
end
end