Sha256: 57a4903f4ed023b505255f5e98ec3a98676172f79b688809bd6d798126ccb0d4

Contents?: true

Size: 1.89 KB

Versions: 1

Compression:

Stored size: 1.89 KB

Contents

require 'html/pipeline'
require 'filters/filters'
require 'nokogiri'
require 'jekyll-override' unless defined?(Jekyll).nil?

Dir[File.join(File.expand_path(File.dirname(__FILE__)), "filters", "pre", "*.rb")].each do |file|
  require file
end

Dir[File.join(File.expand_path(File.dirname(__FILE__)), "filters", "post", "*.rb")].each do |file|
  require file
end

class ExtendedMarkdownFilter < HTML::Pipeline::MarkdownFilter
  include Filters::PreFilter
  include Filters::PostFilter

  EMF_CURLY_TAGS = %w(intro mac windows linux all tip note warning danger).join('|')

  def initialize(text, context = nil, result = nil)
    if context[:emf_use_blocks]
      text = self.class.convert_curly_to_bracket(text)
    end

    Filters.context = context

    # do preprocessing, then call HTML::Pipeline::Markdown
    text = format_command_line    text
    text = format_helper          text

    super text, context, result
  end

  def self.convert_curly_to_bracket(text)
    return text if text.nil?
    text = text.gsub(/\{\{\s*#(#{EMF_CURLY_TAGS})\s*\}\}/, '[[#\1]]')
    text = text.gsub(/\{\{\s*\/(#{EMF_CURLY_TAGS})\s*\}\}/, '[[/\1]]')
    text = text.gsub(/\{\{\s*(octicon-\S+\s*[^\}]+)\s*\}\}/,  '[[\1]]')

    text
  end

  def self.should_jekyll_replace?(site)
    html_pipeline_context = site.site_payload["site"]["html_pipeline"] && site.site_payload["site"]["html_pipeline"]["context"]
    pipeline_emf_context = site.site_payload["site"]["html_pipeline"]["context"][:emf_use_blocks] || site.site_payload["site"]["html_pipeline"]["context"]["emf_use_blocks"]
    site.site_payload["site"]["markdown"] == "HTMLPipeline" && html_pipeline_context && pipeline_emf_context
  end

  def call
    # initialize HTML::Pipeline::Markdown, then do post-processing
    html = super

    format_intro!           html
    format_os_blocks!       html
    format_admonitions!     html
    format_octicons!        html

    html
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
extended-markdown-filter-0.4.4 lib/extended-markdown-filter.rb