Kotlin में Markdown: लाइब्रेरीज़ और टूल्स की समीक्षा
Markdown एक लोकप्रिय मार्कअप भाषा है जिसका उपयोग टेक्स्ट फ़ॉर्मेटिंग के लिए किया जाता है। इसका व्यापक उपयोग डॉक्यूमेंटेशन, README फ़ाइलों, ब्लॉग और कंटेंट मैनेजमेंट सिस्टम में होता है। Kotlin इकोसिस्टम में कई परिपक्व लाइब्रेरीज़ मौजूद हैं जो Markdown को पार्स करने, HTML में बदलने और अपने स्वयं के एक्सटेंशन बनाने की सुविधा देती हैं। इस लेख में हम तीन मुख्य दृष्टिकोणों पर चर्चा करेंगे: commonmark-java, flexmark-java और नेटिव kmarkdown लाइब्रेरी का उपयोग।
1. commonmark-java लाइब्रेरी
commonmark-java CommonMark स्पेसिफिकेशन का आधिकारिक Java कार्यान्वयन है, जो Kotlin में बेहतरीन काम करता है। यह सरल API, उच्च प्रदर्शन और मानक के सख्त अनुपालन प्रदान करता है।
इंस्टॉलेशन
build.gradle.kts में डिपेंडेंसी जोड़ें:
implementation("org.commonmark:commonmark:0.21.0")
उपयोग का उदाहरण
import org.commonmark.parser.Parser
import org.commonmark.renderer.html.HtmlRenderer
fun main() {
val parser = Parser.builder().build()
val document = parser.parse("**नमस्ते**, यह *Markdown* है Kotlin में!")
val renderer = HtmlRenderer.builder().build()
val html = renderer.render(document)
println(html)
// आउटपुट: <p><strong>नमस्ते</strong>, यह <em>Markdown</em> है Kotlin में!</p>
}
यह लाइब्रेरी सभी बुनियादी एलिमेंट्स को सपोर्ट करती है: हेडिंग, लिस्ट, लिंक, इमेज, कोड और कोड ब्लॉक। कार्यक्षमता बढ़ाने के लिए अतिरिक्त मॉड्यूल जोड़े जा सकते हैं, जैसे GitHub Flavored Markdown टेबल के लिए commonmark-ext-gfm-tables।
2. flexmark-java लाइब्रेरी
flexmark-java एक अधिक शक्तिशाली और लचीला विकल्प है। यह CommonMark, GitHub Flavored Markdown (GFM) और कई एक्सटेंशन जैसे फ़ुटनोट, एंकर, इमोजी, गणितीय सूत्र और कस्टम सिंटैक्स को सपोर्ट करता है।
इंस्टॉलेशन
implementation("com.vladsch.flexmark:flexmark-all:0.64.8")
एक्सटेंशन के साथ उदाहरण
import com.vladsch.flexmark.html.HtmlRenderer
import com.vladsch.flexmark.parser.Parser
import com.vladsch.flexmark.ext.tables.TablesExtension
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension
fun main() {
val extensions = listOf(TablesExtension.create(), StrikethroughExtension.create())
val parser = Parser.builder().extensions(extensions).build()
val document = parser.parse("| शीर्षक | विवरण |\n|--------|--------|\n| Kotlin | भाषा |\n\n~~काटा गया टेक्स्ट~~")
val renderer = HtmlRenderer.builder().extensions(extensions).build()
println(renderer.render(document))
}
Flexmark रेंडरिंग को कस्टमाइज़ करने की भी अनुमति देता है: CSS क्लास जोड़ना, एट्रीब्यूट ऑर्डर बदलना, AST ट्री के लिए कस्टम विज़िटर बनाना। यह इसे जटिल प्रोजेक्ट्स के लिए आदर्श बनाता है जहाँ आउटपुट की बारीक ट्यूनिंग आवश्यक है।
3. नेटिव kmarkdown लाइब्रेरी
kmarkdown Markdown पार्सर का विशुद्ध Kotlin कार्यान्वयन है, जो कोरूटीन और भाषा की अंतर्निहित सुविधाओं का उपयोग करके लिखा गया है। यह हल्का है और Kotlin की मानक लाइब्रेरी के अलावा किसी अतिरिक्त डिपेंडेंसी की आवश्यकता नहीं है।
इंस्टॉलेशन
implementation("net.nightwhistler:kmarkdown:1.0.2")
उदाहरण
import net.nightwhistler.kmarkdown.KMarkdown
fun main() {
val markdown = KMarkdown()
val html = markdown.parseToHtml("# शीर्षक\n\nसामान्य **टेक्स्ट**")
println(html)
// आउटपुट: <h1>शीर्षक</h1><p>सामान्य <strong>टेक्स्ट</strong></p>
}
Kmarkdown सरल परिदृश्यों के लिए उपयुक्त है जहाँ GFM की विस्तारित सुविधाओं की आवश्यकता नहीं है। इसका लाभ कोड की सफाई और Java संस्करण संगतता समस्याओं का अभाव है।
लाइब्रेरीज़ की तुलना
पुस्तकालय में भी
MetricsKit — iOS/macOS पर Swift ऐप्स की निगरानी
जावा एप्लिकेशन कॉन्फ़िगरेशन: सेटिंग्स प्रबंधन के लिए लाइब्रेरी और टूल्स
Typegoose TypeScript: पूर्ण गाइड उदाहरणों के साथ