class SlackMarkdown::Filters::QuoteFilter

Public Instance Methods

call() click to toggle source
# File lib/slack_markdown/filters/quote_filter.rb, line 11
def call
  html = replace_quote_line(doc.to_s)
  collect_blockquote(html)
end

Private Instance Methods

collect_blockquote(html) click to toggle source
# File lib/slack_markdown/filters/quote_filter.rb, line 24
def collect_blockquote(html)
  doc = Nokogiri::HTML.fragment(html)
  doc.search('blockquote + blockquote').each do |node|
    next unless node.previous.name == 'blockquote'
    html = "<blockquote>#{node.previous.inner_html}#{node.inner_html}</blockquote>"
    node.previous.remove
    node.replace(html)
  end
  doc
end
replace_quote_line(str) click to toggle source
# File lib/slack_markdown/filters/quote_filter.rb, line 18
def replace_quote_line(str)
  str.gsub(/^&gt;\s*(.+)(?:\n|$)/) do
    "<blockquote>#{$1}\n</blockquote>"
  end
end