মার্কডাউন এবং রিস্ট্রাকচার্ড টেক্সট উভয় ক্ষেত্রেই একই পুনরায় পড়ুন


116

আমি গিটহাবের একটি প্রকল্প হোস্ট করেছি। এর জন্য আমি মার্কডাউন সিনট্যাক্সটি ব্যবহার করে আমার README লিখেছি এটি গিটহাবে সুন্দরভাবে ফর্ম্যাটেড করার জন্য।

আমার প্রকল্প পাইথনে থাকায় আমি এটি পাইপিতে আপলোড করারও পরিকল্পনা করি । পিপিআই-এ READMEs এর জন্য ব্যবহৃত সিনট্যাক্সটি পুনর্গঠনপ্রযুক্তি।

আমি প্রায় একই বিষয়বস্তুযুক্ত দুটি README পরিচালনা করতে এড়াতে চাই; সুতরাং আমি আরএসটি (বা অন্য উপায়ে) অনুবাদকের কাছে একটি মার্কডাউন অনুসন্ধান করেছি, কিন্তু কোনও খুঁজে পেলাম না।

অন্য যে সমাধানটি আমি দেখছি তা হ'ল একটি মার্ক ডাউন / এইচটিএমএল এবং তারপরে একটি HTML / আরএসটি অনুবাদ R আমি এখানে এবং এখানে এর জন্য কিছু রিসোর্স পেয়েছি সুতরাং আমার ধারণা এটি সম্ভব হওয়া উচিত।

আমি কী করতে চাই তার সাথে আরও ভাল ফিট করতে পারে এমন কোনও ধারণা আছে?


21
গিথুব রেন্ডার দেবে README.rst!
u0b34a0f6ae

এটি তখন নতুন তবে :) তবে জেনে রাখা ভাল, আমি চেষ্টা করব!
জ্লেঞ্জ্রান্ড

6
আপনি Markdown সমর্থন readmes করার PyPI চান, তাহলে এই বৈশিষ্ট্যটি অনুরোধে মন্তব্য করুন bitbucket.org/pypa/pypi/issue/148/support-markdown-for-readmes
কর্নেল Panic

উত্তর:


88

আমি পান্ডোককে সুপারিশ করব , "এক মার্কআপ ফর্ম্যাট থেকে ফাইলগুলিকে অন্য রূপান্তর করার জন্য সুইস-আর্মি ছুরি" (পৃষ্ঠার নীচে সমর্থিত রূপান্তরগুলির ডায়াগ্রামটি দেখুন, এটি বেশ চিত্তাকর্ষক)। পান্ডোক মার্কডাউনটিকে পুনরায় স্ট্রাকচারডেক্সট অনুবাদটি সরাসরি অনুমতি দেয়। এখানে একটি অনলাইন সম্পাদকও রয়েছে যা আপনাকে এটি ব্যবহার করে দেখতে দেয়, যাতে আপনি কেবল নিজের README ফাইলগুলিতে রূপান্তর করতে অনলাইন সম্পাদক ব্যবহার করতে পারেন।


45
Magন্দ্রজালিক প্রার্থনাটি হ'ল: pandoc --from=markdown --to=rst --output=README.rst README.md
জোনাথন ইউনিস

47

@ ক্রিসের পরামর্শ অনুসারে, আপনি মার্কডাউনকে আরএসটিতে রূপান্তর করতে প্যান্ডোক ব্যবহার করতে পারেন। এটি কেবল পাইপ্যান্ডোক মডিউল এবং সেটআপ.পাইতে কিছু যাদু ব্যবহার করে স্বয়ংক্রিয়ভাবে করা যায় :

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 কে আরএসটিতে রূপান্তর করবে। যখন পাইপ্যান্ডোকটি উপলভ্য নয়, তখন এটি রূপান্তর ছাড়াই কেবল README.md পড়ে reads অন্যকে পিপ্যান্ডোক ইনস্টল করতে বাধ্য না করার জন্য যখন তারা কেবল মডিউলটি তৈরি করতে চান, পিপিআইতে আপলোড করবেন না।

সুতরাং আপনি যথারীতি মার্কডাউনে লিখতে পারেন এবং আরএসটি মেসের বিষয়ে চিন্তা করবেন না। ;)


এটি সত্যই সমস্যার সমাধান করতে পারে না, যেহেতু ব্যবহারকারী যদি পাইপ্যান্ডোক ইনস্টল না করে থাকেন (যা তারা সম্ভবত না করেন) তবে এটি একটি ত্রুটি ছুঁড়ে ফেলবে, যেমন পিপিআই প্রত্যাশা করে দীর্ঘ_ বিবরণ ক্ষেত্রটি আরএসটি হবে। পাইপানডোকটি উপলভ্য না থাকলে আপনার দীর্ঘ বা বিবরণ কোনও বা একটি খালি স্ট্রিং সেট করা উচিত।
সেরিন

7
না, এটি কেবলমাত্র পিপিআইতে মেটাডেটা আপলোড করার সময় প্রয়োজন (যা মডিউলের কেবল বিকাশকারীই করছে, ব্যবহারকারী নয়)। ব্যবহারকারী মডিউলটি ইনস্টল করার সময় এটি কোনও ত্রুটি ফেলে না এবং পাইপ্যান্ডোক ইনস্টল না করে। আমি এই ব্যবহারের বিষয়টি যাচাই করেছি।
জাকুব জিরুতকা

এটি রানটাইম ত্রুটিও ফেলে দিতে পারে। নিরাপদে পাশে থাকার জন্য আমি ফাংশনটিতে করার পরামর্শ দিই try-except
ওয়ারেপসিলন

1
পারফেক্ট! কেবল একটি জিনিস - আমি RuntimeError: Missing format!ল্যাম্বডায় পরিবর্তন না করা পর্যন্ত আমি ব্যতিক্রম পাচ্ছিলাম read_md = lambda f: convert(f, 'rst', 'md')। হওয়ার কারণ (আমি অনুমান করছি) যে আমি এটিকে একটি স্ট্রিং খাওয়ালাম কোনও ফাইল নয় (কোনও ফাইল এক্সটেনশন নেই)।
frnhr

@ ফ্রনহর আপনার অনুমান সঠিক পান্ডোক কোনও ফাইল এক্সটেনশান থেকে উত্স ফর্ম্যাটটি স্বয়ংক্রিয়ায়িত করতে সক্ষম, তবে আপনি যখন এটিকে একটি স্ট্রিং খাওয়ালেন তখন আপনাকে অবশ্যই ফর্ম্যাটটি স্পষ্টভাবে উল্লেখ করতে হবে।
জাকুব জিরুতকা

30

2019 আপডেট

পিপিআইআই ওয়্যারহাউস এখন মার্কডাউনও মার্কডাউন সমর্থন করে! আপনার কেবলমাত্র আপনার প্যাকেজ কনফিগারেশন আপডেট 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( উদাহরণ )


6

পিআইপিআই এখন দীর্ঘ বিবরণের জন্য মার্কডাউন সমর্থন করে!

ইন setup.py, long_descriptionএকটি মার্কডাউন স্ট্রিংয়ে সেট করুন, যুক্ত করুন long_description_content_type="text/markdown"এবং নিশ্চিত করুন যে আপনি সাম্প্রতিক setuptoolsসরঞ্জামটি ব্যবহার করছেন ( 38.6.0+, twine1.11+)।

বিস্তারিত জানতে ডাস্টিন ইনগ্রামের ব্লগ পোস্টটি দেখুন।


শুনে খুশি হলাম! অজগর সম্প্রদায়ের কীভাবে সময়ের সাথে সাথে এই সংখ্যার ইতিহাসটি লক্ষ্য করা যায় তা দেখে আকর্ষণীয় বিষয় :)।
জ্লেংগ্র্যান্ড

4

আমার প্রয়োজনীয়তার জন্য আমি আমার কম্পিউটারে প্যান্ডোক ইনস্টল করতে চাইনি। আমি ডকভার্টার ব্যবহার করেছি ডকভার্টার এটির জন্য প্যান্ডোক ব্যবহার করে একটি এইচটিটিপি ইন্টারফেস সহ একটি নথি রূপান্তরকারী সার্ভার।

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

3

আপনার এই আগ্রহটিও আগ্রহী হতে পারে যে কোনও সাধারণ সাবসেটে লেখা সম্ভব হয় যাতে আপনার ডকুমেন্টটি মার্কডাউন হিসাবে রেন্ডার করা বা পুনর্গঠিত পাঠ্য হিসাবে রেন্ডার করার সময় একইভাবে আসে: https://gist.github.com/dupuy/1855764


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

এটি এইচটিএমএল রূপান্তর করতেও দরকারী। 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

আমি আশা করি এটি সাহায্য করবে


0

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))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.