class Temple::HTML::Fast

@api public

Constants

HTML
HTML_DOCTYPES
XHTML_DOCTYPES

Public Class Methods

new(opts = {}) click to toggle source
# File lib/temple/html/fast.rb, line 30
def initialize(opts = {})
  super
  unless [:xhtml, *HTML].include?(options[:format])
    raise "Invalid format #{options[:format].inspect}"
  end
end

Public Instance Methods

html?() click to toggle source
# File lib/temple/html/fast.rb, line 41
def html?
  HTML.include?(options[:format])
end
on_html_attr(name, value) click to toggle source
# File lib/temple/html/fast.rb, line 82
def on_html_attr(name, value)
  [:multi,
   [:static, " #{name}=#{options[:attr_wrapper]}"],
   compile(value),
   [:static, options[:attr_wrapper]]]
end
on_html_attrs(*attrs) click to toggle source
# File lib/temple/html/fast.rb, line 78
def on_html_attrs(*attrs)
  [:multi, *attrs.map {|attr| compile(attr) }]
end
on_html_comment(content) click to toggle source
# File lib/temple/html/fast.rb, line 61
def on_html_comment(content)
  [:multi,
    [:static, '<!--'],
    compile(content),
    [:static, '-->']]
end
on_html_doctype(type) click to toggle source
# File lib/temple/html/fast.rb, line 45
def on_html_doctype(type)
  type = type.to_s.downcase

  if type =~ %r^xml(\s+(.+))?$/
    raise 'Invalid xml directive in html mode' if html?
    w = options[:attr_wrapper]
    str = "<?xml version=#{w}1.0#{w} encoding=#{w}#{$2 || 'utf-8'}#{w} ?>"
  elsif html?
    str = HTML_DOCTYPES[type] || raise("Invalid html doctype #{type}")
  else
    str = XHTML_DOCTYPES[type] || raise("Invalid xhtml doctype #{type}")
  end

  [:static, str]
end
on_html_tag(name, attrs, content = nil) click to toggle source
# File lib/temple/html/fast.rb, line 68
def on_html_tag(name, attrs, content = nil)
  name = name.to_s
  closed = !content || (empty_exp?(content) && options[:autoclose].include?(name))
  result = [:multi, [:static, "<#{name}"], compile(attrs)]
  result << [:static, (closed && xhtml? ? ' /' : '') + '>']
  result << compile(content) if content
  result << [:static, "</#{name}>"] if !closed
  result
end
xhtml?() click to toggle source
# File lib/temple/html/fast.rb, line 37
def xhtml?
  options[:format] == :xhtml
end