f77db800 |
#
# Author: Brandon Mathis |
8897083c |
# Based on the semantic pullquote technique by Maykel Loomans at http://miekd.com/articles/pull-quotes-with-html5-and-css/ |
f77db800 |
#
# Outputs a span with a data-pullquote attribute set from the marked pullquote. Example:
# |
d5a02a78 |
# {% pullquote %} |
f77db800 |
# When writing longform posts, I find it helpful to include pullquotes, which help those scanning a post discern whether or not a post is helpful.
# It is important to note, {" pullquotes are merely visual in presentation and should not appear twice in the text. "} That is why it is prefered
# to use a CSS only technique for styling pullquotes.
# {% endpullquote %}
# ...will output...
# <p>
# <span data-pullquote="pullquotes are merely visual in presentation and should not appear twice in the text.">
# When writing longform posts, I find it helpful to include pullquotes, which help those scanning a post discern whether or not a post is helpful. |
21803814 |
# It is important to note, pullquotes are merely visual in presentation and should not appear twice in the text. This is why a CSS only approach
# for styling pullquotes is prefered. |
f77db800 |
# </span>
# </p>
# |
21803814 |
# {% pullquote left %} will create a left-aligned pullquote instead.
#
# Note: this plugin now creates pullquotes with the class of pullquote-right by default |
f77db800 |
module Jekyll
class PullquoteTag < Liquid::Block
def initialize(tag_name, markup, tokens) |
21803814 |
@align = (markup =~ /left/i) ? "left" : "right" |
f77db800 |
super
end
def render(context)
output = super |
e53b26ad |
if output =~ /\{"\s*(.+?)\s*"\}/m |
d5a02a78 |
@quote = RubyPants.new($1).to_html |
e53b26ad |
"<span class='pullquote-#{@align}' data-pullquote='#{@quote}'>#{output.gsub(/\{"\s*|\s*"\}/, '')}</span>" |
f77db800 |
else |
8e489ac2 |
return "Surround your pullquote like this {\" text to be quoted \"}" |
f77db800 |
end
end
end
end
Liquid::Template.register_tag('pullquote', Jekyll::PullquoteTag) |