Class: Koara::Xml::XmlRenderer
- Inherits:
-
Object
- Object
- Koara::Xml::XmlRenderer
- Defined in:
- lib/koara/xml/xmlrenderer.rb
Instance Attribute Summary collapse
-
#declaration_tag ⇒ Object
Returns the value of attribute declaration_tag.
-
#hard_wrap ⇒ Object
Returns the value of attribute hard_wrap.
Instance Method Summary collapse
- #escape(text) ⇒ Object
- #escape_url(text) ⇒ Object
- #indent ⇒ Object
- #output ⇒ Object
- #visit_block_element(node) ⇒ Object
- #visit_blockquote(node) ⇒ Object
- #visit_code(node) ⇒ Object
- #visit_codeblock(node) ⇒ Object
- #visit_document(node) ⇒ Object
- #visit_em(node) ⇒ Object
- #visit_heading(node) ⇒ Object
- #visit_image(node) ⇒ Object
- #visit_linebreak(node) ⇒ Object
- #visit_link(node) ⇒ Object
- #visit_list_block(node) ⇒ Object
- #visit_list_item(node) ⇒ Object
- #visit_paragraph(node) ⇒ Object
- #visit_strong(node) ⇒ Object
- #visit_text(node) ⇒ Object
Instance Attribute Details
#declaration_tag ⇒ Object
Returns the value of attribute declaration_tag.
5 6 7 |
# File 'lib/koara/xml/xmlrenderer.rb', line 5 def declaration_tag @declaration_tag end |
#hard_wrap ⇒ Object
Returns the value of attribute hard_wrap.
6 7 8 |
# File 'lib/koara/xml/xmlrenderer.rb', line 6 def hard_wrap @hard_wrap end |
Instance Method Details
#escape(text) ⇒ Object
200 201 202 203 204 205 |
# File 'lib/koara/xml/xmlrenderer.rb', line 200 def escape(text) text.gsub('&', '&') .gsub('<', '<') .gsub('>', '>') .gsub('"', '"') end |
#escape_url(text) ⇒ Object
182 183 184 185 186 187 188 189 190 191 |
# 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 ⇒ Object
193 194 195 196 197 198 |
# File 'lib/koara/xml/xmlrenderer.rb', line 193 def indent repeat = @level * 2 repeat.times { @out << ' ' } end |
#output ⇒ Object
207 208 209 |
# File 'lib/koara/xml/xmlrenderer.rb', line 207 def output @out.string end |
#visit_block_element(node) ⇒ Object
116 117 |
# File 'lib/koara/xml/xmlrenderer.rb', line 116 def visit_block_element(node) end |
#visit_blockquote(node) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# 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) ⇒ Object
166 167 168 169 170 171 172 173 174 |
# 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) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# 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) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# 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) ⇒ Object
156 157 158 159 160 161 162 163 164 |
# 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) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# 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) ⇒ Object
119 120 121 122 123 124 125 126 127 |
# 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) ⇒ Object
176 177 178 179 180 |
# 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) ⇒ Object
129 130 131 132 133 134 135 136 137 |
# 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) ⇒ Object
57 58 59 60 61 62 63 64 65 |
# 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) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# 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) ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 |
# 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) ⇒ Object
146 147 148 149 150 151 152 153 154 |
# 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) ⇒ Object
139 140 141 142 143 144 |
# File 'lib/koara/xml/xmlrenderer.rb', line 139 def visit_text(node) indent() @out << '<text>' @out << escape(node.value) @out << "</text>\n" end |