.\" Man page generated from reStructuredText .\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "COMMONMARK-PY" "1" "May 30, 2026" "0.9.2" "commonmark.py" .SH "نام (NAME)" commonmark-py \- مستندات کتابخانه commonmark.py .sp [تصویر: عدم نگهداری پروژه] [تصویر] \% .sp \fBهشدار:\fP بسته commonmark.py اکنون منسوخ شده است (deprecated). توصیه می‌کنیم برای یک تجزیه‌کننده CommonMark در آینده از markdown\-it\-py \% استفاده کنید. برای اطلاع از پیش‌زمینه و مباحث مربوطه، این گزارش مشکل را در \% مشاهده کنید. .sp \-\- .sp بسته commonmark.py یک پورت پایتون خالص (pure Python) از commonmark.js \% متعلق به jgm \% است؛ یک تجزیه‌کننده و رندرکننده Markdown برای مشخصات CommonMark \%، که تنها از ماژول‌های داخلی استفاده می‌کند. به محض اینکه این پروژه و مشخصات CommonMark به پایداری برسند، نخستین نسخهٔ \fB1.0\fP را منتشر خواهیم کرد و تلاش می‌کنیم تا با تغییرات در \fBcommonmark.js\fP به‌روز بمانیم\&. .sp بسته commonmark.py در برابر مشخصات CommonMark با نسخه‌های 2.7، 3.5، 3.6، 3.7 و 3.8 پایتون آزمایش شده است. .sp \fBنسخه فعلی:\fP 0.9.2 .sp [تصویر: پیوند PyPI] [تصویر] \% [تصویر: وضعیت ساخت] [تصویر] \% [تصویر: وضعیت مستندات] [تصویر] \% .SH "نصب (INSTALLATION)" .INDENT 0.0 .INDENT 3.5 .sp .EX $ pip install commonmark .EE .UNINDENT .UNINDENT .SH "نحوه استفاده (USAGE)" .INDENT 0.0 .INDENT 3.5 .sp .EX >>> import commonmark >>> commonmark.commonmark(\(aq*hello!*\(aq) \(aq

hello!

\en\(aq .EE .UNINDENT .UNINDENT .sp یا، بدون قند نحو (syntactic sugar): .INDENT 0.0 .INDENT 3.5 .sp .EX import commonmark parser = commonmark.Parser() ast = parser.parse(\(dqHello *World*\(dq) renderer = commonmark.HtmlRenderer() html = renderer.render(ast) print(html) #

Hello World

# inspecting the abstract syntax tree json = commonmark.dumpJSON(ast) commonmark.dumpAST(ast) # pretty print generated AST structure .EE .UNINDENT .UNINDENT .sp همچنین یک رابط خط فرمان (CLI) وجود دارد: .INDENT 0.0 .INDENT 3.5 .sp .EX $ 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 .EE .UNINDENT .UNINDENT.SH "مشارکت (CONTRIBUTING)" .sp اگر مایل به ارائه پیشنهادها، بهینه‌سازی‌ها یا رفع باگ‌ها از طریق pull request هستید، بسیار خوشحال می‌شویم! همچنین اگر خطایی در parser/renderer پیدا کردید که توسط مجموعه آزمون‌های فعلی شناسایی نمی‌شود، لطفاً یک issue جدید باز کنید؛ علاوه بر این، پیشنهاد می‌کنم برای پروژه commonmark.js \% نیز یک pull request جهت افزودن آزمون خود به مجموعه آزمون‌های موجود ارسال نمایید. .SH "آزمون‌ها (TESTS)" .sp برای کار روی commonmark.py، باید بتوانید مجموعه آزمون‌ها را اجرا کنید تا مطمئن شوید تغییرات شما مشکلی ایجاد نمی‌کند. برای اجرای آزمون‌ها می‌توانید کاری شبیه به این را انجام دهید: .INDENT 0.0 .INDENT 3.5 .sp .EX $ pyvenv venv $ ./venv/bin/python setup.py develop test .EE .UNINDENT .UNINDENT .sp اسکریپت آزمون‌ها، \fBcommonmark/tests/run_spec_tests.py\fP، تا حد زیادی یک ابزار توسعه است. علاوه بر اجرای تمام آزمون‌های گنجانده‌شده در \fBspec.txt\fP، این اسکریپت به شما اجازه می‌دهد آزمون‌های خاصی را با استفاده از آرگومان \fB\-t\fP اجرا کنید، اطلاعات مربوط به آزمون‌های موفق را با \fB\-p\fP ارائه دهید، درصد موفقیت بر پایه دسته‌بندی آزمون را با \fB\-s\fP مشاهده کنید، و markdown را به‌صورت تعاملی با \fB\-i\fP وارد نمایید (در حالت تعاملی با وارد کردن یک خط که صرفاً شامل \fBend\fP باشد یک بلوک را خاتمه دهید، و برای خروج نیز همین کار را با \fBquit\fP انجام دهید). از \fB\-d\fP می‌توان برای چاپ ردگیری فراخوانی‌ها (call tracing) استفاده کرد. .INDENT 0.0 .INDENT 3.5 .sp .EX $ ./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 .EE .UNINDENT .UNINDENT .SH "نویسندگان (AUTHORS)" .INDENT 0.0 .IP \(bu 2 Bibek Kafle \% .IP \(bu 2 Roland Shoemaker \% .UNINDENT .SS API .SS HTML .INDENT 0.0 .TP .B class commonmark.render.html.HtmlRenderer(options={}) .INDENT 7.0 .TP .B out(s) الحاق یک رشته به بافر، احتمالاً همراه با گریز دادن محتوا. .sp پیاده‌سازی‌های ملموس رندرکننده باید این متد را بازنویسی (override) کنند. .sp @param str {String} رشته‌ای برای الحاق. .UNINDENT .INDENT 7.0 .TP .B tag(name, attrs=None, selfclosing=None) تابع کمکی برای تولید یک تگ HTML. .UNINDENT .UNINDENT.SS reStructuredText .INDENT 0.0 .TP .B class commonmark.render.rst.ReStructuredTextRenderer(indent_char=\(aq \(aq) تولید reStructuredText از Markdown .sp مثال: .INDENT 7.0 .INDENT 3.5 .sp .EX import commonmark parser = commonmark.Parser() ast = parser.parse(\(aqHello \(gainline code\(ga example\(aq) renderer = commonmark.ReStructuredTextRenderer() rst = renderer.render(ast) print(rst) # Hello \(ga\(gainline code\(ga\(ga example .EE .UNINDENT .UNINDENT .INDENT 7.0 .TP .B lit(s) الحاق یک رشتهٔ لفظی به بافر. .sp @param str {String} رشته‌ای که باید الحاق شود. .UNINDENT .UNINDENT .SS Parser .INDENT 0.0 .TP .B class commonmark.blocks.Parser(options={}) .INDENT 7.0 .TP .B add_child(tag, offset) افزودن بلوکی از نوع tag به‌عنوان فرزند tip. اگر tip نتواند فرزند بپذیرد، آن را بسته و نهایی می‌کند و والد آن را بررسی می‌کند، و به همین ترتیب تا زمانی که بلوکی پیدا شود که بتواند فرزند بپذیرد. .UNINDENT .INDENT 7.0 .TP .B add_line() افزودن یک خط به بلوک در tip. فرض بر این است که tip می‌تواند خط بپذیرد \-\- این بررسی باید پیش از فراخوانی این متد انجام شود. .UNINDENT .INDENT 7.0 .TP .B close_unmatched_blocks() نهایی‌سازی و بستن هرگونه بلوک مطابقت‌نیافته. .UNINDENT .INDENT 7.0 .TP .B finalize(block, line_number) نهایی‌سازی یک بلوک. بستن آن و انجام هرگونه پس‌پردازش لازم، برای مثال ایجاد string_content از رشته‌ها، تنظیم وضعیت \(aqtight\(aq یا \(aqloose\(aq یک فهرست، و تجزیهٔ ابتدای بندها برای تعاریف مرجع. بازنشانی tip به والد بلوک بسته‌شده. .UNINDENT .INDENT 7.0 .TP .B incorporate_line(ln) تحلیل یک خط از متن و به‌روزرسانی مناسب سند. .sp تجزیهٔ متن markdown با فراخوانی این تابع روی هر خط از ورودی، و سپس نهایی‌سازی سند انجام می‌شود. .UNINDENT .INDENT 7.0 .TP .B parse(my_input) تابع اصلی تجزیه. یک AST از سند تجزیه‌شده بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B process_inlines(block) پیمایش بازگشتی در یک بلوک و فرزندان آن، و تجزیهٔ محتوای رشته‌ای به محتوای درون‌خطی در صورت لزوم. .UNINDENT .UNINDENT.SS Node .INDENT 0.0 .TP .B class commonmark.node.NodeWalker(root) .INDENT 7.0 .TP .B nxt() برای سازگاری با نسخه‌های پیشین .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class commonmark.node.Node(node_type, sourcepos) .UNINDENT .SH "نویسندگان (AUTHORS)" Roland Shoemaker, Bibek Kafle .SH "کپی‌رایت و تکثیر (COPYRIGHT)" 2014-2019, Roland Shoemaker, Bibek Kafle .\" End of generated man page.