--- title: Howto Trac to Markdown ... Si on souhaite convertir des pages du format Trac vers le format Markdown un petit script peut faciliter la tâche. ~~~{.ruby} #!/usr/bin/env ruby ## Based on: https://gist.github.com/619537 body = STDIN.read # convert inline code blocs body.gsub!(/\{\{\{([^\n]+?)\}\}\}/, '`\1`') body.gsub!(/^\s*\*/, '*') # add a line break before lists body.gsub!(/(\S)\n\* /, '\1' "\n\n* ") body.gsub!(/^[ ]*\{\{\{/, '{{{') body.gsub!(/(\S)\n\{\{\{/, '\1' "\n\n{{{") body.gsub!(/\{\{\{(.+?)\}\}\}/m) { |m| m.each_line.map { |x| x.gsub(/ *[\{\}]{3}/,"~~~") }.join } # convert headings syntax body.gsub!(/\=\=\=\=\=\s(.+?)\s\=\=\=\=\=/, '##### \1') body.gsub!(/\=\=\=\=\s(.+?)\s\=\=\=\=/, '#### \1') body.gsub!(/\=\=\=\s(.+?)\s\=\=\=/, '### \1') body.gsub!(/\=\=\s(.+?)\s\=\=/, '## \1') body.gsub!(/\=\s(.+?)\s\=/, '# \1') # convert links body.gsub!(/\[(https?[^\s\[\]]+)\s([^\[\]]+)\]/, '[\2](\1)') body.gsub!(/([^(])(https?[^\s\[\]]+)/, '\1<\2>') body.gsub!(/\!(([A-Z][a-z0-9]+){2,})/, '\1') body.gsub!(/'''(.+?)'''/, '*\1*') body.gsub!(/''(.+?)''/, '_\1_') body.gsub!(/^\s\d\./, '1.') # custom add-on for pedantic satisfaction body.gsub!(/ *(\.){3,}/, '…') STDOUT.write(body) ~~~ Copiez simplement ce script là où vous le souhaitez, rendez-le exécutable puis : ~~~{.bash} $ cat Page.trac | trac2md ~~~ *Note* : le script ne gère pas une conversion parfaite, il faudra relire le document et faire quelques corrections manuelles (titre en "front matter Yaml", etc.). Patches welcome :)