Class: Caramelize::Wikka2Markdown

Inherits:
Object
  • Object
show all
Defined in:
lib/caramelize/filters/wikka_to_markdown.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source_body) ⇒ Wikka2Markdown

Returns a new instance of Wikka2Markdown.



5
6
7
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 5

def initialize(source_body)
  @source_body = source_body
end

Instance Attribute Details

#source_bodyObject (readonly)

Returns the value of attribute source_body.



3
4
5
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 3

def source_body
  @source_body
end

Instance Method Details

#replace_code_blockObject



57
58
59
60
61
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 57

def replace_code_block
  target_body.gsub!(/^%%\s(.*?)%%\s?/m) do
    $1.gsub(/^/, '    ')
  end
end

#replace_formattingObject



31
32
33
34
35
36
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 31

def replace_formatting
  target_body.gsub!(/(\*\*)(.*?)(\*\*)/) {|s| '**' + $2 + '**' }   #bold
  target_body.gsub!(/(\/\/)(.*?)(\/\/)/, '*\2*') #italic
  target_body.gsub!(/(__)(.*?)(__)/) {|s| '<u>' + $2 + '</u>'}   #underline
  target_body.gsub!(/(---)/, '  ')   #forced linebreak
end

#replace_headlinesObject



23
24
25
26
27
28
29
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 23

def replace_headlines
  target_body.gsub!(/(======)(.*?)(======)/ ) {|s| '# ' + $2 } #h1
  target_body.gsub!(/(=====)(.*?)(=====)/) {|s| '## ' + $2 }   #h2
  target_body.gsub!(/(====)(.*?)(====)/) {|s| '### ' + $2 }   #h3
  target_body.gsub!(/(===)(.*?)(===)/) {|s| '#### ' + $2 }   #h4
  target_body.gsub!(/(==)(.*?)(==)/) {|s| '##### ' + $2 }   #h5
end


51
52
53
54
55
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 51

def replace_links
  target_body.gsub!(/[\[]{2}((\w+):[\S][^\| ]*)[\| ](.*)[\]]{2}/,
             '[\3](\1)')
  target_body.gsub!(/[\[]{2}((\w+):.*)[\]]{2}/, '<\1>')
end

#replace_listsObject



38
39
40
41
42
43
44
45
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 38

def replace_lists
  target_body.gsub!(/(\t-\s?)(.*)/, '* \2')    # unordered list
  target_body.gsub!(/(~-\s?)(.*)/, '* \2')     # unordered list
  target_body.gsub!(/(    -\s?)(.*)/, '* \2')     # unordered list

  target_body.gsub!(/(~1\)\s?)(.*)/, '1. \2')     # unordered list
  # TODO ordered lists
end


47
48
49
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 47

def replace_wiki_links
  target_body.gsub!(/[\[]{2}(\w+)[\s|](.+?)[\]]{2}/, '[[\2|\1]]')
end

#runObject



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 9

def run
  # TODO images: ({{image)(url\=?)?(.*)(}})
  # markdown: ![Tux, the Linux mascot](/assets/images/tux.png)

  replace_headlines
  replace_formatting
  replace_lists
  replace_wiki_links
  replace_links
  replace_code_block

  target_body
end

#target_bodyObject



63
64
65
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 63

def target_body
  @target_body ||= source_body.dup
end