COMMONMARK-PY(1) commonmark.py COMMONMARK-PY(1)

commonmark-py - مستندات کتابخانه commonmark.py

[تصویر: عدم نگهداری پروژه] [تصویر]
http://unmaintained.tech

هشدار: بسته commonmark.py اکنون منسوخ شده است (deprecated). توصیه می‌کنیم برای یک تجزیه‌کننده CommonMark در آینده از markdown-it-py https://github.com/executablebooks/markdown-it-py استفاده کنید. برای اطلاع از پیش‌زمینه و مباحث مربوطه، این گزارش مشکل را در https://github.com/readthedocs/commonmark.py/issues/308 مشاهده کنید.

--

بسته commonmark.py یک پورت پایتون خالص (pure Python) از commonmark.js https://github.com/jgm/commonmark.js متعلق به jgm https://github.com/jgm است؛ یک تجزیه‌کننده و رندرکننده Markdown برای مشخصات CommonMark http://commonmark.org، که تنها از ماژول‌های داخلی استفاده می‌کند. به محض اینکه این پروژه و مشخصات CommonMark به پایداری برسند، نخستین نسخهٔ 1.0 را منتشر خواهیم کرد و تلاش می‌کنیم تا با تغییرات در commonmark.js به‌روز بمانیم.

بسته commonmark.py در برابر مشخصات CommonMark با نسخه‌های 2.7، 3.5، 3.6، 3.7 و 3.8 پایتون آزمایش شده است.

نسخه فعلی: 0.9.2

[تصویر: پیوند PyPI] [تصویر]
https://pypi.org/project/commonmark [تصویر: وضعیت ساخت] [تصویر]
https://travis-ci.org/rtfd/commonmark.py [تصویر: وضعیت مستندات] [تصویر]
https://commonmarkpy.readthedocs.io/en/latest/?badge=latest

$ pip install commonmark

>>> import commonmark
>>> commonmark.commonmark('*hello!*')
'<p><em>hello!</em></p>\n'

یا، بدون قند نحو (syntactic sugar):

import commonmark
parser = commonmark.Parser()
ast = parser.parse("Hello *World*")
renderer = commonmark.HtmlRenderer()
html = renderer.render(ast)
print(html) # <p>Hello <em>World</em><p/>
# inspecting the abstract syntax tree
json = commonmark.dumpJSON(ast)
commonmark.dumpAST(ast) # pretty print generated AST structure

همچنین یک رابط خط فرمان (CLI) وجود دارد:

$ cmark README.md -o README.html
$ cmark README.md -o README.json -aj # output AST as JSON
$ cmark README.md -a # pretty print generated AST structure
$ cmark -h
usage: cmark [-h] [-o [O]] [-a] [-aj] [infile]
Process Markdown according to the CommonMark specification.
positional arguments:
  infile      Input Markdown file to parse, defaults to stdin
optional arguments:
  -h, --help  show this help message and exit
  -o [O]      Output HTML/JSON file, defaults to stdout
  -a          Print formatted AST
  -aj         Output JSON AST

اگر مایل به ارائه پیشنهادها، بهینه‌سازی‌ها یا رفع باگ‌ها از طریق pull request هستید، بسیار خوشحال می‌شویم! همچنین اگر خطایی در parser/renderer پیدا کردید که توسط مجموعه آزمون‌های فعلی شناسایی نمی‌شود، لطفاً یک issue جدید باز کنید؛ علاوه بر این، پیشنهاد می‌کنم برای پروژه commonmark.js https://github.com/jgm/commonmark.js نیز یک pull request جهت افزودن آزمون خود به مجموعه آزمون‌های موجود ارسال نمایید.

برای کار روی commonmark.py، باید بتوانید مجموعه آزمون‌ها را اجرا کنید تا مطمئن شوید تغییرات شما مشکلی ایجاد نمی‌کند. برای اجرای آزمون‌ها می‌توانید کاری شبیه به این را انجام دهید:

$ pyvenv venv
$ ./venv/bin/python setup.py develop test

اسکریپت آزمون‌ها، commonmark/tests/run_spec_tests.py، تا حد زیادی یک ابزار توسعه است. علاوه بر اجرای تمام آزمون‌های گنجانده‌شده در spec.txt، این اسکریپت به شما اجازه می‌دهد آزمون‌های خاصی را با استفاده از آرگومان -t اجرا کنید، اطلاعات مربوط به آزمون‌های موفق را با -p ارائه دهید، درصد موفقیت بر پایه دسته‌بندی آزمون را با -s مشاهده کنید، و markdown را به‌صورت تعاملی با -i وارد نمایید (در حالت تعاملی با وارد کردن یک خط که صرفاً شامل end باشد یک بلوک را خاتمه دهید، و برای خروج نیز همین کار را با quit انجام دهید). از -d می‌توان برای چاپ ردگیری فراخوانی‌ها (call tracing) استفاده کرد.

$ ./venv/bin/python commonmark/tests/run_spec_tests.py -h
usage: run_spec_tests.py [-h] [-t T] [-p] [-f] [-i] [-d] [-np] [-s]
script to run the CommonMark specification tests against the commonmark.py
parser.
optional arguments:
  -h, --help  show this help message and exit
  -t T        Single test to run or comma separated list of tests (-t 10 or -t 10,11,12,13)
  -p          Print passed test information
  -f          Print failed tests (during -np...)
  -i          Interactive Markdown input mode
  -d          Debug, trace calls
  -np         Only print section header, tick, or cross
  -s          Print percent of tests passed by category

الحاق یک رشته به بافر، احتمالاً همراه با گریز دادن محتوا.

پیاده‌سازی‌های ملموس رندرکننده باید این متد را بازنویسی (override) کنند.

@param str {String} رشته‌ای برای الحاق.

تابع کمکی برای تولید یک تگ HTML.
تولید reStructuredText از Markdown

مثال:

import commonmark
parser = commonmark.Parser()
ast = parser.parse('Hello `inline code` example')
renderer = commonmark.ReStructuredTextRenderer()
rst = renderer.render(ast)
print(rst)  # Hello ``inline code`` example
الحاق یک رشتهٔ لفظی به بافر.

@param str {String} رشته‌ای که باید الحاق شود.

افزودن بلوکی از نوع tag به‌عنوان فرزند tip. اگر tip نتواند فرزند بپذیرد، آن را بسته و نهایی می‌کند و والد آن را بررسی می‌کند، و به همین ترتیب تا زمانی که بلوکی پیدا شود که بتواند فرزند بپذیرد.
افزودن یک خط به بلوک در tip. فرض بر این است که tip می‌تواند خط بپذیرد -- این بررسی باید پیش از فراخوانی این متد انجام شود.
نهایی‌سازی و بستن هرگونه بلوک مطابقت‌نیافته.
نهایی‌سازی یک بلوک. بستن آن و انجام هرگونه پس‌پردازش لازم، برای مثال ایجاد string_content از رشته‌ها، تنظیم وضعیت 'tight' یا 'loose' یک فهرست، و تجزیهٔ ابتدای بندها برای تعاریف مرجع. بازنشانی tip به والد بلوک بسته‌شده.
تحلیل یک خط از متن و به‌روزرسانی مناسب سند.

تجزیهٔ متن markdown با فراخوانی این تابع روی هر خط از ورودی، و سپس نهایی‌سازی سند انجام می‌شود.

تابع اصلی تجزیه. یک AST از سند تجزیه‌شده بازمی‌گرداند.
پیمایش بازگشتی در یک بلوک و فرزندان آن، و تجزیهٔ محتوای رشته‌ای به محتوای درون‌خطی در صورت لزوم.
برای سازگاری با نسخه‌های پیشین

Roland Shoemaker, Bibek Kafle

2014-2019, Roland Shoemaker, Bibek Kafle

May 30, 2026 0.9.2