MarkdownKit 是一个可定制和可扩展的 Markdown 解析器,适用于 iOS 和 macOS。它通过使用正则表达式支持许多标准的 Markdown 元素。它还允许自定义所有 Markdown 元素的字体和颜色属性。
MarkdownKit 可通过 CocoaPods 获得。CocoaPods 是一个依赖管理器,可以自动执行并简化在项目中使用 MarkdownKit 等第三方库的过程。您可以使用以下命令安装 CocoaPods
gem install cocoapods
要使用 CocoaPods 将 MarkdownKit 集成到您的 Xcode 项目中,只需将以下行添加到您的 Podfile 中
pod "MarkdownKit"
之后,运行以下命令
pod install
MarkdownKit 可通过 Carthage 获得。Carthage 是一个去中心化的依赖管理器,可以构建您的依赖项并为您提供二进制框架。
您可以通过 Homebrew 使用以下命令安装 Carthage
brew update
brew install carthage
要使用 Carthage 将 MarkdownKit 集成到您的 Xcode 项目中,只需将以下行添加到您的 Cartfile 中
github "ivanbruel/MarkdownKit"
之后,运行以下命令
carthage update --use-xcframeworks
MarkdownKit 可通过 Swift Package Manager 获得。
要将 MarkdownKit 添加为 Swift 包的依赖项,只需将以下行添加到您的 Package.swift
文件中
.package(url: "https://github.com/bmoliveira/MarkdownKit.git", from: "1.7.0")
*italic* or _italics_
**bold** or __bold__
~~strikethrough~~
# Header 1
## Header 2
### Header 3
#### Header 4
##### Header 5
###### Header 6
> Quote
* List
- List
+ List
`code` or ```code```
[Links](http://github.com/ivanbruel/MarkdownKit/)
为了使用 MarkdownKit 将 Markdown 转换为 NSAttributedString,您只需创建一个 MarkdownParser
实例并调用 parse(_)
函数。
let markdownParser = MarkdownParser()
let markdown = "I support a *lot* of custom Markdown **Elements**, even `code`!"
label.attributedText = markdownParser.parse(markdown)
let markdownParser = MarkdownParser(font: UIFont.systemFont(ofSize: 18))
markdownParser.enabledElements = .disabledAutomaticLink
markdownParser.bold.color = UIColor.red
markdownParser.italic.font = UIFont.italicSystemFont(ofSize: 300)
markdownParser.header.fontIncrease = 4
要添加新的 Markdown 元素,您只需实现 MarkdownElement
协议(或其子类),并将其添加到 MarkdownParser
中。
import MarkdownKit
class MarkdownSubreddit: MarkdownLink {
private static let regex = "(^|\\s|\\W)(/?r/(\\w+)/?)"
override var regex: String {
return MarkdownSubreddit.regex
}
override func match(match: NSTextCheckingResult,
attributedString: NSMutableAttributedString) {
let subredditName = attributedString.attributedSubstringFromRange(match.rangeAtIndex(3)).string
let linkURLString = "http://reddit.com/r/\(subredditName)"
formatText(attributedString, range: match.range, link: linkURLString)
addAttributes(attributedString, range: match.range, link: linkURLString)
}
}
let markdownParser = MarkdownParser(customElements: [MarkdownSubreddit()])
let markdown = "**/r/iosprogramming** can be *markdown* as well!"
label.attributedText = markdownParser.parse(markdown)
要运行示例项目,请克隆存储库,然后首先从 Example 目录运行 pod install
。
该库深受 TSMarkdownParser 和 SwiftyMarkdown 的启发。
特别感谢 Michael Brown 在 UTF-16 转义/取消转义 方面提供的帮助。
MarkdownKit 在 MIT 许可下可用。有关更多信息,请参见 LICENSE 文件。