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