Sha256: 01fef770d87a863260152c10a0e6598227520f78a04828cd67dfc472f07fd293

Contents?: true

Size: 1.31 KB

Versions: 23

Compression:

Stored size: 1.31 KB

Contents

module Jekyll
  
  class HighlightBlock < Liquid::Block
    include Liquid::StandardFilters
    # we need a language, but the linenos argument is optional.
    SYNTAX = /(\w+)\s?(:?linenos)?\s?/
    
    def initialize(tag_name, markup, tokens)
      super
      if markup =~ SYNTAX
        @lang = $1
        if defined? $2
          # additional options to pass to Albino.
          @options = { 'O' => 'linenos=inline' }
        else
          @options = {}
        end
      else
        raise SyntaxError.new("Syntax Error in 'highlight' - Valid syntax: highlight <lang> [linenos]")
      end
    end
  
    def render(context)
      if Jekyll.pygments
        render_pygments(context, super.to_s)
      else
        render_codehighlighter(context, super.to_s)
      end
    end
    
    def render_pygments(context, code)
      if Jekyll.content_type == :markdown
        return "\n" + Albino.new(code, @lang).to_s(@options) + "\n"
      else
        "<notextile>" + Albino.new(code, @lang).to_s(@options) + "</notextile>"
      end
    end
    
    def render_codehighlighter(context, code)
    #The div is required because RDiscount blows ass
      <<-HTML
<div>
  <pre>
    <code class='#{@lang}'>#{h(code).strip}</code>
  </pre>
</div>
      HTML
    end
  end
  
end

Liquid::Template.register_tag('highlight', Jekyll::HighlightBlock)

Version data entries

23 entries across 23 versions & 11 rubygems

Version Path
calavera-jekyll-0.4.1 lib/jekyll/tags/highlight.rb
codeslinger-jekyll-0.4.1 lib/jekyll/tags/highlight.rb
danski-jekyll-0.4.1 lib/jekyll/tags/highlight.rb
dysinger-jekyll-0.4.0 lib/jekyll/tags/highlight.rb
jsjohnst-jekyll-0.4.1.999.1 lib/jekyll/tags/highlight.rb
jsjohnst-jekyll-0.4.1.999.2 lib/jekyll/tags/highlight.rb
jsjohnst-jekyll-0.4.1.999.3 lib/jekyll/tags/highlight.rb
jsjohnst-jekyll-0.4.1.999.4 lib/jekyll/tags/highlight.rb
matflores-jekyll-0.4.1.1 lib/jekyll/tags/highlight.rb
matflores-jekyll-0.4.1 lib/jekyll/tags/highlight.rb
matflores-jekyll-0.4.2 lib/jekyll/tags/highlight.rb
matflores-jekyll-0.4.3 lib/jekyll/tags/highlight.rb
mattmatt-jekyll-0.4.0 lib/jekyll/tags/highlight.rb
mattmatt-jekyll-0.4.1 lib/jekyll/tags/highlight.rb
mattmatt-jekyll-0.4.3 lib/jekyll/tags/highlight.rb
mattmatt-jekyll-0.4.4 lib/jekyll/tags/highlight.rb
mattmatt-jekyll-0.4.5 lib/jekyll/tags/highlight.rb
mojombo-jekyll-0.4.0 lib/jekyll/tags/highlight.rb
mojombo-jekyll-0.4.1 lib/jekyll/tags/highlight.rb
qrush-jekyll-0.4.0 lib/jekyll/tags/highlight.rb