1 | // Package blackfriday is a markdown processor.
|
---|
2 | //
|
---|
3 | // It translates plain text with simple formatting rules into an AST, which can
|
---|
4 | // then be further processed to HTML (provided by Blackfriday itself) or other
|
---|
5 | // formats (provided by the community).
|
---|
6 | //
|
---|
7 | // The simplest way to invoke Blackfriday is to call the Run function. It will
|
---|
8 | // take a text input and produce a text output in HTML (or other format).
|
---|
9 | //
|
---|
10 | // A slightly more sophisticated way to use Blackfriday is to create a Markdown
|
---|
11 | // processor and to call Parse, which returns a syntax tree for the input
|
---|
12 | // document. You can leverage Blackfriday's parsing for content extraction from
|
---|
13 | // markdown documents. You can assign a custom renderer and set various options
|
---|
14 | // to the Markdown processor.
|
---|
15 | //
|
---|
16 | // If you're interested in calling Blackfriday from command line, see
|
---|
17 | // https://github.com/russross/blackfriday-tool.
|
---|
18 | //
|
---|
19 | // Sanitized Anchor Names
|
---|
20 | //
|
---|
21 | // Blackfriday includes an algorithm for creating sanitized anchor names
|
---|
22 | // corresponding to a given input text. This algorithm is used to create
|
---|
23 | // anchors for headings when AutoHeadingIDs extension is enabled. The
|
---|
24 | // algorithm is specified below, so that other packages can create
|
---|
25 | // compatible anchor names and links to those anchors.
|
---|
26 | //
|
---|
27 | // The algorithm iterates over the input text, interpreted as UTF-8,
|
---|
28 | // one Unicode code point (rune) at a time. All runes that are letters (category L)
|
---|
29 | // or numbers (category N) are considered valid characters. They are mapped to
|
---|
30 | // lower case, and included in the output. All other runes are considered
|
---|
31 | // invalid characters. Invalid characters that precede the first valid character,
|
---|
32 | // as well as invalid character that follow the last valid character
|
---|
33 | // are dropped completely. All other sequences of invalid characters
|
---|
34 | // between two valid characters are replaced with a single dash character '-'.
|
---|
35 | //
|
---|
36 | // SanitizedAnchorName exposes this functionality, and can be used to
|
---|
37 | // create compatible links to the anchor names generated by blackfriday.
|
---|
38 | // This algorithm is also implemented in a small standalone package at
|
---|
39 | // github.com/shurcooL/sanitized_anchor_name. It can be useful for clients
|
---|
40 | // that want a small package and don't need full functionality of blackfriday.
|
---|
41 | package blackfriday
|
---|
42 |
|
---|
43 | // NOTE: Keep Sanitized Anchor Name algorithm in sync with package
|
---|
44 | // github.com/shurcooL/sanitized_anchor_name.
|
---|
45 | // Otherwise, users of sanitized_anchor_name will get anchor names
|
---|
46 | // that are incompatible with those generated by blackfriday.
|
---|