13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/ultra_markdown/filter/block_quote.rb', line 13
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
|