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.