إعادة هيكلة النص
لغة reStructuredText ( RST أو ReST أو reST ) هي لغة ترميز نصية بسيطة تُستخدم بشكل أساسي في التوثيق التقني والبيانات النصية الأخرى. وهي تؤدي دورًا مشابهًا للغة Markdown، ولكنها تتضمن ميزات دلالية إضافية لهيكلة المستندات الأكثر تعقيدًا. ومن أبرز المشاريع مفتوحة المصدر واسعة النطاق التي تعتمد على reStructuredText: مجتمع لغة برمجة بايثون لتوثيقها الرسمي، ووثائق نواة لينكس ، و CMake ، ومشروع مُصرّف LLVM .
يُعدّ Docutils جزءًا من مشروع Docutils التابع لمجموعة Python Doc-SIG (مجموعة الاهتمام الخاصة بالتوثيق)، والذي يهدف إلى إنشاء مجموعة أدوات للغة بايثون تُشبه Javadoc للغة جافا أو Plain Old Documentation (POD) للغة بيرل . يستطيع Docutils استخراج التعليقات والمعلومات من برامج بايثون، وتنسيقها في أشكال مختلفة من توثيق البرامج. [ 2 ]
وبهذا المعنى، فإن reStructuredText هي لغة ترميز خفيفة الوزن مصممة لتكون قابلة للمعالجة بواسطة برامج معالجة الوثائق مثل Docutils، وأن تكون سهلة القراءة من قبل المبرمجين البشريين الذين يقرؤون ويكتبون شفرة مصدر بايثون .
تاريخ
تطورت لغة reStructuredText من لغة ترميز خفيفة الوزن سابقة تُسمى StructuredText [ 3 ] (طورتها شركة Zope ). وقد واجهت StructuredText عددًا من المشاكل، فتم تطوير reST لمعالجتها. [ 4 ] واختير اسم reStructuredText للدلالة على أنها "نسخة مُنقحة ومُعاد صياغتها ومُعاد تفسيرها من StructuredText". [ 5 ]
استُلهمت أجزاء من بنية reST من لغة Setext من أوائل التسعينيات. كما تم النظر في تضمين عناصر من تنسيق رسائل الإنترنت RFC822 وتنسيقات Javadoc الشائعة في التصميم. [ 6 ]
تم إصدار reStructuredText لأول مرة في يونيو 2001. [ 1 ] وبدأ استخدامه بشكل كبير في مجتمع بايثون في عام 2002. [ 7 ]
التنفيذ المرجعي
يُعد التنفيذ المرجعي لمحلل reST مكونًا من مكونات إطار عمل معالجة النصوص Docutils في لغة البرمجة بايثون ، ولكن تتوفر محللات أخرى.
لم يُسجّل مشروع Docutils أي نوع MIME لـ reStructuredText ، ولم يُصنّف أي نوع MIME غير مُسجّل كنوع رسمي، ولكنه يُوثّق استخدام هذا النوع من MIME text/x-rstفعليًا ، على سبيل المثال، في نظام بناء موقع Python الإلكتروني. [ 8 ] ويُستخدم النوع نفسه من MIME في قاعدة بيانات أنواع الملفات freedesktop.org التي تستخدمها بيئات سطح المكتب على نظام Linux . [ 9 ] وقد سُجّل نوع MIME آخر، ، كنوع MIME مُخصّص من قِبل جهة خارجية في عام 2003 لتمثيل reStructuredText، ولا يزال النوع الوحيد المُسجّل لدى IANA لـ reStructuredText، [ 10 ] على الرغم من أن مشروع Docutils لا يعترف به كذلك. [ 8 ]text/prs.fallenstein.rst
التطبيقات
يُستخدم reStructuredText عادةً في التوثيق التقني، على سبيل المثال، في توثيق مكتبات بايثون. [ 11 ] ومع ذلك، فهو مناسب لمجموعة واسعة من النصوص.
منذ عام 2008، أصبح reST مكونًا أساسيًا لنظام توليد المستندات Sphinx الخاص بلغة بايثون .
يدعم Trac أيضًا reStructuredText، [ 12 ] كما يفعل GitHub و Bitbucket .
في عام 2011، كانت شركة Distributed Proofreaders ، التي أعدت النصوص لمشروع غوتنبرغ ، تدرس اعتماد تنسيق reST كتنسيق أساسي يمكن من خلاله إنشاء تنسيقات أخرى للكتب الإلكترونية. [ 13 ]
في يوليو 2016، قرر مشروع نواة لينكس الانتقال من التوثيق القائم على DocBook إلى reStructuredText ومجموعة أدوات Sphinx . [ 14 ] [ 15 ]
انتقلت أداة بناء البرمجيات CMake من لغة ترميز مخصصة إلى لغة reStructuredText في الإصدار 3.0 لتوثيقها. [ 16 ]
يدعم نظام JetBrains IDE تحرير reStructuredText من خلال إضافات مثل reStructuredText Pro ، التي توفر دعمًا لتوثيق RST وSphinx بما في ذلك المعاينة المباشرة وتمييز بناء الجملة. [ 17 ]
أمثلة
| نص باستخدام صيغة rST | HTML المقابل الناتج عن معالج rST | النص المعروض في المتصفح |
|---|---|---|
================ عنوان المستند ================العنوان =======العنوان الفرعي ----------- يتم فصل الفقرات بواسطة سطر فارغ. | <h1> عنوان المستند < / h1 ><h2> عنوان < / h2 ><h3> عنوان فرعي < / h3 ><p> الفقرات منفصلة بسطر فارغ . </p> | عنوان المستند عنوان عنوان فرعي يتم فصل الفقرات بسطر فارغ. |
سمات النص *التأكيد* ، **تأكيد قوي** ، ``أحادي المسافة`` . القاعدة الأفقية: ---- | <p> خصائص النص <em> التأكيد < / em > ، <strong> تأكيد قوي < / strong > ، <code> أحادي المسافة < / code > . </p><p> الخط الأفقي : < / p >< hr /> | سمات النص: التأكيد ، التأكيد القوي ، monospace.القاعدة الأفقية: |
قائمة النقاط: * تفاح * برتقال * كمثرى قائمة مرقمة: 1. افركي الصابون حتى تتكون رغوة 2. اشطفي 3. كرري العملية القوائم المتداخلة: 1. الفواكه * تفاحة * موز 2. الخضراوات * جزر * بروكلي | <p> قائمة نقطية : < / p >< ul > < li > التفاح </ li > < li > البرتقال </ li > < li > الكمثرى </ li > </ ul ><p> قائمة مرقمة: < / p >< ol > < li > رغوة الصابون </ li > < li > شطف </ li > < li > كرر </ li > </ ol ><p> القوائم المتداخلة : </ p >< ol > < li > الفواكه < ul > < li > تفاحة </ li > < li > موز </ li > </ ul > </ li > < li > خضروات < ul > < li > جزر </ li > < li > بروكلي </ li > </ ul > </ li > </ ol > | قائمة النقاط:
قائمة مرقمة:
القوائم المتداخلة:
|
مثال <http://example.com> ` _ ... صورة :: Icon-pictures.png :alt: صورة إذا كان النص مُزاحًا، فسيتم التعامل معه على أنه اقتباس مُطوّل، وسيتم التعامل مع سطر الإسناد الأخير تلقائيًا: هل يجب أن تبدأ مؤشرات المصفوفة من 0 أم 1؟ تم رفض اقتراحي بالتسوية البالغة 0.5 دون، في رأيي، دراسة كافية. ستان كيلي-بوتل يستخدم reST :: في نهاية الفقرة قبل كتلة التعليمات البرمجية المنسقة مسبقًا :: Y = lambda f: (lambda x: f(x(x)))(lambda x: f(x(x)))| يمكن أن يمتد النص متعدد الأسطر | في الجداول | باستخدام رمز الأنبوب. | <p> مثال <a href="http://example.com"> مثال </a> . </p><p> < img alt = " Image" src = "Icon-pictures.png" / > </p><p> إذا كان النص مُزاحًا ، فسيتم التعامل معه كاقتباس مُطوّل، وسيتم التعامل مع سطر الإسناد الأخير تلقائيًا : < / p > <blockquote> هل يجب أن تبدأ مؤشرات المصفوفة من 0 أم 1؟ تم رفض اقتراحي بالتسوية البالغة 0.5 دون، في رأيي، دراسة كافية. ستان كيلي - بوتل </blockquote><p> يستخدم reST الرمز :: في نهاية الفقرة التي تسبق كتلة التعليمات البرمجية المنسقة مسبقًا: < / p > < pre class = "literal-block" > Y = lambda f: (lambda x: f(x(x)))(lambda x: f(x(x))) </ pre ><p> يمكن أن يمتد النص متعدد الأسطر <br /> داخل الجداول <br /> باستخدام رمز الأنبوب ( | ) . </p> | مثال .
إذا كان النص مُزاحًا، فسيتم التعامل معه على أنه اقتباس مُطوّل، وسيتم التعامل مع سطر الإسناد الأخير تلقائيًا:
يستخدم reST الرمز :: في نهاية الفقرة قبل كتلة التعليمات البرمجية المنسقة مسبقًا: Y = lambda f: (lambda x: f(x(x)))(lambda x: f(x(x))) يمكن أن يمتد النص متعدد الأسطر داخل الجداول باستخدام رمز الأنبوب (|). |
انظر أيضاً
مراجع
- 1 2 "مشروع: reStructuredText - قائمة الملفات" . SourceForge . مؤرشف من الأصل في 19 أكتوبر 2001. تم الاطلاع عليه في 5 فبراير 2023 .
- ↑ ميرتز، ديفيد (2003-02-01). "أهمية لغة XML: إعادة هيكلة النص" . IBM developerWorks . تم الاسترجاع في 2016-10-05 .
- ↑ "وثائق Zope.structuredtext" . اقرأ الوثائق . تم الاطلاع عليها بتاريخ 16 أغسطس 2022 .
- ↑ جودجر، ديفيد (24-05-2016). "مشاكل مع StructuredText" . مشروع Docutils . تم الاسترجاع في 16-08-2022 .
- ↑ جودجر، ديفيد (26 فبراير 2016). "الأسئلة الشائعة حول Docutils" . مشروع Docutils . تم الاطلاع عليه بتاريخ 5 أكتوبر 2016 .
- ↑ جودجر، ديفيد (2022-04-02). "سجل بدائل بناء جملة reStructuredText" . docutils.sourceforge.io . مشروع Docutils . تم الاسترجاع في 2022-08-16 .
- ↑ "مقدمة إلى reStructuredText" . Write The Docs . تم الاطلاع عليه بتاريخ 25-06-2022 .
- 1 2 "ما هو نوع MIME الرسمي لبيانات reStructuredText؟ في الأسئلة الشائعة حول Docutils" . مشروع Docutils . تم الاسترجاع في 20 ديسمبر 2017 .
- ↑ "freedesktop.org.xml.in" . shared-mime-info . freedesktop.org .
- ↑ فالنشتاين، بنجا (2003-10-02). "text/prs.fallenstein.rst" . هيئة الأرقام المخصصة للإنترنت (IANA) .
تم تصميم وتنفيذ ReStructuredText بواسطة ديفيد جودجر، وليس بواسطة الجهة المسجلة لهذا النوع من الوسائط. وقد تصادف أن الجهة المسجلة كانت بحاجة إلى نوع وسائط مسجل له. [...] تتولى بنجا فالنشتاين حاليًا مسؤولية إدارة التغييرات لهذا التسجيل. (إذا رغب أي شخص أكثر دراية بـ ReStructuredText في تولي هذه المسؤولية، فسيتم تسليمها بكل سرور).
- ↑ جودجر، ديفيد (2002-04-02). "PEP 287 -- تنسيق سلسلة توثيق reStructuredText" . مؤسسة برمجيات بايثون . تم الاسترجاع في 2016-10-05 .
- ↑ "دعم إعادة هيكلة النص في Trac" . Trac . 2016-09-13 . تم الاسترجاع في 2016-10-05 .
- ↑ نيوبي، جريج (2011-01-08). "محضر اجتماع 11 ديسمبر 2010" . مدققو النصوص الموزعون . تم الاسترجاع في 2011-01-08 .
- ↑ "توثيق النواة باستخدام Sphinx، الجزء 1: كيف وصلنا إلى هنا" . LWN.net. 2016-07-06 . تم الاطلاع عليه بتاريخ 2016-10-27 .
- ↑ "Sphinx. نواة لينكس" . ويكيبيديا. 2024-04-02 . تم الاطلاع عليه بتاريخ 2024-04-02 .
- ↑ "ملاحظات إصدار CMake 3.0.0" . شركة Kitware، 10 يونيو 2014. تم الاطلاع عليه بتاريخ 5 أكتوبر 2016 .
- ↑ "reStructuredText Pro - إضافة IntelliJ IDEs | Marketplace" . JetBrains Marketplace . تم الاطلاع عليه بتاريخ 20 فبراير 2026 .
روابط خارجية
- لغات ترميز خفيفة الوزن
- تنسيقات توثيق شفرة المصدر
