XNGMarkdownParser 0.3.2

XNGMarkdownParser 0.3.2

TestsTested
LangLanguage Obj-CObjective C
License Apache 2
ReleasedLast Release Apr 2015

Maintained by Jose Alcalá Correa, Renzo Crisóstomo, Martin Kim Dung-Pham.


Downloads

Total84,856
Week0
Month0

Installs

Apps469
Test Targets55
Watch Apps2
powered by Segment

GitHub

Stars96
Watchers22
Forks21
Issues7
Contributors14
Pull Requests2

Code

Files7
LOCLines of Code 10,716


XNGMarkdownParser - A Markdown NSAttributedString Parser

Dependency Status

This is a Markdown => NSAttributedString parser built on top of a flex parser. It takes an NSString and returns an NSAttributedString with markdown tags replaced by CoreText formatting attributes.

This project is a fork of NSAttributedMarkdownParser by NimbusKit: https://github.com/NimbusKit/markdown

Adding it to your Project

Manual

  1. Drag all of the files from the src/ directory into your project.
  2. Import XNGMarkdownParser.h in your project.
  3. Create an instance of the parser object and pass it the string you wish to parse.
  4. Plug the resulting NSAttributedString into your favorite NSAttributedString label implementation (like an UITextView)

Supported Features

*italics*
**bold**
***bold italic***
~~strikethrough~~

# Header 1
## Header 2
### Header 3
#### Header 4
##### Header 5
###### Header 6

Header 1
========

Header 2
--------

http://google.com urls
[Text] (http://google.com "alt text") urls

Extended Features

  • UTF-8 support
  • Vastly improved speed
  • Extended formatting for paragraphs
  • Support different link fonts
  • Tests and example project
  • Support for CocoaPods

Examples

Simplest example

XNGMarkdownParser *parser = [[XNGMarkdownParser alloc] init];
NSAttributedString *string = [parser attributedStringFromMarkdownString:@"This is __rad__."];

Further text customization

// this parser initializes only once and customizes fonts, line height and link color
+ (XNGMarkdownParser *)titleMarkdownParser {
    static dispatch_once_t onceToken;
    static XNGMarkdownParser *parser;
    dispatch_once(&onceToken, ^{
        parser = [[XNGMarkdownParser alloc] init];

        parser.paragraphFont = [UIFont xng_14Font];
        parser.boldFontName = [UIFont xng_14Font].fontName;
        parser.linkFontName = [UIFont xng_14Font].fontName;

        const CGFloat lineHeight = 18;
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        paragraphStyle.minimumLineHeight = lineHeight;
        parser.topAttributes = @{
            NSParagraphStyleAttributeName: paragraphStyle,
            NSForegroundColorAttributeName: self.textColor
        };
    });

    return parser;
}

See the included Example project and the tests to check for further options.