Sha256: efb33fb516885aace42749887dbe1ba0848cd66808e21c8e3f352a4ff55841c4
Contents?: true
Size: 1.82 KB
Versions: 1
Compression:
Stored size: 1.82 KB
Contents
require "md2pukiwiki/version" module Md2pukiwiki def self.convert(text) text.lines.map do |line| new_line = line.chomp new_line = convert_header(new_line) new_line = convert_list(new_line) new_line = convert_numbered_list(new_line) new_line = convert_bold_text(new_line) new_line = convert_italic_text(new_line) new_line = convert_strikethrough_text(new_line) new_line = convert_image(new_line) new_line = convert_link(new_line) new_line end.join("\n") end private # "# header" => "*header" def self.convert_header(line) if /\A(?<sharps>#+) (?<header>.+)\z/ =~ line "#{'*' * sharps.length}#{header}" else line end end # "* list" => "- list" def self.convert_list(line) if /\A(?<spaces>\s*)\* (?<list>.+)\z/ =~ line "#{'-' * (spaces.length / 4 + 1)} #{list}" else line end end # "1. list" => "+ list" def self.convert_numbered_list(line) if /\A(?<spaces>\s*)\d+\. (?<list>.+)\z/ =~ line "#{'+' * (spaces.length / 4 + 1)} #{list}" else line end end # "**bold**" => "''bold''" def self.convert_bold_text(line) line.gsub(/(?:\*{2}|_{2})(?<bold>.+?)(?:\*{2}|_{2})/, "''\\k<bold>''") end # "*italic*" => "'''italic'''" def self.convert_italic_text(line) line.gsub(/(?:\*{1}|_{1})(?<italic>.+?)(?:\*{1}|_{1})/, "'''\\k<italic>'''") end def self.convert_strikethrough_text(line) line.gsub(/~{2}(?<strikethrough>.+?)~{2}/, '%%\k<strikethrough>%%') end # "" => "#ref(image,text)" def self.convert_image(line) line.gsub(/!\[(?<text>.+?)\]\((?<image>.+?)\)/, '#ref(\k<image>,\k<text>)') end # "[text](link)" => "[[text:link]]" def self.convert_link(line) line.gsub(/\[(?<text>.+?)\]\((?<link>.+?)\)/, '[[\k<text>:\k<link>]]') end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
md2pukiwiki-0.0.1 | lib/md2pukiwiki.rb |