Haring 2.1

Haring 2.1

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最后发布2018年9月
SPM支持SPM

David Lari维护。



Haring 2.1

Haring

Version Carthage compatible License Platform

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

Haring是从Ivan Bruel的MarkdownKit分支出来的,看起来不再维护。您应该很容易就能将其用作替代品。

Haring的名字来自波普艺术画家Keith Haring

屏幕截图

Example

安装

通过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则受到TSMarkdownParserSwiftyMarkdown的极大启发。

特别感谢Michael Brown协助处理UTF-16 转义/反转义

许可协议

Haring采用MIT许可协议。更多信息请参阅LICENSE文件。