Rust में Markdown प्रोसेसिंग: लाइब्रेरी, पार्सर और टूल्स

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Rust में Markdown के साथ काम: प्रमुख लाइब्रेरीज़ का अवलोकन

Rust भाषा टेक्स्ट डेटा को प्रोसेस करने के लिए शक्तिशाली और सुरक्षित साधन प्रदान करती है, जिसमें Markdown का पार्सिंग और रेंडरिंग शामिल है। सख्त टाइपिंग, गार्बेज कलेक्टर की अनुपस्थिति और उच्च प्रदर्शन के कारण, Rust पर Markdown के साथ काम करने वाली लाइब्रेरीज़ स्टैटिक साइट्स, डॉक्यूमेंटेशन, ब्लॉग, चैट सिस्टम और किसी भी ऐसे एप्लिकेशन के लिए बेहतरीन हैं जहाँ Markdown को HTML या अन्य फॉर्मेट में बदलने की आवश्यकता होती है। इस लेख में, हम तीन सबसे लोकप्रिय टूल्स पर नज़र डालेंगे: pulldown-cmark, comrak और आधिकारिक markdown crate।

1. pulldown-cmark — इवेंट-ओरिएंटेड पार्सर

pulldown-cmark Rust में Markdown पार्स करने के लिए सबसे लोकप्रिय और उच्च-प्रदर्शन वाली लाइब्रेरी है। यह इवेंट-आधारित मॉडल (pull parser) पर बनी है, जो मेमोरी में पूरा AST बनाए बिना डॉक्यूमेंट को स्ट्रीमिंग तरीके से प्रोसेस करने की अनुमति देती है। यह इसे बड़ी फ़ाइलों और सीमित संसाधनों वाले एप्लिकेशन के लिए आदर्श बनाता है।

यह लाइब्रेरी CommonMark स्पेसिफिकेशन का पालन करती है और सभी बुनियादी एलिमेंट्स को सपोर्ट करती है: हेडिंग, लिस्ट, कोड, टेबल, लिंक, इमेज और एस्केपिंग।

// pulldown-cmark का उपयोग करके Markdown को HTML में पार्स करने का उदाहरण
use pulldown_cmark::{Parser, Options, html};

let markdown_input = "# नमस्ते, दुनिया!\n\nयह **बोल्ड टेक्स्ट** और *इटैलिक* है।";
let mut options = Options::empty();
options.insert(Options::ENABLE_TABLES);
options.insert(Options::ENABLE_FOOTNOTES);

let parser = Parser::new_ext(&markdown_input, options);
let mut html_output = String::new();
html::push_html(&mut html_output, parser);

println!("{}", html_output);
// आउटपुट: <h1>नमस्ते, दुनिया!</h1>
// <p>यह <strong>बोल्ड टेक्स्ट</strong> और <em>इटैलिक</em> है।</p>

pulldown-cmark की विशेषताएँ:

  • न्यूनतम मेमोरी खपत — AST के बिना पार्सिंग।
  • एक्सटेंशन का समर्थन: टेबल, फुटनोट्स, स्ट्राइकथ्रू, URL ऑटोलिंकिंग।
  • CommonMark 0.31.2 का पूर्ण समर्थन।
  • कस्टम इवेंट प्रोसेसिंग की संभावना (जैसे, सिंटैक्स हाइलाइटिंग के लिए)।

2. comrak — GFM समर्थन के साथ विस्तार योग्य पार्सर

Comrak लोकप्रिय JavaScript लाइब्रेरी cmark-gfm का एक फोर्क है, जिसे Rust पर पोर्ट किया गया है। यह GitHub Flavored Markdown (GFM) के साथ पूर्ण संगतता सुनिश्चित करता है, जिसमें टास्क लिस्ट, टेबल, स्ट्राइकथ्रू, ऑटोमैटिक लिंक और HTML एस्केपिंग जैसे एक्सटेंशन शामिल हैं।

Comrak ComrakOptions स्ट्रक्चर के माध्यम से पार्सर को कॉन्फ़िगर करने के लिए एक लचीला API प्रदान करता है। आप अलग-अलग एक्सटेंशन को चालू या बंद कर सकते हैं, टैब्यलेशन की चौड़ाई सेट कर सकते हैं, और विशिष्ट HTML टैग्स को अनुमति या प्रतिबंधित कर सकते हैं।

// Markdown को HTML में बदलने के लिए comrak का उपयोग करने का उदाहरण
use comrak::{markdown_to_html, ComrakOptions};

let markdown = "## कार्य सूची\n\n- [x] होमवर्क करें\n- [ ] सामान खरीदें\n\n```rust\nfn main() {\n    println!(\"Hello\");\n}\n```";

let options = ComrakOptions::default();
let html = markdown_to_html(markdown, &options);

println!("{}", html);
// आउटपुट में शामिल है: हेडिंग, चेकबॉक्स, कोड ब्लॉक हाइलाइटिंग के साथ

comrak के लाभ:

  • GFM (GitHub Flavored Markdown) का पूर्ण समर्थन।
  • कॉन्फ़िगरेबल सुरक्षा: खतरनाक HTML टैग्स को एस्केप करना।
  • नेस्टेड कोड ब्लॉक, गणितीय फॉर्मूले (एक्सटेंशन के माध्यम से) का समर्थन।
  • उच्च गति प्रदर्शन, pulldown-cmark के बराबर।

3. markdown crate — सरल और हल्का पार्सर

आधिकारिक markdown crate (crate markdown) एक न्यूनतम लाइब्रेरी है जो Markdown की बुनियादी स्पेसिफिकेशन को लागू करती है। यह एक्सटेंशन और टेबल को सपोर्ट नहीं करता, लेकिन सरल कार्यों के लिए बढ़िया है जहाँ केवल बुनियादी एलिमेंट्स (हेडिंग, लिस्ट, लिंक, एम्फ़ेसिस) को कन्वर्ट करने की आवश्यकता होती है।

अनुशंसाएँ