TSMarkdownParser
TSMarkdownParser 是一个使用 NSRegularExpressions 实现的 iOS 上 markdown 到 NSAttributedString 的解析器。它支持 John Gruber 在其网站 Daring Fireball 上提出的许多标准标签。它还通过正则表达式扩展性很强,因此很容易添加您自己的自定义标签或如果您愿意,则可以添加完全不同的解析语法。
支持的标签
以下是一份默认支持的标签列表,要添加您自己的标签,请参阅“添加自定义解析”。
Escaping
\`
`code`
``code``
Headings
# H1
## H2
### H3
#### H4
##### H5
###### H6
Lists
* item
** item
+ item
++ item
- item
-- item
Quotes
> text
>> text
Images
![Alternative text](image.png)
URL
[Link text](https://www.example.net)
Autodetection
https://www.example.net
Emphasis
*Em*
_Em_
**Strong**
__Strong__
要求
TSMarkdownParser 2.x 需要 Xcode 7 或更高版本。
安装
TSMarkdownParser 通过 CocoaPods 分发
pod 'TSMarkdownParser'
或者您可以克隆项目并构建项目中的静态库配置,或者将源文件拖放到项目中。
用法
standardParser类的 方法提供一个新的解析器实例,用于解析上面列出的标签。您还可以创建一个TSMarkdownParser的新实例并添加自己的解析。请参阅“添加自定义解析”以获取如何进行此操作的信息。
NSAttributedString *string = [[TSMarkdownParser standardParser] attributedStringFromMarkdown:markdown];
自定义外观
您可以通过更改TSMarkdownParser实例上的不同属性来配置如何显示markdown。或者,您可以选择自己实现解析并添加自定义属性到.attributed string。您还可以更改解析器返回的.attributed string。
添加自定义解析
下面是如何实现粗体标签解析的示例。您可以使用相同的添加解析规则方法添加自己的解析。您可以向标准parser或自己的parser实例添加解析规则。如果您想在配置属性中使用任何配置属性,请确保您使用弱引用对parser进行操作,以避免创建保留周期。
NSRegularExpression *boldParsing = [NSRegularExpression regularExpressionWithPattern:@"(\\*\\*|__)(.+?)(\\1)" options:kNilOptions error:nil];
__weak TSMarkdownParser *weakSelf = self;
[self addParsingRuleWithRegularExpression:boldParsing block:^(NSTextCheckingResult *match, NSMutableAttributedString *attributedString) {
[attributedString deleteCharactersInRange:[match rangeAtIndex:3]];
[attributedString addAttributes:weakSelf.strongAttributes range:[match rangeAtIndex:2];
[attributedString deleteCharactersInRange:[match rangeAtIndex:1]];
}];
许可协议
TSMarkdownParser遵循MIT许可协议,有关更多信息,请参阅许可文件。