| import 'block_syntaxes/alert_block_syntax.dart'; | |
| import 'block_syntaxes/block_syntax.dart'; | |
| import 'block_syntaxes/fenced_code_block_syntax.dart'; | |
| import 'block_syntaxes/footnote_def_syntax.dart'; | |
| import 'block_syntaxes/header_with_id_syntax.dart'; | |
| import 'block_syntaxes/ordered_list_with_checkbox_syntax.dart'; | |
| import 'block_syntaxes/setext_header_syntax.dart'; | |
| import 'block_syntaxes/setext_header_with_id_syntax.dart'; | |
| import 'block_syntaxes/table_syntax.dart'; | |
| import 'block_syntaxes/unordered_list_with_checkbox_syntax.dart'; | |
| import 'inline_syntaxes/autolink_extension_syntax.dart'; | |
| import 'inline_syntaxes/color_swatch_syntax.dart'; | |
| import 'inline_syntaxes/emoji_syntax.dart'; | |
| import 'inline_syntaxes/inline_html_syntax.dart'; | |
| import 'inline_syntaxes/inline_syntax.dart'; | |
| import 'inline_syntaxes/strikethrough_syntax.dart'; | |
| /// ExtensionSets provide a simple grouping mechanism for common Markdown | |
| /// flavors. | |
| /// | |
| /// For example, the [gitHubFlavored] set of syntax extensions allows users to | |
| /// output HTML from their Markdown in a similar fashion to GitHub's parsing. | |
| class ExtensionSet { | |
| /// The [ExtensionSet.none] extension set renders Markdown similar to | |
| /// [Markdown.pl]. | |
| /// | |
| /// However, this set does not render _exactly_ the same as Markdown.pl; | |
| /// rather it is more-or-less the CommonMark standard of Markdown, without | |
| /// fenced code blocks, or inline HTML. | |
| /// | |
| /// [Markdown.pl]: http://daringfireball.net/projects/markdown/syntax | |
| static final ExtensionSet none = ExtensionSet(const [], const []); | |
| /// The [commonMark] extension set is close to compliance with [CommonMark]. | |
| /// | |
| /// [CommonMark]: http://commonmark.org/ | |
| static final ExtensionSet commonMark = ExtensionSet( | |
| List<BlockSyntax>.unmodifiable(<BlockSyntax>[ | |
| const FencedCodeBlockSyntax(), | |
| ]), | |
| List<InlineSyntax>.unmodifiable(<InlineSyntax>[InlineHtmlSyntax()]), | |
| ); | |
| /// The [gitHubWeb] extension set renders Markdown similarly to GitHub. | |
| /// | |
| /// This is different from the [gitHubFlavored] extension set in that GitHub | |
| /// actually renders HTML different from straight [GitHub flavored Markdown]. | |
| /// | |
| /// (The only difference currently is that [gitHubWeb] renders headers with | |
| /// linkable IDs.) | |
| /// | |
| /// [GitHub flavored Markdown]: https://github.github.com/gfm/ | |
| static final ExtensionSet gitHubWeb = ExtensionSet( | |
| List<BlockSyntax>.unmodifiable(<BlockSyntax>[ | |
| const FencedCodeBlockSyntax(), | |
| const HeaderWithIdSyntax(), | |
| const SetextHeaderWithIdSyntax(), | |
| const TableSyntax(), | |
| const UnorderedListWithCheckboxSyntax(), | |
| const OrderedListWithCheckboxSyntax(), | |
| const FootnoteDefSyntax(), | |
| const AlertBlockSyntax(), | |
| ]), | |
| List<InlineSyntax>.unmodifiable(<InlineSyntax>[ | |
| InlineHtmlSyntax(), | |
| StrikethroughSyntax(), | |
| EmojiSyntax(), | |
| ColorSwatchSyntax(), | |
| AutolinkExtensionSyntax(), | |
| ]), | |
| ); | |
| /// The [gitHubFlavored] extension set is close to compliance with the | |
| /// [GitHub flavored Markdown spec](https://github.github.com/gfm/). | |
| static final ExtensionSet gitHubFlavored = ExtensionSet( | |
| List<BlockSyntax>.unmodifiable(<BlockSyntax>[ | |
| const FencedCodeBlockSyntax(), | |
| const TableSyntax(), | |
| // Must precede the list syntaxes below: a lone `-` (or `=`) line | |
| // continuing a paragraph is a setext heading underline, not an empty | |
| // list item. See https://github.com/dart-lang/tools/issues/2108. | |
| const SetextHeaderSyntax(), | |
| const UnorderedListWithCheckboxSyntax(), | |
| const OrderedListWithCheckboxSyntax(), | |
| const FootnoteDefSyntax(), | |
| ]), | |
| List<InlineSyntax>.unmodifiable(<InlineSyntax>[ | |
| InlineHtmlSyntax(), | |
| StrikethroughSyntax(), | |
| AutolinkExtensionSyntax(), | |
| ]), | |
| ); | |
| final List<BlockSyntax> blockSyntaxes; | |
| final List<InlineSyntax> inlineSyntaxes; | |
| ExtensionSet(this.blockSyntaxes, this.inlineSyntaxes); | |
| } |