Module: HOM::Encoding
- Defined in:
- lib/hom.rb
Class Method Summary collapse
- .encode(object) ⇒ Object
- .encode_attribute(name, value) ⇒ Object
- .encode_attributes(element) ⇒ Object
- .encode_element(object) ⇒ Object
- .escape(object) ⇒ Object
- .safe(string) ⇒ Object
- .safe_encode(object) ⇒ Object
- .start_tag(element) ⇒ Object
Class Method Details
.encode(object) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/hom.rb', line 120 def self.encode(object) if object.is_a?(Array) object.map { |item| encode(item) }.join elsif object.is_a?(NodeList) object.to_a.map { |item| encode(item) }.join elsif object.is_a?(Element) encode_element(object) elsif object.respond_to?(:html_safe?) && object.html_safe? object.to_s else escape(object) end end |
.encode_attribute(name, value) ⇒ Object
146 147 148 |
# File 'lib/hom.rb', line 146 def self.encode_attribute(name, value) value == Undefined ? " #{name}" : %( #{name}="#{escape value}") end |
.encode_attributes(element) ⇒ Object
142 143 144 |
# File 'lib/hom.rb', line 142 def self.encode_attributes(element) element.attributes.to_hash.map { |name, value| encode_attribute(name, value) }.join end |
.encode_element(object) ⇒ Object
134 135 136 |
# File 'lib/hom.rb', line 134 def self.encode_element(object) object.content? ? "#{start_tag(object)}#{encode(object.content)}</#{object.tag_name}>" : start_tag(object) end |
.escape(object) ⇒ Object
154 155 156 |
# File 'lib/hom.rb', line 154 def self.escape(object) CGI.escapeHTML(object.to_s) end |
.safe(string) ⇒ Object
150 151 152 |
# File 'lib/hom.rb', line 150 def self.safe(string) string.respond_to?(:html_safe) ? string.html_safe : string end |
.safe_encode(object) ⇒ Object
116 117 118 |
# File 'lib/hom.rb', line 116 def self.safe_encode(object) safe(encode(object)) end |
.start_tag(element) ⇒ Object
138 139 140 |
# File 'lib/hom.rb', line 138 def self.start_tag(element) "<#{element.tag_name}#{encode_attributes(element)}>" end |