Class: AdditionalMarkdownFilter

Inherits:
HTML::Pipeline::MarkdownFilter
  • Object
show all
Defined in:
lib/additional-markdown-filter.rb

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of AdditionalMarkdownFilter.



4
5
6
7
8
9
10
# File 'lib/additional-markdown-filter.rb', line 4

def initialize(text, context = nil, result = nil)
  # do preprocessing, then call HTML::Pipeline::Markdown
  format_command_line!    text
  format_helper!          text

  super text, context, result
end

Instance Method Details

#callObject



12
13
14
15
16
17
18
19
20
21
# File 'lib/additional-markdown-filter.rb', line 12

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

  format_intro!           html
  format_os_blocks!       html
  format_admonition!      html

  html
end

#format_admonition!(html) ⇒ Object



65
66
67
68
# File 'lib/additional-markdown-filter.rb', line 65

def format_admonition!(html)
  html.gsub!(/<p>{{#(tip|warning|error)}}<\/p>/,  '<div class="alert \1">')
  html.gsub!(/<p>{{\/(tip|warning|error)}}<\/p>/, '</div>')
end

#format_command_line!(text) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/additional-markdown-filter.rb', line 23

def format_command_line!(text)
  text.gsub! /\n?``` command-line(.+?)```/m do |block|
    block.gsub! /^``` command-line/, '<pre class="command-line">'
    block.gsub! /^```$/, "</pre>\n"
    block.gsub!(/^\$ (.+)$/) { %Q|<span class="command">#{$1.rstrip}</span>| }
    block.gsub!(/^(\# .+)$/) { %Q|<span class="comment">#{$1.rstrip}</span>| }
    block.gsub!(/^> (.+)$/) { %Q|<span class="output"><span># </span>#{$1.rstrip}</span>| }

    block
  end
end

#format_helper!(text) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/additional-markdown-filter.rb', line 35

def format_helper!(text)
  text.gsub! /\n?``` helper(.+?)```/m do |block|
    block.gsub! /^``` helper\s*/, ''
    block.gsub! /^```$/, ''

    header = ''
    block.gsub! /^#### (.+?)$/ do
      header = $1.strip
      ''
    end

    content = block.strip
    content = "<p>#{content}</p>" unless content =~ /^<p/
    content = "<div class='helper'><h4 class='header'><a href='#'>#{header}</a></h4><div class='content'>#{content}</div></div>"
  end
end

#format_intro!(html) ⇒ Object



52
53
54
55
# File 'lib/additional-markdown-filter.rb', line 52

def format_intro!(html)
  html.gsub!(/<p>{{#intro}}<\/p>/,    '<div class="intro">')
  html.gsub!(/<p>{{\/intro}}<\/p>/,   '</div>')
end

#format_os_blocks!(html) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/additional-markdown-filter.rb', line 57

def format_os_blocks!(html)
  html.gsub!(/<p>{{#mac}}<\/p>/,     '<div class="platform-mac">')
  html.gsub!(/<p>{{#windows}}<\/p>/, '<div class="platform-windows">')
  html.gsub!(/<p>{{#linux}}<\/p>/,   '<div class="platform-linux">')
  html.gsub!(/<p>{{#all}}<\/p>/,     '<div class="platform-all">')
  html.gsub!(/<p>{{\/(mac|windows|linux|all)}}<\/p>/, '</div>')
end