iOS Markdown 轉換及預覽

EyreFree發表於2017-12-25

作為一個開發人員,日常經常會需要編寫各種各樣的文件/材料之類的,個人非常喜歡用 Markdown 來完成這些工作,Markdown 的優點就不再贅述了,大家應該都有過了解,不過目前 iOS 原生並沒有提供任何對 Markdown 的支援。所以最近基於 cmark-gfm 把 Markdown 轉 HTML 的功能封裝了一遍,並且在原有基礎上新增了對列表 table 的支援,同時利用 WKWebView 做了一個可直接展示 Markdown 的 View,方便以後使用,現已開源到 GitHub 基於 WTFPL 協議進行分發,需要的同學可以自取。

專案地址:github.com/EyreFree/EF…


iOS Markdown 轉換及預覽

EFMarkdown 是一個輕量級的 Markdown 庫,可以用來將 Markdown 轉為 HTML,也可以用來直接展示 Markdown 對其進行預覽。

English Introduction

預覽

sample1 sample2 sample3 sample4
iOS Markdown 轉換及預覽
iOS Markdown 轉換及預覽
iOS Markdown 轉換及預覽
iOS Markdown 轉換及預覽

示例

  1. 利用 git clone 命令下載本倉庫;
  2. 利用 cd 命令切換到 Example 目錄下,執行 pod install 命令;
  3. 隨後開啟 EFMarkdown.xcworkspace 編譯即可。

或執行以下命令:

git clone git@github.com:EyreFree/EFMarkdown.git; cd EFMarkdown/Example; pod install; open EFMarkdown.xcworkspace
複製程式碼

環境

  • XCode 8.0+
  • Swift 3.0+

安裝

EFMarkdown 可以通過 CocoaPods 進行獲取。只需要在你的 Podfile 中新增如下程式碼就能實現引入:

pod "EFMarkdown"
複製程式碼

使用

1. 將 Markdown 轉為 HTML

你可以利用 EFMarkdown 輕鬆實現 Markdown 字串到 HTML 字串地轉換,示例程式碼如下:

let markdown = "# Hello"
var html = ""
do {
    html = try EFMarkdown().markdownToHTML(markdown, options: EFMarkdownOptions.safe)
    print(html) // 這裡會輸出 "<h1>Hello</h1>\n"
} catch let error as NSError {
    print ("Error: \(error.domain)")
}
複製程式碼

2. 對 Markdown 進行預覽

你可以利用 EFMarkdownView 實現對 Markdown 字串的預覽,示例程式碼如下:

let screenSize = UIScreen.main.bounds
let markView = EFMarkdownView()
markView.frame = CGRect(x: 0, y: 20, width: screenSize.width, height: screenSize.height - 20)
self.view.addSubview(markView)
markView.load(markdown: testMarkdownFileContent(), options: [.default]) {
    [weak self] (_, _) in
    if let _ = self {
        // 可選:你可以通過在此處傳入一個百分比來改變字型大小
        markView.setFontSize(percent: 128)
        printLog("load finish!")
    }
}
複製程式碼

3. 選項

你可以通過傳入不同的選項來控制底層 cmark 對 Markdown 字串的處理,預設傳入的值為 safe

可選的值有以下這些:

  • default
  • sourcePos
  • hardBreaks
  • safe
  • noBreaks
  • validateUTF8
  • smart
  • githubPreLang
  • liberalHtmlTag

更多關於這些選項的資訊,可以參考 cmark

作者

EyreFree, eyrefree@eyrefree.org

協議

iOS Markdown 轉換及預覽

EFMarkdown 基於 WTFPL 協議進行分發和使用,更多資訊參見協議檔案。


如有任何智慧財產權、版權問題或理論錯誤,還請指正。
https://juejin.im/post/5a3217456fb9a0451b049081
轉載請註明原作者及以上資訊。

相關文章