class Koara::Xml::XmlRenderer
Attributes
declaration_tag[RW]
hard_wrap[RW]
Public Instance Methods
escape(text)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 200 def escape(text) text.gsub('&', '&') .gsub('<', '<') .gsub('>', '>') .gsub('"', '"') end
escape_url(text)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 182 def escape_url(text) return text.gsub(' ', '%20') .gsub("\"", '%22') .gsub('`', '%60') .gsub('<', '%3C') .gsub('>', '%3E') .gsub('[', '%5B') .gsub(']', '%5D') .gsub("\\", '%5C') end
indent()
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 193 def indent repeat = @level * 2 repeat.times { @out << ' ' } end
output()
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 207 def output @out.string end
visit_block_element(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 116 def visit_block_element(node) end
visit_blockquote(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 40 def visit_blockquote(node) @level+=1 indent @out << '<blockquote' if node.children && node.children.length > 0 @out << ">\n" @level+=1 node.children_accept(self) @level-=1 indent @out << "</blockquote>\n" @level-=1 else @out << " />\n" end end
visit_code(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 166 def visit_code(node) indent @out << "<code>\n" @level += 1 node.children_accept(self) @level -= 1 indent @out << "</code>\n" end
visit_codeblock(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 85 def visit_codeblock(node) @level += 1 indent @out << "<codeblock" if node.language @out << " language=\"#{escape(node.language)}\"" end if node.value && node.value.length > 0 @out << ">" @level += 1 @out << escape(node.value) @level -= 1 @out << "</codeblock>\n" else @out << " />\n" end @level -= 1 end
visit_document(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 8 def visit_document(node) @level = 0 @out = StringIO.new if @declaration_tag @out << @declaration_tag + "\n" end if node.children && node.children.length > 0 @out << "<document>\n" node.children_accept(self) @out << '</document>' else @out << '<document />' end end
visit_em(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 156 def visit_em(node) indent @out << "<em>\n" @level += 1 node.children_accept(self) @level -= 1 indent @out << "</em>\n" end
visit_heading(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 23 def visit_heading(node) @level += 1 indent @out << "<heading level=\"#{node.value}\"" if node.children && node.children.length > 0 @out << ">\n" @level += 1 node.children_accept(self) @level -= 1 indent @out << "</heading>\n" else @out << " />\n" end @level -= 1 end
visit_image(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 119 def visit_image(node) indent @out << "<image url=\"" + escape_url(node.value) + "\">\n" @level += 1 node.children_accept(self) @level -= 1 indent() @out << "</image>\n" end
visit_linebreak(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 176 def visit_linebreak(node) hard = @hard_wrap || node.explicit indent @out << "<linebreak explicit=\"#{hard}\"/>\n" end
visit_link(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 129 def visit_link(node) indent @out << "<link url=\"#{escape_url(node.value)}\">\n" @level += 1 node.children_accept(self) @level -= 1 indent @out << "</link>\n" end
visit_list_block(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 57 def visit_list_block(node) @level += 1 indent @out << "<list ordered=\"#{node.ordered}\">\n" node.children_accept(self) indent @out << "</list>\n" @level -= 1 end
visit_list_item(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 67 def visit_list_item(node) @level += 1 indent @out << "<listitem" if node.number @out << " number=\"#{node.number}\""; end if node.children && node.children.length > 0 @out << ">\n" node.children_accept(self) indent @out << "</listitem>\n" else @out << " />\n" end @level -= 1 end
visit_paragraph(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 104 def visit_paragraph(node) @level += 1 indent @out << "<paragraph>\n" @level += 1 node.children_accept(self) @level -= 1 indent @out << "</paragraph>\n" @level -= 1 end
visit_strong(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 146 def visit_strong(node) indent @out << "<strong>\n" @level += 1 node.children_accept(self) @level -= 1 indent @out << "</strong>\n" end
visit_text(node)
click to toggle source
# File lib/koara/xml/xmlrenderer.rb, line 139 def visit_text(node) indent() @out << '<text>' @out << escape(node.value) @out << "</text>\n" end