module HOM::Encoding
Public Class Methods
encode(object)
click to toggle source
# File lib/hom.rb, line 128 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)
click to toggle source
# File lib/hom.rb, line 154 def self.encode_attribute(name, value) value == Undefined ? " #{name}" : %( #{name}="#{escape value}") end
encode_attributes(element)
click to toggle source
# File lib/hom.rb, line 150 def self.encode_attributes(element) element.attributes.to_hash.map { |name, value| encode_attribute(name, value) }.join end
encode_element(object)
click to toggle source
# File lib/hom.rb, line 142 def self.encode_element(object) object.content? ? "#{start_tag(object)}#{encode(object.content)}</#{object.tag_name}>" : start_tag(object) end
escape(object)
click to toggle source
# File lib/hom.rb, line 162 def self.escape(object) CGI.escapeHTML(object.to_s) end
safe(string)
click to toggle source
# File lib/hom.rb, line 158 def self.safe(string) string.respond_to?(:html_safe) ? string.html_safe : string end
safe_encode(object)
click to toggle source
# File lib/hom.rb, line 124 def self.safe_encode(object) safe(encode(object)) end
start_tag(element)
click to toggle source
# File lib/hom.rb, line 146 def self.start_tag(element) "<#{element.tag_name}#{encode_attributes(element)}>" end