6

मैं रीस्ट के माध्यम से दस्तावेज जेनरेट करना चाहता हूं, लेकिन मैन्युअल रूप से रीस्ट स्रोत लिखना नहीं चाहता हूं, लेकिन एक पायथन स्क्रिप्ट ऐसा करें और फिर स्फिंक्स के साथ अन्य प्रारूप (एचटीएमएल, पीडीएफ) का उत्पादन करें।पायथन से रीस्ट/स्फिंक्स स्रोत कैसे उत्पन्न करें?

कल्पना कीजिए कि मेरे पास बाइनरी प्रारूप में एक टेलीफोन बुक है। अब मैं एक अजगर स्क्रिप्ट का उपयोग इस पार्स और सभी नाम और नंबर के साथ एक दस्तावेज़ उत्पन्न करने के लिए:

phone_book = PhonebookParser("somefile.bin") 

    restdoc = restProducer.NewDocument() 
    for entry in phone_book: 
    restdoc.add_section(title = entry.name, body = entry.number) 

    restdoc.write_to_file("phonebook.rst") 

तब मैं पीडीएफ और html पैदा करने के लिए स्फिंक्स आह्वान करने के लिए पर जाना होगा:

> sphinx phonebook.rst -o phonebook.pdf 
    > sphinx phonebook.rst -o phonebook.html 

वहाँ है एक पायथन मॉड्यूल (ऊपर उदाहरण में उर्फ ​​restProducer) जो reST उत्पन्न करने के लिए एक एपीआई प्रदान करता है? या फिर कुछ प्रिंट स्टेटमेंट्स के माध्यम से रीस्ट मार्कअप को डंप करने का सबसे अच्छा तरीका है?

+0

क्या आप समझा सकते हैं कि आप किस प्रारूप से आरएसटी प्रारूप उत्पन्न करना चाहते हैं? –

+0

मूल रूप से कार्यक्रम की आंतरिक स्थिति से। मेरे पास कुछ हैश और सूचियां हैं और अब यह इन आंकड़ों के संरचनाओं में प्रत्येक प्रविष्टि के लिए दस्तावेज़ में एक अनुभाग उत्पन्न करना चाहेंगे। – dantje

उत्तर

4
  1. Automatically Generating Documentation for All Python Package Contents देखें।

  2. आगामी Sphinx 1.1 रिलीज में sphinx-apidoc.py स्क्रिप्ट शामिल है।

संपादित करें:

अब जब कि तुम समस्या समझा दिया है थोड़ा अधिक, मैं कहता हूँ चाहते हैं: विकल्प "प्रिंट बयान के एक जोड़े के माध्यम से डंप बाकी मार्कअप" के लिए जाना। आप पहले से ही उन पंक्तियों के साथ सोच रहे हैं। एक न्यूनतम restProducer लागू करने का प्रयास क्यों नहीं करें?

+0

यह एक पायथन मॉड्यूल या पैकेज नहीं है जिसे मैं दस्तावेज़ बनाना चाहता हूं। पायथन लिपि में कुछ ज्ञान है, इसे एक आरएसटी स्रोत में प्रारूपित करना चाहिए। – dantje

+0

@dantje: "ज्ञान" कहां से आता है? – mzjn

+0

एप्लिकेशन अन्य फ़ाइलों को पढ़ता है, उन्हें पार्स करता है और फिर एक दस्तावेज तैयार करना चाहिए। – dantje

3

यदि आप डॉक्स-बिना-लेखन-दस्तावेज़ (जो आपको वास्तविक दस्तावेज़ों के बजाय सबसे अच्छा एपीआई संदर्भ देना चाहते हैं) चाहते हैं, तो autosummary और autodoc स्पिंक्स के लिए एक्सटेंशन आपके बाद के बाद हो सकते हैं।

0

यदि आपका उद्देश्य एक बार दस्तावेज़ को प्रोग्रामेटिक रूप से लिखना है, और कई प्रारूपों में आउटपुट करने में सक्षम होना है, तो आप पीईक्यूटी फ्रेमवर्क में QTextDocument पर एक नज़र डाल सकते हैं। हालांकि, यह एक overkill है।

from PyQt4.QtGui import * 
import sys 

doc = QTextDocument() 
cur = QTextCursor(doc) 

d_font = QFont('Times New Roman') 
doc.setDefaultFont(d_font) 

table_fmt = QTextTableFormat() 
table_fmt.setColumnWidthConstraints([ 
    QTextLength(QTextLength.PercentageLength, 30), 
    QTextLength(QTextLength.PercentageLength, 70) 
    ]) 
table = cur.insertTable(5,2, table_fmt) 
cur.insertText('sample text 1') 
cur.movePosition(cur.NextCell) 
cur.insertText('sample text 2') 

# Print to a pdf file 
# QPrinter: Must construct a QApplication before a QPaintDevice 
app = QApplication(sys.argv) 
printer = QPrinter(QPrinter.HighResolution) 
printer.setOutputFormat(QPrinter.PdfFormat) 
printer.setOutputFileName('sample.pdf') 

# Save to file 
writer = QTextDocumentWriter() 
writer.setFormat(writer.supportedDocumentFormats()[1]) 
writer.setFileName('sample.odt') 
writer.write(doc) 

QTextDocumentWriter प्लेन, एचटीएमएल और ODF समर्थन करता है। QPrinter का उपयोग भौतिक प्रिंटर या पीडीएफ फ़ाइल में प्रिंट करने के लिए किया जा सकता है।

हालांकि, जैसा कि आपने उल्लेख किया है, जिन्जा 2 जैसे टेम्पलेटिंग इंजन इसे करने का एक साफ तरीका है।