برنامه نویسی

ارائه “gfm” -likely html in sphinx با myst-parser

Myst-Parser پسوند Sphinx برای تجزیه منابع سند Markdown است.
ما می توانیم سند ساختاری بالا را با استفاده از آن بنویسیم حتی اگر نمی دانیم SYNTAX REMRUCTURAUTEDTEXT.

Myst-Parser از GFM پشتیبانی می کند ، اما …

Myst-Parser گزینه هایی برای رفتار دارد. 1
وجود دارد myst_gfm_only در گزینه ها این برای اجرای Markdown Parse Github (GFM) است که از برخی نحو گسترده از Commonmark پشتیبانی می کند.

اما ، وقتی این گزینه است True، تزریق نمی کند
به خط منابع.

نمونه

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این منبع علامت گذاری دارای هر جمله از خوراک خط است.

هنگامی که Sphinx آن را به HTML توسط Sphinx-Build تبدیل می کند.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اما Github از این منبع ارائه می شود. 2

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چرا این اتفاق افتاد؟

GFM بین مشخصات و رفتار مطابقت ندارد.

مشخصات GFM در https://github.github.com/gfm/ قرار داده شده است.
“6.12 HARD LINE BREAKS وجود دارد
“و” 6.13 خط نرم خط “در مورد مشخصات شکستن خط.

مشخصات شکستن خط نرم:

یک خط خط معمولی (نه در یک کدهای یا برچسب HTML) که قبل از دو یا چند فضای یا یک پشتی به عنوان یک نرم شدن جدا نمی شود. .

ما انتظار داریم که در هنگام شکستن خط نرم ، هیچ چیزی ایجاد نمی کند.
اما در واقع ، github.com ارائه می دهد
برچسب از فید خط.

Myst-Parser گزینه هایی برای استراحت خط ندارد.

دشوار است که برای اجرای GitHub تنظیم شود؟
نه ، شما می توانید آن را با تعریف کلاس هک برطرف کنید.

نحوه هک کردن برای تحقق شکستن خط “واقعی” GFM.

رمز

لطفا کد آن را در آن بنویسید conf.py از سند شما

def setup(app):
    # If you already defined setup, write these code into before `return`. 
    from myst_parser.mdit_to_docutils.base import DocutilsRenderer

    DocutilsRenderer.render_softbreak = DocutilsRenderer.render_hardbreak
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شرح

هنگامی که Sphinx با Myst-Parser از Markdown به HTML تبدیل می شود ، شیء میانی به نام “Doctree” تولید می کند.

  • Myst-Parser Markdown و ایجاد Doctree.
  • فرآیند نویسنده Sphinx HTML را از Doctree تولید می کند.

برای ایجاد دکترین از Markdown ، Myst-Parser DoctreerEnderer را تعریف می کند.
این کلاس روش هایی دارد که هر گره AST از Markdown کار می کند.

DocutilsRenderer.render_softbreak روش قرار دادن کد LineFeed هنگام مراجعه به فرآیند “خط نرم خط” است.
DocutilsRenderer.render_hardbreak روش قرار دادن HTML هنگام بازدید از “خط سخت خط” است.

در پایتون ، ما می توانیم روش های کلاس ها را با تغییر مجدد نادیده بگیریم.
کد حل و فصل برای غلبه بر render_softbreak از طرف render_hardbreakبشر

بنابراین ، هنگامی که پارسر همه خطوط خط را پیدا کرد ، به عنوان “خط سخت خط” اجرا می شود.


  1. https://myst-parser.readthedocs.io/en/latest/configuration.html

  2. در واقع ،
    برچسب در یک خط قرار می دهد ، دم خط را اضافه می کند. ↩

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا