Class: Caramelize::WikkaToMarkdown
- Inherits:
-
Object
- Object
- Caramelize::WikkaToMarkdown
- Defined in:
- lib/caramelize/filters/wikka_to_markdown.rb
Overview
WikkaWiki formatting rules: docs.wikkawiki.org/FormattingRules
Instance Attribute Summary collapse
-
#source_body ⇒ Object
readonly
Returns the value of attribute source_body.
Instance Method Summary collapse
-
#initialize(source_body) ⇒ WikkaToMarkdown
constructor
A new instance of WikkaToMarkdown.
- #replace_code_block ⇒ Object
- #replace_formatting ⇒ Object
- #replace_headlines ⇒ Object
- #replace_images ⇒ Object
- #replace_inline_code ⇒ Object
- #replace_links ⇒ Object
- #replace_lists ⇒ Object
- #replace_wiki_links ⇒ Object
- #run ⇒ Object
- #target_body ⇒ Object
Constructor Details
#initialize(source_body) ⇒ WikkaToMarkdown
Returns a new instance of WikkaToMarkdown.
8 9 10 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 8 def initialize(source_body) @source_body = source_body end |
Instance Attribute Details
#source_body ⇒ Object (readonly)
Returns the value of attribute source_body.
6 7 8 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 6 def source_body @source_body end |
Instance Method Details
#replace_code_block ⇒ Object
62 63 64 65 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 62 def replace_code_block target_body.gsub!(/^%%\(?(\w+)\)?\s(.*?)%%\s?/m) { "```#{::Regexp.last_match(1)}\n#{::Regexp.last_match(2)}```\n" } target_body.gsub!(/^%%\s(.*?)%%\s?/m) { "```\n#{::Regexp.last_match(1)}```\n" } end |
#replace_formatting ⇒ Object
33 34 35 36 37 38 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 33 def replace_formatting target_body.gsub!(/(\*\*)(.*?)(\*\*)/) { |_s| "**#{::Regexp.last_match(2)}**" } # bold target_body.gsub!(%r{(//)(.*?)(//)}, '*\2*') # italic target_body.gsub!(/(__)(.*?)(__)/) { |_s| "<u>#{::Regexp.last_match(2)}</u>" } # underline target_body.gsub!(/(---)/, " ") # forced linebreak end |
#replace_headlines ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 25 def replace_headlines target_body.gsub!(/(======)(.*?)(======)/) { |_s| "# #{::Regexp.last_match(2)}" } # h1 target_body.gsub!(/(=====)(.*?)(=====)/) { |_s| "## #{::Regexp.last_match(2)}" } # h2 target_body.gsub!(/(====)(.*?)(====)/) { |_s| "### #{::Regexp.last_match(2)}" } # h3 target_body.gsub!(/(===)(.*?)(===)/) { |_s| "#### #{::Regexp.last_match(2)}" } # h4 target_body.gsub!(/(==)(.*?)(==)/) { |_s| "##### #{::Regexp.last_match(2)}" } # h5 end |
#replace_images ⇒ Object
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 67 def replace_images # {{image class="center" alt="DVD logo" title="An image link" url="images/dvdvideo.gif" link="RecentChanges"}} target_body.gsub!(/{{image\s(.*)}}/) do |image_match| url = image_match.match(/url="([^"]*)"/)[1] link = image_match.match(/link="([^"]*)"/) && image_match.match(/link="([^"]*)"/)[1] alt = image_match.match(/alt="([^"]*)"/) && image_match.match(/alt="([^"]*)"/)[1] link.nil? ? "" : "[[<img src=\"#{url}\" alt=\"#{alt}\">|#{link}]]" end end |
#replace_inline_code ⇒ Object
58 59 60 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 58 def replace_inline_code target_body.gsub!(/(%%)(.*?)(%%)/) { |_s| "`#{::Regexp.last_match(2)}`" } # h1 end |
#replace_links ⇒ Object
52 53 54 55 56 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 52 def replace_links target_body.gsub!(/\[{2}((\w+):\S[^| ]*)[| ](.*)\]{2}/, '[\3](\1)') target_body.gsub!(/\[{2}((\w+):.*)\]{2}/, '<\1>') end |
#replace_lists ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 40 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') # ordered list end |
#replace_wiki_links ⇒ Object
48 49 50 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 48 def replace_wiki_links target_body.gsub!(/\[{2}(\w+)[\s|](.+?)\]{2}/, '[[\2|\1]]') end |
#run ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 12 def run replace_headlines replace_formatting replace_lists replace_wiki_links replace_links replace_inline_code replace_code_block replace_images target_body end |
#target_body ⇒ Object
78 79 80 |
# File 'lib/caramelize/filters/wikka_to_markdown.rb', line 78 def target_body @target_body ||= source_body.dup end |