Class: Haml::HTML

Inherits:
Object show all
Defined in:
lib/haml/html.rb,
lib/haml/html.rb

Overview

Converts HTML documents into Haml templates. Depends on Hpricot for HTML parsing.

Example usage:

Haml::Engine.new("<a href='http://google.com'>Blat</a>").render
  #=> "%a{:href => 'http://google.com'} Blat"

Defined Under Namespace

Modules: Node

Constant Summary collapse

TEXT_REGEXP =
/^(\s*).*$/

Instance Method Summary collapse

Constructor Details

#initialize(template, options = {}) ⇒ HTML

Returns a new instance of HTML.

Parameters:

  • template (String, Hpricot::Node)

    The HTML template to convert

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :rhtml (Boolean) — default: false

    Whether or not to parse ERB's <%= %> and <% %> into Haml's = and -

  • :xhtml (Boolean) — default: false

    Whether or not to parse the HTML strictly as XHTML



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/haml/html.rb', line 73

def initialize(template, options = {})
  @options = options

  if template.is_a? Hpricot::Node
    @template = template
  else
    if template.is_a? IO
      template = template.read
    end

    if @options[:rhtml]
      match_to_html(template, /<%=(.*?)-?%>/m, 'loud')
      match_to_html(template, /<%-?(.*?)-?%>/m,  'silent')
    end

    method = @options[:xhtml] ? Hpricot.method(:XML) : method(:Hpricot)
    @template = method.call(template.gsub('&', '&amp;'))
  end
end

Instance Method Details

#renderObject Also known as: to_haml

Processes the document and returns the result as a string containing the Haml template.



95
96
97
# File 'lib/haml/html.rb', line 95

def render
  @template.to_haml(0, @options)
end