HTML cleansing stuff
# File lib/redcloth/formatters/html.rb, line 21
21: def acronym(opts)
22: opts[:block] = true
23: "<acronym#{pba(opts)}>#{caps(:text => opts[:text])}</acronym>"
24: end
# File lib/redcloth/formatters/html.rb, line 192
192: def amp(opts)
193: "&"
194: end
# File lib/redcloth/formatters/html.rb, line 220
220: def apos(opts)
221: "'"
222: end
# File lib/redcloth/formatters/html.rb, line 165
165: def arrow(opts)
166: "→"
167: end
# File lib/redcloth/formatters/html.rb, line 99
99: def bc_close(opts)
100: "</pre>\n"
101: end
# File lib/redcloth/formatters/html.rb, line 94
94: def bc_open(opts)
95: opts[:block] = true
96: "<pre#{pba(opts)}>"
97: end
# File lib/redcloth/formatters/html.rb, line 109
109: def bq_close(opts)
110: "</blockquote>\n"
111: end
# File lib/redcloth/formatters/html.rb, line 103
103: def bq_open(opts)
104: opts[:block] = true
105: cite = opts[:cite] ? " cite=\"#{ escape_attribute opts[:cite] }\"" : ''
106: "<blockquote#{cite}#{pba(opts)}>\n"
107: end
# File lib/redcloth/formatters/html.rb, line 204
204: def br(opts)
205: if hard_breaks == false
206: "\n"
207: else
208: "<br />\n"
209: end
210: end
# File lib/redcloth/formatters/html.rb, line 26
26: def caps(opts)
27: if no_span_caps
28: opts[:text]
29: else
30: opts[:class] = 'caps'
31: span(opts)
32: end
33: end
# File lib/redcloth/formatters/html.rb, line 184
184: def copyright(opts)
185: "©"
186: end
# File lib/redcloth/formatters/html.rb, line 35
35: def del(opts)
36: opts[:block] = true
37: "<del#{pba(opts)}>#{opts[:text]}</del>"
38: end
# File lib/redcloth/formatters/html.rb, line 169
169: def dim(opts)
170: opts[:text].gsub!('x', '×')
171: opts[:text].gsub!("'", '′')
172: opts[:text].gsub!('"', '″')
173: opts[:text]
174: end
# File lib/redcloth/formatters/html.rb, line 63
63: def dl_close(opts=nil)
64: "</dl>\n"
65: end
# File lib/redcloth/formatters/html.rb, line 58
58: def dl_open(opts)
59: opts[:block] = true
60: "<dl#{pba(opts)}>\n"
61: end
# File lib/redcloth/formatters/html.rb, line 153
153: def ellipsis(opts)
154: "#{opts[:text]}…"
155: end
# File lib/redcloth/formatters/html.rb, line 157
157: def emdash(opts)
158: "—"
159: end
# File lib/redcloth/formatters/html.rb, line 161
161: def endash(opts)
162: " – "
163: end
# File lib/redcloth/formatters/html.rb, line 188
188: def entity(opts)
189: "&#{opts[:text]};"
190: end
# File lib/redcloth/formatters/html.rb, line 130
130: def fn(opts)
131: no = opts[:id]
132: opts[:id] = "fn#{no}"
133: opts[:class] = ["footnote", opts[:class]].compact.join(" ")
134: "<p#{pba(opts)}><a href=\"#fnr#{no}\"><sup>#{no}</sup></a> #{opts[:text]}</p>\n"
135: end
# File lib/redcloth/formatters/html.rb, line 125
125: def footno(opts)
126: opts[:id] ||= opts[:text]
127: %{<sup class="footnote" id=\"fnr#{opts[:id]}\"><a href=\"#fn#{opts[:id]}\">#{opts[:text]}</a></sup>}
128: end
# File lib/redcloth/formatters/html.rb, line 196
196: def gt(opts)
197: ">"
198: end
# File lib/redcloth/formatters/html.rb, line 17
17: def hr(opts)
18: "<hr />\n"
19: end
# File lib/redcloth/formatters/html.rb, line 224
224: def html(opts)
225: "#{opts[:text]}\n"
226: end
# File lib/redcloth/formatters/html.rb, line 228
228: def html_block(opts)
229: inline_html(:text => "#{opts[:indent_before_start]}#{opts[:start_tag]}#{opts[:indent_after_start]}") +
230: "#{opts[:text]}" +
231: inline_html(:text => "#{opts[:indent_before_end]}#{opts[:end_tag]}#{opts[:indent_after_end]}")
232: end
# File lib/redcloth/formatters/html.rb, line 250
250: def ignored_line(opts)
251: opts[:text] + "\n"
252: end
# File lib/redcloth/formatters/html.rb, line 117
117: def image(opts)
118: opts.delete(:align)
119: opts[:alt] = opts[:title]
120: img = "<img src=\"#{escape_attribute opts[:src]}\"#{pba(opts)} alt=\"#{escape_attribute opts[:alt].to_s}\" />"
121: img = "<a href=\"#{escape_attribute opts[:href]}\">#{img}</a>" if opts[:href]
122: img
123: end
# File lib/redcloth/formatters/html.rb, line 242
242: def inline_html(opts)
243: if filter_html
244: html_esc(opts[:text], :html_escape_preformatted)
245: else
246: "#{opts[:text]}" # nil-safe
247: end
248: end
# File lib/redcloth/formatters/html.rb, line 54
54: def li_close(opts=nil)
55: "</li>\n"
56: end
# File lib/redcloth/formatters/html.rb, line 50
50: def li_open(opts)
51: "#{"\t" * opts[:nest]}<li#{pba(opts)}>#{opts[:text]}"
52: end
# File lib/redcloth/formatters/html.rb, line 113
113: def link(opts)
114: "<a href=\"#{escape_attribute opts[:href]}\"#{pba(opts)}>#{opts[:name]}</a>"
115: end
# File lib/redcloth/formatters/html.rb, line 200
200: def lt(opts)
201: "<"
202: end
# File lib/redcloth/formatters/html.rb, line 149
149: def multi_paragraph_quote(opts)
150: "“#{opts[:text]}"
151: end
# File lib/redcloth/formatters/html.rb, line 234
234: def notextile(opts)
235: if filter_html
236: html_esc(opts[:text], :html_escape_preformatted)
237: else
238: opts[:text]
239: end
240: end
# File lib/redcloth/formatters/html.rb, line 212
212: def quot(opts)
213: """
214: end
# File lib/redcloth/formatters/html.rb, line 141
141: def quote1(opts)
142: "‘#{opts[:text]}’"
143: end
# File lib/redcloth/formatters/html.rb, line 145
145: def quote2(opts)
146: "“#{opts[:text]}”"
147: end
# File lib/redcloth/formatters/html.rb, line 180
180: def registered(opts)
181: "®"
182: end
# File lib/redcloth/formatters/html.rb, line 137
137: def snip(opts)
138: "<pre#{pba(opts)}><code>#{opts[:text]}</code></pre>\n"
139: end
# File lib/redcloth/formatters/html.rb, line 216
216: def squot(opts)
217: "’"
218: end
# File lib/redcloth/formatters/html.rb, line 90
90: def table_close(opts)
91: "</table>\n"
92: end
# File lib/redcloth/formatters/html.rb, line 86
86: def table_open(opts)
87: "<table#{pba(opts)}>\n"
88: end
# File lib/redcloth/formatters/html.rb, line 73
73: def td(opts)
74: tdtype = opts[:th] ? 'th' : 'td'
75: "\t\t<#{tdtype}#{pba(opts)}>#{opts[:text]}</#{tdtype}>\n"
76: end
# File lib/redcloth/formatters/html.rb, line 82
82: def tr_close(opts)
83: "\t</tr>\n"
84: end
# File lib/redcloth/formatters/html.rb, line 271
271: def after_transform(text)
272: text.chomp!
273: end
# File lib/redcloth/formatters/html.rb, line 276
276: def before_transform(text)
277: clean_html(text) if sanitize_html
278: end
Clean unauthorized tags.
# File lib/redcloth/formatters/html.rb, line 317
317: def clean_html( text, allowed_tags = BASIC_TAGS )
318: text.gsub!( /<!\[CDATA\[/, '' )
319: text.gsub!( /<(\/*)([A-Za-z]\w*)([^>]*?)(\s?\/?)>/ ) do |m|
320: raw = $~
321: tag = raw[2].downcase
322: if allowed_tags.has_key? tag
323: pcs = [tag]
324: allowed_tags[tag].each do |prop|
325: ['"', "'", ''].each do |q|
326: q2 = ( q != '' ? q : '\s' )
327: if raw[3] =~ /#{prop}\s*=\s*#{q}([^#{q2}]+)#{q}/
328: attrv = $1
329: next if (prop == 'src' or prop == 'href') and not attrv =~ %{^(http|https|ftp):}
330: pcs << "#{prop}=\"#{attrv.gsub('"', '\\"')}\""
331: break
332: end
333: end
334: end if allowed_tags[tag]
335: "<#{raw[1]}#{pcs.join " "}#{raw[4]}>"
336: else # Unauthorized tag
337: if block_given?
338: yield m
339: else
340: ''
341: end
342: end
343: end
344: end
escapement for regular HTML (not in PRE tag)
# File lib/redcloth/formatters/html.rb, line 257
257: def escape(text)
258: html_esc(text)
259: end
escaping for HTML attributes
# File lib/redcloth/formatters/html.rb, line 267
267: def escape_attribute(text)
268: html_esc(text, :html_escape_attributes)
269: end
escapement for HTML in a PRE tag
# File lib/redcloth/formatters/html.rb, line 262
262: def escape_pre(text)
263: html_esc(text, :html_escape_preformatted)
264: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.