themes/classic/_plugins/blockquote.rb
8698a276
 #
ab29d45a
 # Author: Brandon Mathis
 # Based on the work of: Josediaz Gonzalez - https://github.com/josegonzalez/josediazgonzalez.com/blob/master/_plugins/blockquote.rb
8698a276
 #
f77db800
 # Outputs a string with a given attribution as a quote
 #
 #   {% blockquote Bobby Willis http://google.com/blah the search for bobby's mom %}
 #   Wheeee!
 #   {% endblockquote %}
 #   ...
 #   <blockquote>
 #     <p>Wheeee!</p>
 #     <footer>
 #     <strong>John Paul Jones</strong><cite><a href="http://google.com/blah">The Search For Bobby's Mom</a>
 #   </blockquote>
 #
8698a276
 require './_plugins/titlecase.rb'
 module Jekyll
 
   class Blockquote < Liquid::Block
     FullCiteWithTitle = /([\w\s]+)(https?:\/\/)(\S+\s)([\w\s]+)/i
     FullCite = /([\w\s]+)(https?:\/\/)(\S+)/i
     Author =  /([\w\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 = super
ab29d45a
       author = "<strong>#{@by}</strong>"
       cite = "<cite><a class='source' href='#{@source}'>#{(@title || 'source')}</a></cite>"
       reply = if @by.nil?
         "<p>#{output.join.gsub(/\n\n/, '</p><p>')}</p>"
8698a276
       elsif !@source.nil?
ab29d45a
         "<p>#{output.join.gsub(/\n\n/, '</p><p>')}</p><footer>#{author + cite}</footer>"
8698a276
       else
ab29d45a
         "<p>#{output.join.gsub(/\n\n/, '</p><p>')}</p><footer>#{author}</footer>"
8698a276
       end
ab29d45a
       "<blockquote>#{reply}</blockquote>"
8698a276
     end
   end
 end
 
 Liquid::Template.register_tag('blockquote', Jekyll::Blockquote)