2012-05-23 11 views
106

दोनों में एक ही रीडमी है मेरे पास गिटहब पर होस्ट की गई एक परियोजना है। इसके लिए मैंने गिटहब पर अच्छी तरह से स्वरूपित करने के लिए मार्कडाउन सिंटैक्स का उपयोग करके अपना रीडमी लिखा है।मार्कडाउन और रीस्ट्रक्चरर्ड टेक्स्ट

जैसा कि मेरी परियोजना पाइथन में है, मैं इसे PyPi पर अपलोड करने की भी योजना बना रहा हूं। पीईपीआई पर रीडमेम्स के लिए इस्तेमाल किया गया वाक्यविन्यास पुन: संरचित पाठ है।

मैं दो रीडमेम्स को संभालने से बचाना चाहता हूं जिसमें लगभग समान सामग्री है; इसलिए मैंने आरएसटी (या दूसरी तरफ) अनुवादक के लिए एक मार्कडाउन की खोज की, लेकिन कोई भी नहीं मिला।

मैं जो अन्य समाधान देखता हूं वह एक मार्कडाउन/एचटीएमएल और फिर एक HTML/आरएसटी अनुवाद करना है। मुझे इस here और here के लिए कुछ संसाधन मिल गए हैं, इसलिए मुझे लगता है कि यह संभव होना चाहिए।

क्या आपको कोई ऐसा विचार होगा जो मैं करना चाहता हूं उससे बेहतर हो सकता है?

+20

गिथब 'README.rst' प्रस्तुत करेगा! – u0b34a0f6ae

+0

यह तब नया है :) लेकिन जानना अच्छा है, मैं कोशिश करूंगा! – jlengrand

+5

यदि आप पीपीपीआई को मार्कडाउन में रीडम्स का समर्थन करना चाहते हैं, तो कृपया https://bitbucket.org/pypa/pypi/issue/148/support-markdown-for-readmes –

उत्तर

84

मैं Pandoc की सिफारिश करता हूं, "एक मार्कअप प्रारूप से फ़ाइलों को कनवर्ट करने के लिए स्विस-आर्मी चाकू" (पृष्ठ के निचले हिस्से में समर्थित रूपांतरणों का आरेख देखें, यह काफी प्रभावशाली है)। पांडोक सीधे पुनर्निर्मित पाठ अनुवाद को मार्कडाउन की अनुमति देता है। एक ऑनलाइन संपादक here भी है जो आपको इसे आज़माने देता है, ताकि आप अपनी रीडमे फ़ाइलों को कन्वर्ट करने के लिए ऑनलाइन संपादक का उपयोग कर सकें।

+41

पर फीचर अनुरोध पर टिप्पणी करें जादुई आमंत्रण है: 'pandoc --from = markdown --to = rst --output = README.rst README.md' –

46

जैसा कि @Chris ने सुझाव दिया है, आप मार्कडाउन से आरएसटी को परिवर्तित करने के लिए पांडोक का उपयोग कर सकते हैं।

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=[] 
) 

यह स्वचालित रूप से PyPi पर उपयोग का विस्तृत वर्णन के लिए पहला करने के लिए README.md में परिवर्तित कर देंगे: यह बस pypandoc मॉड्यूल और setup.py में कुछ जादू का उपयोग कर स्वचालित किया जा सकता। जब pypandoc उपलब्ध नहीं है, तो यह रूपांतरण के बिना README.md पढ़ता है - दूसरों को पाइपैंडोक स्थापित करने के लिए मजबूर नहीं करने के लिए मजबूर करने के लिए जब वे मॉड्यूल बनाना चाहते हैं, तो पीपीपी पर अपलोड न करें।

तो आप मार्कडाउन में सामान्य रूप से लिख सकते हैं और अब आरएसटी गड़बड़ी की परवाह नहीं करते हैं। ;)

+0

यह वास्तव में समस्या का समाधान नहीं करता है, क्योंकि यदि उपयोगकर्ता के पास pypandoc इंस्टॉल नहीं है (जो वे संभवतः नहीं करेंगे), यह एक त्रुटि फेंक देगा, क्योंकि पीईपीआई लंबे_डिस्क्रिप्शन फ़ील्ड को आरएसटी होने की उम्मीद करता है। यदि pypandoc उपलब्ध नहीं है, तो आपको long_description को किसी भी या खाली स्ट्रिंग पर सेट करना चाहिए। – Cerin

+7

नहीं, यह केवल तभी आवश्यक है जब पीईपीआई में मेटाडेटा अपलोड किया जा रहा हो (जो केवल मॉड्यूल के डेवलपर कर रहे हैं, उपयोगकर्ताओं को नहीं)। जब उपयोगकर्ता मॉड्यूल स्थापित करता है और इसमें pypandoc इंस्टॉल नहीं होता है तो यह कोई त्रुटि नहीं फेंकता है। मैंने इस उपयोग के मामले की पुष्टि की है। –

+0

यह रनटाइम त्रुटि भी फेंक सकता है। एक सुरक्षित पक्ष पर रहने के लिए मैं फ़ंक्शन में 'कोशिश-छोड़कर' करने की अनुशंसा करता हूं। – varepsilon

22

Markup लाइब्रेरी गिटहब द्वारा उपयोग की गई लाइब्रेरी reStructuredText का समर्थन करती है। इसका मतलब है कि आप एक README.rst फ़ाइल लिख सकते हैं।

वे भी वाक्य रचना विशिष्ट रंग code और code-block निर्देशों (Example)

0

का उपयोग कर मैं एक md2rst उपयोगिता बनाया rst फ़ाइलें बनाने के लिए दूसरों के द्वारा सुझाव दिया pandoc उपकरण का उपयोग हाइलाइटिंग समर्थन करते हैं। भले ही इस समाधान का मतलब है कि आपके पास 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)) 
1

मैं इस समस्या का सामना किया और दो निम्नलिखित बैश स्क्रिप्ट के साथ इसे हल।

ध्यान दें कि मेरे पास लाटेक्स मेरे मार्कडाउन में बंडल है।

#!/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 

मुझे आशा है कि मदद करता है

3

तुम भी तथ्य यह है कि यह एक आम सबसेट में लिखने के लिए इतना है कि अपने दस्तावेज़ में उसी तरह जब markdown के रूप में प्रदान या गाया बाहर आता है संभव है में रुचि हो सकती पुन: संरचित पाठ के रूप में: https://gist.github.com/dupuy/1855764

3

मेरी आवश्यकताओं के लिए मैं अपने कंप्यूटर में पांडोक स्थापित नहीं करना चाहता था। मैंने डॉकवर्टर का इस्तेमाल किया। Docverter इस के लिए पांडोक का उपयोग कर एक 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