class Minidown::TextElement
Constants
- EscapeChars
- EscapeRegexp
- Regexp
Attributes
convert[RW]
escape[RW]
sanitize[RW]
Public Class Methods
new(*_)
click to toggle source
Calls superclass method
Minidown::Element::new
# File lib/minidown/elements/text_element.rb, line 28 def initialize *_ super @escape = true @sanitize = false @convert = true end
Public Instance Methods
content()
click to toggle source
Calls superclass method
# File lib/minidown/elements/text_element.rb, line 39 def content str = super str = convert_str(str) if convert escape_content! str escape_str! str escape_html str if sanitize str end
convert_str(str)
click to toggle source
# File lib/minidown/elements/text_element.rb, line 77 def convert_str str #auto link str.gsub! Regexp[:auto_link] do |origin_str| build_tag 'a'.freeze, href: origin_str do |a| a << origin_str end end #auto email str.gsub! Regexp[:auto_email] do |origin_str| build_tag 'a'.freeze, href: "mailto:#{origin_str}" do |a| a << origin_str end end #parse <link> str.gsub! Regexp[:quotlink] do |origin_str| link = $1 attr = case link when Regexp[:link_scheme] {href: link} when Regexp[:email] {href: "mailto:#{link}"} end attr ? build_tag('a'.freeze, attr){|a| a << link} : origin_str end #parse * _ Regexp.values_at(:star, :underline).each do |regex| str.gsub! regex do |origin_str| tag_name = $1.size > 1 ? 'strong'.freeze : 'em'.freeze build_tag tag_name do |tag| tag << $2 end end end #parse ~~del~~ str.gsub! Regexp[:delete_line] do |origin_str| build_tag 'del'.freeze do |tag| tag << $1 end end #convert image reference str.gsub! Regexp[:image_ref] do |origin_str| alt = $1 id = ($2 && !$2.empty?) ? $2 : $1 ref = doc.links_ref[id.downcase] if ref attr = {src: ref[:url], alt: alt} attr[:title] = ref[:title] if ref[:title] && !ref[:title].empty? build_tag 'img'.freeze, attr else origin_str end end #convert image syntax str.gsub! Regexp[:image] do alt, url = $1, $2 url =~ Regexp[:link_title] title = $1 url =~ Regexp[:link_url] url = $1 attr = {src: url, alt: alt} attr[:title] = title if title build_tag 'img'.freeze, attr end #convert link reference str.gsub! Regexp[:link_ref] do |origin_str| text = $1 id = ($2 && !$2.empty?) ? $2 : $1 ref = doc.links_ref[id.downcase] if ref attr = {href: ref[:url]} attr[:title] = ref[:title] if ref[:title] && !ref[:title].empty? build_tag 'a'.freeze, attr do |a| a << text end else origin_str end end #convert link syntax str.gsub! Regexp[:link] do text, url = $1, $2 url =~ Regexp[:link_title] title = $1 url =~ Regexp[:link_url] url = $1 attr = {href: url} attr[:title] = title if title build_tag 'a'.freeze, attr do |content| content << text end end escape_content! str #inline code str.gsub! Regexp[:inline_code] do |origin_str| build_tag 'code'.freeze do |code| code << escape_html($2) end end escape_str! str @escape = false str end
escape_content!(str)
click to toggle source
# File lib/minidown/elements/text_element.rb, line 56 def escape_content! str return str unless @escape escape_html str str.gsub! Regexp[:tag] do left, tag, right = $1, $2, $3 tag.gsub! Regexp[:quot] do '"'.freeze end left = left.size.odd? ? "#{left[0..-2]}<" : "#{left}<" if left left ||= "<".freeze right = right.size.odd? ? "#{right[0..-2]}>" : "#{right}>" if right right ||= ">".freeze "#{left}#{tag}#{right}" end str end
escape_html(str)
click to toggle source
# File lib/minidown/elements/text_element.rb, line 52 def escape_html str str.replace Utils.escape_html(str) end
escape_str!(str)
click to toggle source
# File lib/minidown/elements/text_element.rb, line 48 def escape_str! str str.gsub!(EscapeRegexp, '\\1'.freeze) if escape end
paragraph()
click to toggle source
# File lib/minidown/elements/text_element.rb, line 190 def paragraph ParagraphElement.new doc, raw_content end
parse()
click to toggle source
# File lib/minidown/elements/text_element.rb, line 35 def parse nodes << self end
to_html()
click to toggle source
# File lib/minidown/elements/text_element.rb, line 194 def to_html content end