MarkdownKit 1.7.1

MarkdownKit 1.7.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2021 年 4 月
SPM支持 SPM

Ivan BruelBruno OliveiraJan Gaebel 维护。




Logo

MarkdownKit

Version Carthage compatible License Platform

MarkdownKit 是一个用于 iOS 的可定制和可扩展的 Markdown 解析器。它通过正则表达式支持许多标准 Markdown 元素。它还允许自定义所有 Markdown 元素的字体和颜色属性。

截图

Example

安装

通过 CocoaPods 安装

MarkdownKit 通过 CocoaPods 提供。CocoaPods 是一个依赖项管理器,它自动并简化了在项目中使用第三方库如 MarkdownKit 的过程。您可以使用以下命令安装 CocoaPods

gem install cocoapods

要将MarkdownKit集成到Xcode项目中使用CocoaPods,只需在Podfile中添加以下行

pod "MarkdownKit"

之后,运行以下命令

pod install

通过Carthage安装

MarkdownKit可以通过Carthage获取。Carthage是一个去中心化的依赖管理工具,它会构建你的依赖并提供二进制框架。

你可以使用以下命令通过Homebrew安装Carthage

brew update
brew install carthage

要将MarkdownKit集成到Xcode项目中使用Carthage,只需在Cartfile中添加以下行

github "ivanbruel/MarkdownKit"

之后,运行以下命令

carthage update

支持元素

*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)

示例

要运行示例项目,首先克隆仓库,然后从示例目录运行pod install

致谢

该库深受TSMarkdownParserSwiftyMarkdown的启发。

特别感谢Michael BrownUTF-16转义/反转义方面的帮助。

许可协议

MarkdownKit遵循MIT许可协议。更多信息请查看LICENSE文件。