Module: Hamlizer
- Defined in:
- lib/hamlizer.rb,
lib/hamlizer/version.rb,
lib/hamlizer/html_element.rb,
lib/hamlizer/content_printer.rb,
lib/hamlizer/erb_content_printer.rb,
lib/hamlizer/element_name_printer.rb,
lib/hamlizer/text_content_printer.rb,
lib/hamlizer/element_haml_converter.rb,
lib/hamlizer/content_printer_factory.rb,
lib/hamlizer/non_erb_content_printer.rb,
lib/hamlizer/attributes_haml_converter.rb
Defined Under Namespace
Classes: AttributesHamlConverter, ContentPrinter, ContentPrinterFactory, ElementHamlConverter, ElementNamePrinter, ErbContentPrinter, HtmlElement, NonErbContentPrinter, TextContentPrinter
Constant Summary
collapse
- VERSION =
'0.0.4'
Class Method Summary
collapse
Class Method Details
.convert_erb_to_parseable_xml!(html) ⇒ Object
42
43
44
45
|
# File 'lib/hamlizer.rb', line 42
def self.convert_erb_to_parseable_xml!(html)
remove_erb_printing_code!(html)
remove_erb_non_printing_code!(html)
end
|
.current_level ⇒ Object
55
56
57
|
# File 'lib/hamlizer.rb', line 55
def self.current_level
@@current_level
end
|
.current_level=(level) ⇒ Object
59
60
61
|
# File 'lib/hamlizer.rb', line 59
def self.current_level= level
@@current_level = level
end
|
.hamlize(html) ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/hamlizer.rb', line 14
def self.hamlize(html)
self.current_level = 0
html.strip!
html.squeeze! ' '
convert_erb_to_parseable_xml! html
if html.start_with? '<html>'
root = Nokogiri::HTML.parse(html).root
else
root = Nokogiri::HTML::DocumentFragment.parse(html)
end
return '' if root.nil?
children_haml = root.children.map do |element|
haml = ElementHamlConverter.new(HtmlElement.new(element)).haml
haml && !haml.empty? ? haml : nil
end.compact.join("\n")
if html.start_with?('<html>')
haml = "%html"
haml += "\n #{children_haml}" unless children_haml.empty?
haml
else
children_haml
end
end
|
.remove_erb_non_printing_code!(html) ⇒ Object
47
48
49
|
# File 'lib/hamlizer.rb', line 47
def self.remove_erb_non_printing_code!(html)
html.gsub!(/<%(.+?)%>/, '<erb:erb_non_print>\1</erb:erb_non_print>')
end
|
.remove_erb_printing_code!(html) ⇒ Object
51
52
53
|
# File 'lib/hamlizer.rb', line 51
def self.remove_erb_printing_code!(html)
html.gsub!(/<%=(.+?)%>/, '<erb:erb_print>\1</erb:erb_print>')
end
|