Go (Golang) में Markdown: पार्सिंग से लेकर कस्टमाइज़ेशन तक
Markdown डॉक्यूमेंटेशन, ब्लॉग और शैक्षिक सामग्री के लिए सबसे लोकप्रिय मार्कअप भाषाओं में से एक है। Go (Golang) इकोसिस्टम में कई शक्तिशाली लाइब्रेरी हैं जो Markdown को पार्स करने, HTML में बदलने और सिंटैक्स हाइलाइटिंग जोड़ने में मदद करती हैं। इस लेख में हम मुख्य टूल्स: goldmark, blackfriday और chroma को समझेंगे, और दिखाएंगे कि इन्हें रियल प्रोजेक्ट्स में कैसे इंटीग्रेट करें।
Go में Markdown की ज़रूरत क्यों?
Go एक ऐसी भाषा है जिसे अक्सर वेब सर्वर, API और स्टैटिक साइट जनरेटर बनाने के लिए चुना जाता है। Markdown कंटेंट स्टोर करने के लिए एकदम सही है, क्योंकि यह:
- बिना रेंडर किए भी पढ़ने में आसान है;
- एडिट करना बहुत आसान है;
- कोड, टेबल और इमेज को एम्बेड करने की सुविधा देता है।
Go की लाइब्रेरी Markdown को तुरंत सुरक्षित HTML कोड में बदल सकती हैं, जो शैक्षिक प्लेटफॉर्म (जैसे pythonlib.ru) के लिए बहुत ज़रूरी है।
1. goldmark — आधुनिक और एक्सटेंसिबल पार्सर
goldmark Go में Markdown के साथ काम करने के लिए एक रेफरेंस लाइब्रेरी है। यह CommonMark 0.30 और GFM (GitHub Flavored Markdown) को सपोर्ट करती है, और प्लगइन्स के ज़रिए आसानी से एक्सटेंड की जा सकती है।
इंस्टॉलेशन:
go get github.com/yuin/goldmark
Markdown को HTML में बदलने का बेसिक उदाहरण:
package main
import (
"bytes"
"fmt"
"github.com/yuin/goldmark"
)
func main() {
source := []byte("# नमस्ते, Go!\n\nयह **बोल्ड** टेक्स्ट और `कोड` है।")
var buf bytes.Buffer
if err := goldmark.Convert(source, &buf); err != nil {
panic(err)
}
fmt.Println(buf.String())
}
आउटपुट:
<h1>नमस्ते, Go!</h1>
<p>यह <strong>बोल्ड</strong> टेक्स्ट और <code>कोड</code> है।</p>
goldmark के एक्सटेंशन:
goldmark-meta— YAML मेटाडेटा पार्स करना (लेखों के हेडर);goldmark-highlighting— Chroma के ज़रिए कोड हाइलाइटिंग;goldmark-pdf— PDF में एक्सपोर्ट (प्रायोगिक)।
टेबल (GFM) एक्सटेंशन के साथ उदाहरण:
import (
"github.com/yuin/goldmark"
"github.com/yuin/goldmark/extension"
)
func main() {
md := goldmark.New(
goldmark.WithExtensions(extension.GFM),
)
// ... कन्वर्टेशन
}
2. blackfriday — समय-परीक्षित पार्सर
blackfriday Go में Markdown के लिए शुरुआती लाइब्रेरी में से एक है। हालांकि goldmark को ज़्यादा आधुनिक माना जाता है, blackfriday अभी भी कई प्रोजेक्ट्स (जैसे Hugo) में इस्तेमाल होता है।
इंस्टॉलेशन:
go get github.com/russross/blackfriday/v2
उपयोग का उदाहरण:
package main
import (
"fmt"
"github.com/russross/blackfriday/v2"
)
func main() {
input := []byte("## शीर्षक\n\nसूची:\n- आइटम 1\n- आइटम 2")
output := blackfriday.Run(input)
fmt.Println(string(output))
}
blackfriday की विशेषताएं:
- फुटनोट, डेफिनिशन और स्ट्राइकथ्रू का सपोर्ट;
- HTML रेंडरिंग को कस्टमाइज़ करने के लिए बिल्ट-इन फ्लैग्स;
- goldmark की तुलना में कम डिपेंडेंसी।
3. Chroma के साथ कोड हाइलाइटिंग
शैक्षिक साइटों के लिए सिंटैक्स हाइलाइटिंग बहुत ज़रूरी है। Chroma एक यूनिवर्सल सिंटैक्स एनालाइज़र है, जो goldmark और blackfriday दोनों के साथ इंटीग्रेट होता है।
इंस्टॉलेशन:
go get github.com/alecthomas/chroma/v2
goldmark के साथ goldmark-highlighting के ज़रिए इंटीग्रेशन:
import (
"github.com/yuin/goldmark"
highlighting "github.com/yuin/goldmark-highlighting/v2"
)
func main() {
md := goldmark.New(
goldmark.WithExtensions(