mirror of
https://github.com/WatchOutNewsAgency/wona.github.com.git
synced 2026-01-01 01:16:26 +00:00
Moved plugins to root directory. I'm ditching the idea of shipping plugins with themes until it's more obviously necessary. This way it's easier to merge and update plugins.
This commit is contained in:
74
plugins/blockquote.rb
Normal file
74
plugins/blockquote.rb
Normal file
@ -0,0 +1,74 @@
|
||||
#
|
||||
# Author: Brandon Mathis
|
||||
# A full rewrite based on the work of: Josediaz Gonzalez - https://github.com/josegonzalez/josediazgonzalez.com/blob/master/_plugins/blockquote.rb
|
||||
#
|
||||
# Outputs a string with a given attribution as a quote
|
||||
#
|
||||
# {% blockquote Bobby Willis http://google.com/search?q=pants the search for bobby's pants %}
|
||||
# Wheeee!
|
||||
# {% endblockquote %}
|
||||
# ...
|
||||
# <blockquote>
|
||||
# <p>Wheeee!</p>
|
||||
# <footer>
|
||||
# <strong>Bobby Willis</strong><cite><a href="http://google.com/search?q=pants">The Search For Bobby's Pants</a>
|
||||
# </blockquote>
|
||||
#
|
||||
require './plugins/titlecase.rb'
|
||||
|
||||
module Jekyll
|
||||
|
||||
class Blockquote < Liquid::Block
|
||||
FullCiteWithTitle = /(\S[\S\s]*)\s+(https?:\/\/)(\S+)\s+(.+)/i
|
||||
FullCite = /(\S[\S\s]*)\s+(https?:\/\/)(\S+)/i
|
||||
Author = /(\S[\S\s]*)/
|
||||
|
||||
def initialize(tag_name, markup, tokens)
|
||||
@by = nil
|
||||
@source = nil
|
||||
@title = nil
|
||||
if markup =~ FullCiteWithTitle
|
||||
@by = $1
|
||||
@source = $2 + $3
|
||||
@title = $4.titlecase
|
||||
elsif markup =~ FullCite
|
||||
@by = $1
|
||||
@source = $2 + $3
|
||||
elsif markup =~ Author
|
||||
@by = $1
|
||||
end
|
||||
super
|
||||
end
|
||||
|
||||
def render(context)
|
||||
output = paragraphize(super.map(&:strip).join)
|
||||
author = "<strong>#{@by.strip}</strong>"
|
||||
if @source
|
||||
url = @source.match(/https?:\/\/(.+)/)[1].split('/')
|
||||
parts = []
|
||||
url.each do |part|
|
||||
if (parts + [part]).join('/').length < 32
|
||||
parts << part
|
||||
end
|
||||
end
|
||||
source = parts.join('/')
|
||||
source << '/…' unless source == @source
|
||||
end
|
||||
cite = "<cite><a href='#{@source}'>#{(@title || source)}</a></cite>"
|
||||
result = if @by.nil?
|
||||
output
|
||||
elsif !@source.nil?
|
||||
"#{output}<footer>#{author + cite}</footer>"
|
||||
else
|
||||
"#{output}<footer>#{author}</footer>"
|
||||
end
|
||||
"<blockquote>#{result}</blockquote>"
|
||||
end
|
||||
|
||||
def paragraphize(input)
|
||||
"<p>#{input.gsub(/\n\n/, '</p><p>').gsub(/\n/, '<br/>')}</p>"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Liquid::Template.register_tag('blockquote', Jekyll::Blockquote)
|
||||
Reference in New Issue
Block a user