module UltraMarkdown::Filter::BlockQuote
Constants
- Author
- AuthorTitle
- FullCite
- FullCiteWithTitle
Public Instance Methods
liquid_blockquote(input)
click to toggle source
# File lib/ultra_markdown/filter/block_quote.rb, line 12 def liquid_blockquote(input) input.gsub!(/^\{\% *blockquote([^\n\}]+)?\%\} ?\n?(.+?)\n?\{\% *endblockquote *\%\}/m) do markup = $1 content = $2 by = nil source = nil title = nil author = nil if markup =~ FullCiteWithTitle by = $1 source = $2 + $3 title = $4.titlecase.strip elsif markup =~ FullCite by = $1 source = $2 + $3 elsif markup =~ AuthorTitle by = $1 title = $2.titlecase.strip elsif markup =~ Author by = $1 end quote = "<p>#{content.lstrip.rstrip.gsub(/\n\s*\n/, '</p><p>').gsub(/\n/, '<br/>')}</p>" author = "<strong>#{by.strip}</strong>" if by && !by.blank? if source url = source.match(/https?:\/\/(.+)/)[1].split('/') parts = [] url.each do |part| if (parts + [part]).join('/').length < 32 parts << part end end source_temp = parts.join('/') source << '/…' if source_temp != source end if !source.nil? cite = " <cite><a href='#{source}'>#{(title || source)}</a></cite>" elsif !title.nil? cite = " <cite>#{title}</cite>" end blockquote = "<blockquote>#{quote}</blockquote>" caption = "" caption = "<figcaption>— #{author}#{cite}</figcaption>" if author or cite "<figure class='figure-quote'>#{blockquote}#{caption}</figure>" end end