class Ever2boost::MdConverter
Public Class Methods
convert(note_content)
click to toggle source
params: String
"<note>(/.*/)</note>" (import) or "<?xml>(/.*/)</en-note>" (convert)
return:
markdown content
# File lib/ever2boost/md_converter.rb, line 12 def convert(note_content) en_note = nil REXML::Document.new(note_content).elements.each('*') { |el| en_note = el.to_s || en_note + el.to_s } if en_note.nil? note_content else # build table en_note.sub(/<tr(.*?)>(.*?)<\/tr>/m, '') number_of_row = $2.nil? ? 0 : $2.scan(/<\/td>/).size en_note.gsub(/<div(.*?)-en-codeblock(.*?)><div(.*?)>(.*?)<\/div><\/div>/, '\n```\n\4\n```') code_block = $4 en_note.gsub(/<en-note(.*?)>(.*?)<\/en-note>/m, '\2') .gsub(/<en-note\/>/, '') .gsub(/<\/en-note>/, '') .gsub(/\\n(\ *)/, '\n') .gsub(/(\ *?)/m, '') .gsub(/^\s*/, '') .gsub(/<div(.*?)-en-codeblock(.*?)><div(.*?)>(.*?)<\/div><\/div>/, "\n```\n#{code_block}\n```") .gsub(/<div(.*?)>(.*?)<\/div>/m, '\2') .gsub(/<div(.*?)>/, '') .gsub(/<\/div>/, '') .gsub(/#+/, '\0 ') .gsub(/<span(.*?)>(.*?)<\/span>/m, '\2') .gsub(/<span(.*?)>/, '\2') .gsub(/<\/span>/, '') .gsub(/<p(.*?)>(.*?)<\/p>/m, '\2') .gsub(/<p(.*?)>(.*?)<p\/>/m, '\2') .gsub(/<p(.*?)>/m, '') .gsub(/<ul(.*?)>(.*?)<\/ul>/m, '\2') .gsub(/<br(.*?)>/, '\n') .gsub(/<li(.*?)>(.*?)<\/li>/, '* \2') .gsub(/<a\ href=['|"](.*?)['|"](.*?)>(.*?)<\/a>/m, '[\3](\1)') .gsub(/<en-todo(.*?)>/, '*\ [\ ]\ ') .gsub(/<strong>\\n<\/strong>/, '') .gsub(/<strong(.*?)>(.*?)<\/strong>/, '**\2**') .gsub(/<center(.*?)>(.*?)<\/center>/, '') .gsub(/<s>\\n<\/s>/, '') .gsub(/<s>([^\n].+?)<\/s>/, '~~\1~~') .gsub(/<i>\\n<\/i>/, '') .gsub(/<i>([^\n].+?)<\/i>/, '*\1*') .gsub(/<i(.*?)>(.*?)<\/i>/m, '*\2*') .gsub(/<em>\\n<\/em>/, '') .gsub(/<em>([^\n].+?)<\/em>/, '_\1_') .gsub(/<em(.*?)>(.*?)<\/em>/, '_\2_') .gsub(/<b>([^\n].+?)<\/b>/, '**\1**') .gsub(/<b>\\n<\/b>/, '') .gsub(/<font(.*?)>(.*?)<\/font>/, '\2') .gsub(/<tr(.*?)>(.*?)<\/tr>(\n*?)/m, '|\2') .gsub(/<td(.*?)>(.*?)\n\\n<\/td>/m, '\2|') .gsub(/<td(.*?)>(.*?)<\/td>/m, '\2|') .gsub(/<\/tbody>/, '') .gsub(/<\/table>/, '') .gsub(/<table(.*?)>/, "#{'|' * (number_of_row + 1)}\n#{('|-' * (number_of_row + 1)).chop}") .gsub(/<tbody(.*?)>/, '') .gsub(/<p(.*?)>(.*?)<\/p>/, '\2') .gsub(/<h1(.*?)>(.*?)<\/h1>/, '#\ \2') .gsub(/<h2(.*?)>(.*?)<\/h2>/, '##\ \2') .gsub(/<h3(.*?)>(.*?)<\/h3>/, '###\ \2') .gsub(/<h4(.*?)>(.*?)<\/h4>/, '####\ \2') .gsub(/<h5(.*?)>(.*?)<\/h5>/, '#####\ \2') .gsub(/<pre(.*?)>(.*?)<code(.*?)>(.*?)<\/code><\/pre>/, '```\n\4\n```') .gsub(/<code(.*?)>(.*?)<\/code>/, '\n```\n\2\n```\n') .gsub(/<\/pre>/, '') .gsub(/<hr(.*?)>/, '****') .gsub(/ /m, ' ') .gsub(/>/, '>') .gsub(/</, '<') .gsub(/&/, '&') .gsub(/"/, '"') .gsub(/\\n\\n/m, '') end end