Есть же ридми как в Markdown и настройки
У меня есть проект, размещенный на GitHub. Для этого я написал свой README, используя синтаксис Markdown, чтобы он был хорошо отформатирован на GitHub.
поскольку мой проект находится в Python, я также планирую загрузить его в PyPi. Синтаксис, используемый для READMEs на PyPi, является reStructuredText.
Я хотел бы избежать необходимости обрабатывать два READMEs, содержащих примерно одно и то же содержимое; поэтому я искал уценку для первого (или наоборот) переводчика, но не мог найди любого.
другое решение, которое я вижу, это выполнить markdown/HTML, а затем перевод HTML / RST. Я нашел некоторые ресурсы для этого здесь и здесь так что я думаю, это должно быть возможно.
есть ли у вас какие-либо идеи, которые могли бы лучше соответствовать тому, что я хочу сделать?
8 ответов:
Я бы порекомендовал Pandoc, "swiss-army knife для конвертации файлов из одного формата разметки в другой" (ознакомьтесь с диаграммой поддерживаемых преобразований внизу страницы, она весьма впечатляющая). Pandoc позволяет markdown напрямую реструктурировать перевод текста. Существует также онлайн-редактор здесь что позволяет вам попробовать его, так что вы можете просто использовать онлайн-редактор для преобразования файлов README.
Как предложил @Chris, вы можете использовать Pandoc для преобразования Markdown в RST. Это может быть просто автоматизировано с помощью pypandoc модуль и некоторое волшебство внутри setup.py:
from setuptools import setup try: from pypandoc import convert read_md = lambda f: convert(f, 'rst') except ImportError: print("warning: pypandoc module not found, could not convert Markdown to RST") read_md = lambda f: open(f, 'r').read() setup( # name, version, ... long_description=read_md('README.md'), install_requires=[] )
это автоматически преобразует README.md сначала для длинного описания, используя на PyPi. Когда pypandoc не доступен, то он просто читает README.md без преобразования – чтобы не заставлять других устанавливать pypandoc, когда они хотят просто построить модуль, а не загружать его Пипи.
таким образом, вы можете писать в Markdown, как обычно, и больше не заботиться о первом беспорядке. ;)
вас также может заинтересовать тот факт, что можно писать в общем подмножестве, так что ваш документ выходит таким же образом, когда он отображается как markdown или отображается как reStructuredText:https://gist.github.com/dupuy/1855764 ☺
для моих требований я не хотел устанавливать Pandoc на своем компьютере. Я использовал docverter. Docverter - это сервер преобразования документов с HTTP-интерфейсом, использующим для этого Pandoc.
import requests r = requests.post(url='http://c.docverter.com/convert', data={'to':'rst','from':'markdown'}, files={'input_files[]':open('README.md','rb')}) if r.ok: print r.content
PyPI теперь поддерживает Markdown для длинных описаний!
на
setup.py
, setlong_description
в строку уценки, добавитьlong_description_content_type="text/markdown"
и убедитесь, что вы используете последние оснастки (setuptools
38.6.0+,twine
1.11+).посмотреть сообщение в блоге Дастина Ингрэма для более подробной информации.
я столкнулся с этой проблемой и решили ее с помощью двух следующих сценариев.
обратите внимание, что у меня есть латекс в комплекте с моей уценкой.
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo " file.md" exit; fi filename=$(basename "") extension="${filename##*.}" filename="${filename%.*}" if [ "$extension" = "md" ]; then rst=".rst" pandoc -o $filename$rst fi
его также полезно конвертировать в html. md2html:
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo " file.md <style.css>" exit; fi filename=$(basename "") extension="${filename##*.}" filename="${filename%.*}" if [ "$extension" = "md" ]; then html=".html" if [ -z ]; then # if no css pandoc -s -S --mathjax --highlight-style pygments -o $filename$html else pandoc -s -S --mathjax --highlight-style pygments -c -o $filename$html fi fi
Я надеюсь, что это поможет
С помощью
pandoc
инструмент, предложенный другими я создалmd2rst
утилита для созданияrst
файлы. Даже если это решение означает, что у вас есть обаmd
иrst
это казалось наименее инвазивным и позволило бы использовать любую будущую поддержку markdown. Я предпочитаю его над изменениемsetup.py
и может быть, вы бы так же:#!/usr/bin/env python ''' Recursively and destructively creates a .rst file for all Markdown files in the target directory and below. Created to deal with PyPa without changing anything in setup based on the idea that getting proper Markdown support later is worth waiting for rather than forcing a pandoc dependency in sample packages and such. Vote for (https://bitbucket.org/pypa/pypi/issue/148/support-markdown-for-readmes) ''' import sys, os, re markdown_sufs = ('.md','.markdown','.mkd') markdown_regx = '\.(md|markdown|mkd)$' target = '.' if len(sys.argv) >= 2: target = sys.argv[1] md_files = [] for root, dirnames, filenames in os.walk(target): for name in filenames: if name.endswith(markdown_sufs): md_files.append(os.path.join(root, name)) for md in md_files: bare = re.sub(markdown_regx,'',md) cmd='pandoc --from=markdown --to=rst "{}" -o "{}.rst"' print(cmd.format(md,bare)) os.system(cmd.format(md,bare))