Java में Markdown के साथ काम करना: लाइब्रेरी और उपयोग के उदाहरण
Markdown एक हल्की मार्कअप भाषा है जिसका उपयोग डॉक्यूमेंटेशन, README फ़ाइलों, ब्लॉग और कंटेंट मैनेजमेंट सिस्टम में टेक्स्ट को फ़ॉर्मेट करने के लिए व्यापक रूप से किया जाता है। Java में कई परिपक्व लाइब्रेरी उपलब्ध हैं जो Markdown को पार्स करने, HTML में बदलने और रिवर्स ऑपरेशन करने की सुविधा देती हैं। इस लेख में हम तीन सबसे लोकप्रिय लाइब्रेरी: CommonMark, Flexmark और Pegdown पर विस्तार से चर्चा करेंगे, और उनके व्यावहारिक उपयोग के उदाहरण देंगे।
1. CommonMark (org.commonmark:commonmark)
CommonMark Markdown का एक सख्त मानक है जो मूल स्पेसिफिकेशन की अस्पष्टताओं को दूर करता है। commonmark-java लाइब्रेरी इस मानक का संदर्भ कार्यान्वयन है। यह हल्की, तेज़ है और एक्सटेंशन (टेबल, स्ट्राइकथ्रू, ऑटोलिंक) को सपोर्ट करती है।
Maven डिपेंडेंसी:
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark</artifactId>
<version>0.21.0</version>
</dependency>
Markdown को HTML में पार्स करने का उदाहरण:
import org.commonmark.node.*;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer;
public class CommonMarkExample {
public static void main(String[] args) {
String markdown = "# शीर्षक\n\nयह **बोल्ड** टेक्स्ट है और *इटैलिक*।\n\n- आइटम 1\n- आइटम 2";
Parser parser = Parser.builder().build();
Node document = parser.parse(markdown);
HtmlRenderer renderer = HtmlRenderer.builder().build();
String html = renderer.render(document);
System.out.println(html);
}
}
आउटपुट:
<h1>शीर्षक</h1>
<p>यह <strong>बोल्ड</strong> टेक्स्ट है और <em>इटैलिक</em>।</p>
<ul>
<li>आइटम 1</li>
<li>आइटम 2</li>
</ul>
एक्सटेंशन (जैसे टेबल) जोड़ने के लिए:
import org.commonmark.ext.gfm.tables.TablesExtension;
Parser parser = Parser.builder()
.extensions(List.of(TablesExtension.create()))
.build();
2. Flexmark (com.vladsch.flexmark)
Flexmark एक उच्च-प्रदर्शन Markdown लाइब्रेरी है जो कई एक्सटेंशन सपोर्ट करती है: GFM टेबल, फुटनोट, एट्रीब्यूट, टाइपोग्राफी, कोड सिंटैक्स हाइलाइटिंग और भी बहुत कुछ। यह पूरी तरह से कस्टमाइज़ेबल है और जटिल प्रोजेक्ट्स के लिए उपयुक्त है।
Maven डिपेंडेंसी:
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-all</artifactId>
<version>0.64.8</version>
</dependency>
टेबल के साथ Markdown को HTML में बदलने का उदाहरण:
import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.data.MutableDataSet;
import com.vladsch.flexmark.ext.tables.TablesExtension;
import java.util.Arrays;
public class FlexmarkExample {
public static void main(String[] args) {
MutableDataSet options = new MutableDataSet();
options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create()));
Parser parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
String markdown = "| कॉलम 1 | कॉलम 2 |\n|-----------|-----------|\n| सेल 1 | सेल 2 |";
String html = renderer.render(parser.parse(markdown));
System.out.println(html);
}
}
Flexmark आपको मेटाडेटा (YAML front matter) निकालने, LaTeX में कन्वर्ट करने और AST ट्री के साथ काम करने की भी सुविधा देता है।
3. Pegdown (org.pegdown:pegdown)
Pegdown Markdown के लिए सबसे पुरानी लाइब्रेरी में से एक है।