Sha256: edecc2b22df583c63697809cf78b8cd8789d6fc6fb3554aa6ceff983d7be0dd0

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

require 'html/pipeline'
require 'filters/filters'
require 'nokogiri'

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 warning error).join('|')

  def initialize(text, context = nil, result = nil)
    if defined?(Jekyll) && context[:emf_use_blocks]
      require 'jekyll-override'
    end

    if context[:emf_use_blocks]
      text = self.class.convert_curly_to_bracket(text)
    end

    Filters.context = context

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

    super text, context, result
  end

  def self.convert_curly_to_bracket(text)
    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 call
    # initialize HTML::Pipeline::Markdown, then do post-processing
    html = super

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

    doc = Nokogiri::HTML(html)
    doc.css(".command-line a").each do |node|
      node.replace Nokogiri::XML::Text.new(node.text, node.document)
    end

    doc.to_s
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

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