Haring
Haring是一个可定制和可扩展的iOS Markdown解析器。它通过正则表达式使用支持许多标准Markdown元素。它还允许对Markdown元素的所有字体和颜色属性进行自定义。
Haring是从Ivan Bruel的MarkdownKit分支出来的,看起来不再维护。您应该很容易就能将其用作替代品。
Haring的名字来自波普艺术画家Keith Haring。
屏幕截图
安装
通过CocoaPods安装
通过 CocoaPods 可以获得 Haring。CocoaPods 是一个依赖管理器,它可以自动化和简化在项目中使用如 Haring 这样的第三方库的过程。要使用 CocoaPods 将 Haring 集成到 Xcode 项目中,只需将以下行添加到您的 pod 文件中即可:
pod 'Haring'
2.x 版本支持 Xcode 9 和 Swift 4。
1.5 版本支持 Xcode 9 和 Swift 3.2。如果需要这个版本,请添加相应的版本号。
pod 'Haring', '~> 1.5.0'
1.4 版本支持 Xcode 8 和 Swift 3.1。如果需要这个版本,请添加相应的版本号。
pod 'Haring', '~> 1.4.0'
然后,运行以下命令
pod install
通过 Carthage 安装
Haring 通过 Carthage 可用。Carthage 是一个去中心化的依赖管理器,可以构建您的依赖项并为您提供二进制框架。
您可以使用以下命令通过 Homebrew 安装 Carthage
brew update
brew install carthage
要使用 Carthage 将 Haring 集成到您的 Xcode 项目中,只需将以下行添加到您的 Cartfile 中即可
github "davidlari/Haring"
然后,运行以下命令
carthage update
支持元素
*italic* or _italics_
**bold** or __bold__
# Header 1
## Header 2
### Header 3
#### Header 4
##### Header 5
###### Header 6
> Quote
* List
- List
+ List
`code` or ```code```
[Links](http://github.com/davidlari/Haring/)
使用方法
为了使用 Haring 将 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.systemFontOfSize(18))
markdownParser.automaticLinkDetectionEnabled = false
markdownParser.bold.color = UIColor.redColor()
markdownParser.italic.font = UIFont.italicSystemFontOfSize(300)
markdownParser.header.fontIncrease = 4
扩展性
要添加新的Markdown元素,您只需实现MarkdownElement
协议(或其子协议),并将其添加到MarkdownParser
中。
import Haring
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
。
关于
Haring由David Lari维护。欢迎贡献力量和 pull requests。
鸣谢
Haring是从MarkdownKit派生出来的,这是因为MarkdownKit明显已经被遗弃。
MarkdownKit则受到TSMarkdownParser和SwiftyMarkdown的极大启发。
特别感谢Michael Brown协助处理UTF-16 转义/反转义。
许可协议
Haring采用MIT许可协议。更多信息请参阅LICENSE文件。