Как преобразовать существующую викиму redmine из текстиля в уценку?

Я хочу использовать markdown как мой вики-движок redmine.

Я установил плагин markdown, и он работал хорошо.

Вопрос только в том, как я могу преобразовать эти старые wiki (текстильные) в уценку, чтобы они могли отображаться правильно?

Ответ 2

Я написал задачу rake для преобразования всех страниц вики и их версий в уценку.

Поместите это в lib/tasks/convert_textile_to_markdown.rake:

task :convert_textile_to_markdown => :environment do
  require 'tempfile'
  WikiContent.all.each do |wiki|
    ([wiki] + wiki.versions).each do |version|
      textile = version.text
      src = Tempfile.new('textile')
      src.write(textile)
      src.close
      dst = Tempfile.new('markdown')
      dst.close

      command = [
        "pandoc",
        "--no-wrap",
        "--smart",
        "--strict",
        "-f",
        "textile",
        "-t",
        "markdown",
        src.path,
        "-o",
        dst.path,
      ]
      system(*command) or raise "pandoc failed"

      dst.open
      markdown = dst.read

      # remove the \ pandoc puts before * and > at begining of lines
      markdown.gsub!(/^((\\[*>])+)/) { $1.gsub("\\", "") }

      # add a blank line before lists
      markdown.gsub!(/^([^*].*)\n\*/, "\\1\n\n*")

      version.update_attribute(:text, markdown)
    end
  end
end

И запустите:

bundle exec rake convert_textile_to_markdown RAILS_ENV=production

Ответ 3

Основываясь на ответе Michaël, вот инструмент перехода от Textile to Markdown. Он перенесет весь контент (комментарий, вики, выпуск, сообщение, новости, документ, проект и журнал). И это также исправляет несколько несовместимостей между Redmine Textile и pandoc's.

Здесь: https://github.com/Ecodev/redmine_convert_textile_to_markown

Ответ 4

Когда я попытался преобразовать файл разметки в файл в файл с помощью команды pandoc (версия pandoc - 1.12.4.2), Redmine не смог правильно отобразить CodeBlock. Так что лучше было написать CodeBlock в элементе pre.

оригинал ниже.

~~~
% foo bar
~~~

преобразованный один ниже.

bc. % foo bar
% foo bar

- > Это не может отображаться в redmine как CodeBlock.

Вы должны написать CodeBlock как предварительный элемент заранее.

<pre>
 % foo bar
</pre>