Sha256: e9bc4ef9984c26e401dad494e5d92cdb05710877bc4653c4d76be722483f317b

Contents?: true

Size: 618 Bytes

Versions: 3

Compression:

Stored size: 618 Bytes

Contents

require 'albino'

module Jack
  
  class Highlight
    def self.render(content)
      self.new.render(content)
    end
  
    def render(content)
      content.gsub(highlight_regex) do |s|
        Albino.new(unescape($2), extract_lang($1))
      end
    end
  
    private
    def unescape(content)
      CGI::unescapeHTML content
    end
  
    def extract_lang(attributes)
      result = :ruby
      attributes.gsub(/(language|lang)=('|")([0-z]+)('|")/i) do |s|
        result = $3.to_sym
      end
      result
    end
    
    def highlight_regex
      /<pre><code([^<>]*)>(.*?)<\/code><\/pre>/im
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jackb-0.0.3 lib/jack/highlight.rb
jackb-0.0.2 lib/jack/highlight.rb
jackb-0.0.1 lib/jack/highlight.rb