我有托管在GitHub上的项目。 为此,我已经使用降价语法,以便有它很好地格式化GitHub上写我的自述。
由于我的项目是在Python我还打算把它上传到PyPI中 。 用于PyPI上的README文件的语法是reStructuredText的。
我想,以避免处理包含大致相同内容的两个自述文件; 所以我搜索了一个降价到RST(或者反过来)的翻译,但找不到任何。
其他的解决方案,我看到的是执行降价/ HTML,然后一个HTML / RST翻译。 我发现了一些这方面的ressources 这里和这里 ,所以我想这应该是可能的。
你有可能更适合与我想要做的任何想法?
Answer 1:
我会建议Pandoc的“瑞士军刀从一个标记格式文件转换为另一个”(在页面的底部检查出支持的转换的图,这是相当令人印象深刻)。 Pandoc允许降价,以reStructuredText的翻译直接。 此外,还有一个在线编辑器, 在这里它可以让你尝试一下,所以你可以简单地使用在线编辑器来转换你的自述文件。
Answer 2:
由于@克里斯建议,您可以使用Pandoc到降价转换为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 RST使用PyPI上的详细说明。 当pypandoc不可用,那么它只是读取README.md无需转换-不强迫别人安装pypandoc当他们想只是生成模块,不上传到PyPI中。
所以,你可以在降价像往常一样写,不关心RST乱了。 ;)
Answer 3:
2019更新
该仓库的PyPI 现在支持渲染降价的! 你只需要更新包的配置和添加long_description_content_type='text/markdown'
给它。 例如:
setup(
name='an_example_package',
# other arguments omitted
long_description=long_description,
long_description_content_type='text/markdown'
)
因此,没有必要保持README两种格式的任何更长的时间。
你可以找到关于它的更多信息的文档 。
老答案:
该标记通过使用GitHub的库支持reStructuredText的。 这意味着你可以写一个README.rst文件。
他们甚至使用支持语法特定颜色高亮code
和code-block
指令( 实施例 )
Answer 4:
PyPI将现在支持减价长期的描述!
在setup.py
,设置long_description
到降价的字符串,加long_description_content_type="text/markdown"
,并确保你使用最新的工具( setuptools
38.6.0+, twine
1.11+)。
见达斯汀英格拉姆的博客文章以了解详情。
Answer 5:
对于我的要求,我不希望在我的电脑上安装Pandoc。 我用docverter。 Docverter是使用Pandoc该HTTP接口的文档转换服务器。
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
Answer 6:
您可能也有兴趣的事实,有可能在一个公共子集来写,这样你的文件出来时,作为降价渲染或呈现为新结构化以同样的方式: https://gist.github.com/dupuy/1855764 ☺
Answer 7:
我就遇到了这个问题,并用两个以下的bash脚本解决它。
请注意,我已经乳胶捆绑到我的降价。
#!/usr/bin/env bash
if [ $# -lt 1 ]; then
echo "$0 file.md"
exit;
fi
filename=$(basename "$1")
extension="${filename##*.}"
filename="${filename%.*}"
if [ "$extension" = "md" ]; then
rst=".rst"
pandoc $1 -o $filename$rst
fi
它也有用转换为HTML。 md2html:
#!/usr/bin/env bash
if [ $# -lt 1 ]; then
echo "$0 file.md <style.css>"
exit;
fi
filename=$(basename "$1")
extension="${filename##*.}"
filename="${filename%.*}"
if [ "$extension" = "md" ]; then
html=".html"
if [ -z $2 ]; then
# if no css
pandoc -s -S --mathjax --highlight-style pygments $1 -o $filename$html
else
pandoc -s -S --mathjax --highlight-style pygments -c $2 $1 -o $filename$html
fi
fi
我希望帮助
Answer 8:
使用pandoc
别人建议的工具,我创建了一个md2rst
实用程序来创建rst
文件。 尽管这种解决方案意味着您同时拥有一个md
和rst
它似乎是最侵入性和将允许添加任何未来降价的支持。 我喜欢它了改变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))
文章来源: Have the same README both in Markdown and reStructuredText