ios markdown 解析_iOS Markdown 转换及预览

作为一个开发人员,日常经常会需要编写各种各样的文档/材料之类的,个人非常喜欢用 Markdown 来完成这些工作,Markdown 的优点就不再赘述了,大家应该都有过了解,不过目前 iOS 原生并没有提供任何对 Markdown 的支持。所以最近基于 cmark-gfm 把 Markdown 转 HTML 的功能封装了一遍,并且在原有基础上添加了对列表 table 的支持,同时利用 WKWebView 做了一个可直接展示 Markdown 的 View,方便以后使用,现已开源到 GitHub 基于 WTFPL 协议进行分发,需要的同学可以自取。

EFMarkdown 是一个轻量级的 Markdown 库,可以用来将 Markdown 转为 HTML,也可以用来直接展示 Markdown 对其进行预览。

预览

示例利用 git clone 命令下载本仓库;

利用 cd 命令切换到 Example 目录下,执行 pod install 命令;

随后打开 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) // 这里会输出 "

Hello

\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

协议

EFMarkdown 基于 WTFPL 协议进行分发和使用,更多信息参见协议文件。如有任何知识产权、版权问题或理论错误,还请指正。

https://juejin.im/post/5a3217456fb9a0451b049081

转载请注明原作者及以上信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值