Как конвертировать существующие Redmine Wiki из текстиля в уценку? - PullRequest
11 голосов
/ 20 марта 2012

Я хочу использовать уценку в качестве движка Redmine Wiki.

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

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

Ответы [ 4 ]

11 голосов
/ 09 ноября 2013

Я написал грабельное задание, чтобы преобразовать все вики-страницы и их версии в уценку.

Поместите это в 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
11 голосов
/ 20 марта 2012

Поскольку это единовременная задача, почему бы не pandoc -f textile -t markdown oldfile.text -o newfile.md ?Попробуйте в Попробуйте Pandoc .

2 голосов
/ 18 июля 2016

Опираясь на Ответ Михаэля , вот инструмент для перехода от Текстиля к Уценке.Он перенесет весь контент (комментарий, вики, выпуск, сообщение, новости, документ, проект и журнал).И это также исправит несколько несовместимостей между Redmine's Textile и pandoc's.

Это там: https://github.com/Ecodev/redmine_convert_textile_to_markown

0 голосов
/ 09 января 2015

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

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

~~~
% foo bar
~~~

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

bc. % foo bar
% foo bar

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

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

<pre>
 % foo bar
...