class Temple::HTML::Pretty
def indent
def indent @stack.include?('pre') ? '' : ("\n" + ((options[:indent] || '') * @stack.size)) end
def initialize(opts = {})
def initialize(opts = {}) super @last = nil @stack = [] end
def on_dynamic(content)
def on_dynamic(content) @last = nil [:dynamic, options[:pretty] ? %{(#{content}).to_s.gsub("\n", #{indent.inspect})} : content] end
def on_html_comment(content)
def on_html_comment(content) return super if !options[:pretty] [:multi, [:static, indent], super] end
def on_html_doctype(type)
def on_html_doctype(type) @last = 'doctype' super end
def on_html_tag(name, attrs, closed, content)
def on_html_tag(name, attrs, closed, content) return super if !options[:pretty] closed ||= options[:autoclose].include?(name) raise "Closed tag #{name} has content" if closed && !empty_exp?(content) result = [:multi, [:static, "#{tag_indent(name)}<#{name}"], compile!(attrs)] result << [:static, ' /'] if closed && xhtml? result << [:static, '>'] @stack << name @last = name result << compile!(content) @stack.pop result << [:static, "#{tag_indent(name)}</#{name}>"] if !closed @last = name result end
def on_static(content)
def on_static(content) @last = nil [:static, options[:pretty] ? content.gsub("\n", indent) : content] end
def tag_indent(name)
def tag_indent(name) @last && (INDENT_TAGS.include?(@last) || INDENT_TAGS.include?(name)) ? indent : '' end