Kotlin में Markdown के साथ काम करना: लाइब्रेरीज़ और टूल्स का अवलोकन
\nMarkdown एक लोकप्रिय मार्कअप भाषा है जिसका उपयोग दस्तावेज़ीकरण, ब्लॉग, चैट और शैक्षिक प्लेटफार्मों में टेक्स्ट को फ़ॉर्मेट करने के लिए किया जाता है। Kotlin इकोसिस्टम में कई शक्तिशाली लाइब्रेरीज़ मौजूद हैं जो Markdown को पार्स, जनरेट और रूपांतरित करने की अनुमति देती हैं। इस लेख में हम मुख्य टूल्स, उनकी क्षमताओं और व्यावहारिक कोड उदाहरणों पर विचार करेंगे।
\n\nKotlin में Markdown पार्सिंग की आवश्यकता क्यों है?
\nशैक्षिक साइटों, कोड एडिटर, सामग्री प्रबंधन प्रणाली या नोट्स ऐप्स के विकास में अक्सर आवश्यकता होती है:
\n- \n
- वेब पेजों पर प्रदर्शित करने के लिए Markdown टेक्स्ट को HTML में बदलना \n
- Markdown समर्थन के साथ WYSIWYG एडिटर बनाना \n
- दस्तावेज़ की संरचना का विश्लेषण करना (शीर्षक, सूचियाँ, लिंक) \n
- प्रोग्रामेटिक रूप से Markdown मार्कअप जनरेट करना \n
Kotlin में Markdown के साथ काम करने के लिए मुख्य लाइब्रेरीज़
\n\n1. Flexmark (अनुशंसित)
\nFlexmark – Java में लिखी गई और Kotlin के साथ पूरी तरह से संगत, Markdown पार्सिंग के लिए एक उच्च-प्रदर्शन लाइब्रेरी है। यह CommonMark, GFM (GitHub Flavored Markdown) और कई एक्सटेंशन (टेबल, फुटनोट, इमोजी, गणितीय सूत्र) का समर्थन करती है।
\nGradle के माध्यम से कनेक्शन:
\nimplementation("com.vladsch.flexmark:flexmark:0.64.8")\nimplementation("com.vladsch.flexmark:flexmark-html2md-converter:0.64.8")\nMarkdown को HTML में बदलने का उदाहरण:
\nimport com.vladsch.flexmark.html.HtmlRenderer\nimport com.vladsch.flexmark.parser.Parser\nimport com.vladsch.flexmark.util.data.MutableDataSet\n\nfun main() {\n val options = MutableDataSet()\n val parser = Parser.builder(options).build()\n val renderer = HtmlRenderer.builder(options).build()\n\n val markdown = """\n # नमस्ते, Kotlin!\n यह *Markdown* के साथ काम करने का **उदाहरण** है।\n - बिंदु 1\n - बिंदु 2\n """.trimIndent()\n\n val document = parser.parse(markdown)\n val html = renderer.render(document)\n println(html)\n // आउटपुट: <h1>नमस्ते, Kotlin!</h1>\n // <p>यह <strong>उदाहरण</strong> *Markdown* के साथ काम करने का है।</p>\n // <ul><li>बिंदु 1</li><li>बिंदु 2</li></ul>\n}\n\n2. CommonMark-Java
\nCommonMark-Java – CommonMark विनिर्देश का संदर्भ कार्यान्वयन। हल्का, तेज़, न्यूनतम। यदि आपको GFM एक्सटेंशन की आवश्यकता नहीं है तो उपयुक्त है।
\nimplementation("org.commonmark:commonmark:0.21.0")\nimport org.commonmark.parser.Parser\nimport org.commonmark.renderer.html.HtmlRenderer\n\nfun main() {\n val parser = Parser.builder().build()\n val renderer = HtmlRenderer.builder().build()\n\n val markdown = "**बोल्ड टेक्स्ट** और *इटैलिक*"\n val document = parser.parse(markdown)\n val html = renderer.render(document)\n println(html) // <p><strong>बोल्ड टेक्स्ट</strong> और <em>इटैलिक</em></p>\n}\n\n3. KMarkdown (Kotlin Multiplatform के लिए)
\nKMarkdown – मूल Kotlin लाइब्रेरी, जो Kotlin Multiplatform (JVM, JS, Native) का समर्थन करती है। क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट्स के लिए आदर्श है।
\n// build.gradle.kts\nimplementation("com.github.cretz.kmarkdown:kmarkdown:0.2.0")\nimport com.cretz.kmarkdown.KMarkdown\n\nfun main() {\n val md = KMarkdown()\n val html = md.toHtml("# शीर्षक\\n`कोड` के साथ सामान्य टेक्स्ट")\n println(html) // <h1>शीर्षक</h1>\\n<p>`कोड` के साथ सामान्य टेक्स्ट</p>\n}\n\nFlexmark की उन्नत क्षमताएँ
\nFlexmark पार्सिंग और रेंडरिंग को बारीकी से अनुकूलित करने की अनुमति देता है। आइए कुछ उपयोगी परिदृश्यों पर विचार करें।
\n\nएक्सटेंशन जोड़ना (टेबल, स्ट्राइकथ्रू)
\nimp