Class: ExtendedMarkdownFilter

Inherits:
HTML::Pipeline::MarkdownFilter
  • Object
show all
Includes:
Filters::PostFilter, Filters::PreFilter
Defined in:
lib/extended-markdown-filter.rb

Constant Summary collapse

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

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Filters::PostFilter

#format_admonitions!, #format_intro!, #format_octicons!, #format_os_blocks!

Methods included from Filters::PreFilter

#format_command_line, #format_helper

Constructor Details

#initialize(text, context = nil, result = nil) ⇒ ExtendedMarkdownFilter

Returns a new instance of ExtendedMarkdownFilter.



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/extended-markdown-filter.rb', line 20

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

Class Method Details

.convert_curly_to_bracket(text) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/extended-markdown-filter.rb', line 34

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

.should_jekyll_replace?(site) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
46
47
# File 'lib/extended-markdown-filter.rb', line 43

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

Instance Method Details

#callObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/extended-markdown-filter.rb', line 49

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