Sha256: f5741e4699a6ba7dd5584e59361b61d3048cd4aa6e4fac3cdb27d8bd2cf70837

Contents?: true

Size: 1.33 KB

Versions: 2

Compression:

Stored size: 1.33 KB

Contents

class Blogit::Parsers::MarkdownParser
  
  require "nokogiri"
  require "albino"
  require "blogit/renderers"
    
  def initialize(content)
    @content = content
  end

  def parsed
    ensure_pygments_is_installed if Blogit::configuration.highlight_code_syntax
    
    renderer = Blogit::configuration.highlight_code_syntax ?  Redcarpet::Render::HTMLWithAlbino : Redcarpet::Render::HTML
    markdown = Redcarpet::Markdown.new(renderer, Blogit.configuration.redcarpet_options)
    html_content = markdown.render(@content).html_safe
  end

  private
  
  def ensure_pygments_is_installed
    warning = <<-WARNING
[blogit] The pygmentize command could not be found in your load path!
         Please either do one of the following:

         $ sudo easy_install Pygments # to install it
         
         or 
         
         set config.highlight_code_syntax to false in your blogit.rb config file.
         
WARNING
    raise warning unless which(:pygmentize)
  end
  
  # Check if an executable exists in the load path
  # Returns nil if no executable is found
  def which(cmd)
    exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
    ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
      exts.each do |ext|
        exe = File.join(path, "#{cmd}#{ext}")
        return exe if File.executable? exe
      end
    end
    return nil
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
blogit-1.0.0.rc1 lib/blogit/parsers/markdown_parser.rb
blogit-0.8.0 lib/blogit/parsers/markdown_parser.rb