Sha256: f26c7d52d5d90cff06e2f8daaf3424270d5cf1f698b11f2c4484771800d6c0e9

Contents?: true

Size: 1.7 KB

Versions: 3

Compression:

Stored size: 1.7 KB

Contents

class Blogit::Parsers::MarkdownParser
  
  require "nokogiri"
  require "albino"
  require "blogit/renderers"
  
  # A String containing the content to be parsed  
  attr_reader :content
  
  def initialize(content)
    @content = content
  end

  # The parsed content 
  #
  # Returns an HTML safe String
  def parsed
    ensure_pygments_is_installed if Blogit::configuration.highlight_code_syntax
    markdown.render(content).html_safe
  end


  private
  
  
  # The Redcarpet renderer to use
  def renderer
    if Blogit::configuration.highlight_code_syntax
      Redcarpet::Render::HTMLWithAlbino
    else
      Redcarpet::Render::HTML
    end
  end
  
  # The Redcarpet Markdown handler
  def markdown
    @markdown ||= Redcarpet::Markdown.new(renderer,
      Blogit.configuration.redcarpet_options)
  end

  
  # Ensures pygments is installed
  # 
  # Raises StandardError if pygments is not available on this machine
  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

3 entries across 3 versions & 1 rubygems

Version Path
blogit-1.1.1 lib/blogit/parsers/markdown_parser.rb
blogit-1.1.0 lib/blogit/parsers/markdown_parser.rb
blogit-1.0.0 lib/blogit/parsers/markdown_parser.rb