XNGMarkdownParser

A Markdown NSAttributedString parser.

Showing:

Popularity

Downloads/wk

0

GitHub Stars

103

Maintenance

Last Commit

5yrs ago

Contributors

21

Package

Dependencies

0

License

Apache License, Version 2.0

Categories

Readme

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.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100