Class: Forme::Serializer
- Inherits:
-
Object
- Object
- Forme::Serializer
- Defined in:
- lib/forme.rb
Overview
Default serializer class used by the library. Any other serializer classes that want to produce html should probably subclass this class.
Registered as :default.
Defined Under Namespace
Modules: AmericanTime Classes: PlainText
Constant Summary collapse
- ESCAPE_HTML =
Borrowed from Rack::Utils, map of single character strings to html escaped versions.
{"&" => "&", "<" => "<", ">" => ">", "'" => "'", '"' => """}
- ESCAPE_HTML_PATTERN =
A regexp that matches all html characters requiring escaping.
Regexp.union(*ESCAPE_HTML.keys)
- SELF_CLOSING =
Which tags are self closing (such tags ignore children).
[:img, :input]
Instance Method Summary collapse
-
#call(tag) ⇒ Object
Serialize the tag object to an html string.
-
#serialize_close(tag) ⇒ Object
Returns the closing part of the given tag.
-
#serialize_open(tag) ⇒ Object
Returns the opening part of the given tag.
Instance Method Details
#call(tag) ⇒ Object
Serialize the tag object to an html string. Supports Tag
instances, Input
instances (recursing into call
with the result of formatting the input), arrays (recurses into call
for each entry and joins the result), and (html escapes the string version of them, unless they include the Raw
module, in which case no escaping is done).
1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 |
# File 'lib/forme.rb', line 1059 def call(tag) case tag when Tag if SELF_CLOSING.include?(tag.type) "<#{tag.type}#{attr_html(tag)}/>" else "#{serialize_open(tag)}#{call(tag.children)}#{serialize_close(tag)}" end when Input call(tag.format) when Array tag.map{|x| call(x)}.join when DateTime, Time format_time(tag) when Date format_date(tag) when Raw tag.to_s else h tag end end |
#serialize_close(tag) ⇒ Object
Returns the closing part of the given tag.
1088 1089 1090 |
# File 'lib/forme.rb', line 1088 def serialize_close(tag) "</#{tag.type}>" end |
#serialize_open(tag) ⇒ Object
Returns the opening part of the given tag.
1083 1084 1085 |
# File 'lib/forme.rb', line 1083 def serialize_open(tag) "<#{tag.type}#{attr_html(tag)}>" end |