Swift (iOS/macOS) में Markdown के साथ काम करना: लाइब्रेरी और व्यावहारिक उदाहरण
Markdown एक हल्की मार्कअप भाषा है, जिसका व्यापक रूप से दस्तावेज़ीकरण, चैट और शैक्षिक अनुप्रयोगों में टेक्स्ट को फ़ॉर्मेट करने के लिए उपयोग किया जाता है। Swift (iOS/macOS) इकोसिस्टम में कई परिपक्व लाइब्रेरी हैं जो Markdown को पार्स करने, रेंडर करने और मूल व्यू में बदलने की अनुमति देती हैं। इस लेख में हम मुख्य टूल्स: Down, Ink और SwiftMarkdown पर विचार करेंगे, साथ ही SwiftUI और UIKit में एकीकरण के उदाहरण दिखाएंगे।
1. Down लाइब्रेरी (cmark-आधारित)
Down Swift में Markdown के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह उच्च-प्रदर्शन C-पार्सर cmark पर आधारित है और CommonMark मानक का समर्थन करती है। Down Markdown को HTML, NSAttributedString, PDF और यहां तक कि AST (एब्सट्रैक्ट सिंटैक्स ट्री) में बदलने की अनुमति देती है।
स्थापना
Package.swift में जोड़ें:
dependencies: [ .package(url: "https://github.com/johnxnguyen/Down.git", from: "0.9.4")]उदाहरण: Markdown को NSAttributedString में रेंडर करना
import Down
let markdownString = "# शीर्षक
यह **बोल्ड** टेक्स्ट है और *इटैलिक*।"let down = Down(markdownString: markdownString)
do { let attributedString = try down.toAttributedString() // UITextView या UILabel में उपयोग करें textView.attributedText = attributedString} catch { print("पार्सिंग त्रुटि: \\(error)")}Down DownStyler के माध्यम से कस्टम स्टाइल का भी समर्थन करती है:
let styler = DownStyler(configuration: DownStylerConfiguration( fonts: FontCollection( heading1: .boldSystemFont(ofSize: 24), body: .systemFont(ofSize: 16) ), colors: ColorCollection( heading1: .systemBlue, body: .label )))let attributedString = try down.toAttributedString(styler: styler)2. Ink लाइब्रेरी (John Sundell)
Ink लेखक John Sundell द्वारा एक हल्का Markdown पार्सर है। इसे बाहरी निर्भरता (शुद्ध Swift) की आवश्यकता नहीं है और यह सरल कार्यों के लिए आदर्श है: शीर्षक, सूचियाँ, लिंक निकालना। Ink ब्लॉक-स्तरीय तत्वों का एक ट्री लौटाता है, जिसे अनुकूलित किया जा सकता है।
Swift Package Manager के माध्यम से स्थापना
dependencies: [ .package(url: "https://github.com/JohnSundell/Ink.git", from: "0.6.0")]उदाहरण: शीर्षकों को पार्स करना और निकालना
import Ink
let markdown = """# मुख्य शीर्षक## उपशीर्षक**बोल्ड** हाइलाइटिंग के साथ सामान्य टेक्स्ट।"""
let parser = MarkdownParser()let result = parser.parse(markdown)
for heading in result.headings { print("स्तर \\(heading.level): \\(heading.text)")}// आउटपुट:// स्तर 1: मुख्य शीर्षक// स्तर 2: उपशीर्षकInk सिंटैक्स विस्तार के लिए कस्टम मॉडिफ़ायर का भी समर्थन करती है:
let modifier = Modifier(target: .inlineCode) { html, markdown in return "<span style=\\"color: red;\\">\\(html)</span>"}let parser = MarkdownParser(modifiers: [modifier])3. SwiftMarkdown (Apple द्वारा)
SwiftMarkdown Apple की आधिकारिक लाइब्रेरी है, जिसे WWDC 2022 में प्रस्तुत किया गया था। यह SwiftUI इकोसिस्टम के साथ गहराई से एकीकृत है और तालिकाओं, हाइलाइटिंग के साथ कोड ब्लॉक और नेस्टेड सूचियों सहित सभी Markdown एक्सटेंशन का समर्थन करती है। SwiftMarkdown Foundation से AttributedString का उपयोग करती है, जो स्थानीयकरण और डायनामिक फ़ॉन्ट को सरल बनाती है।
स्थापना
Xcode के माध्यम से प्रोजेक्ट में जोड़ें: File → Add Packages → apple/swift-markdown।
उदाहरण: SwiftUI में Markdown प्रदर्शित करना
import MarkdownUIimport SwiftUI
struct ContentView: View { let markdown = """ # स्वागत है यह **उदाहरण** उपयोग किया गया