- Fix a crash parsing alert block syntax (#584).
- Have alert block syntax support multiple paragraphs (#577).
- Require Dart
^3.2.0
.
- Address a termination issue with GitHub alert syntax parsing.
- Require Dart
^3.1.0
. - Update all CommonMark specification links to 0.30.
- Fix beginning of line detection in
AutolinkExtensionSyntax
. - Add a new syntax
AlertBlockSyntax
to parse GitHub Alerts.
- Fix delimiter row matching pattern for tables.
- Tables are now able to interrupt other blocks.
- Fix an obscure issue with HtmlBlockSyntax.
- Support for footnotes.
- Fixed bug causing infinite loop for links inside tables.
- Require Dart 2.19
- Fix an issue in
HeaderWithIdSyntax
, do not generate heading IDs for headings with no content.
- Remove RegExp lookarounds from autolink extension patterns. (Fixes issues when running on Safari.)
- Breaking change:
close()
ofDelimiterSyntax
andLinkSyntax
returns multiple nodes instead of single one. - Breaking change: Remove deprecated APIs, including
TagSyntax
,indicatorForCheckedCheckBox
, andindicatorForUncheckedCheckBox
. - Breaking change: Removed
BlockHtmlSyntax
,BlockTagBlockHtmlSyntax
,LongBlockHtmlSyntax
, andOtherTagBlockHtmlSyntax
. - Breaking change: Change the
line
properties of typeString
toLine
. - Breaking change: Change the
lines
properties of typeList<String>
toList<Line>
. - Add a new syntax
HtmlBlockSyntax
to parse HTML blocks. - Add an
enableTagfilter
option toHtmlRenderer
to eanble GFMtagfilter
extension. - Add a new syntax
DecodeHtmlSyntax
to decode HTML entity and numeric character references. - Add a new syntax
SoftLineBreakSyntax
to remove the single space before the line ending. - Add a new syntax
EscapeHtmlSyntax
to encode ("
), (<
), (>
) and (&
). - Add an option
caseSensitive
toTextSyntax
. - Add a new public method
parse(String text)
forDocument
. - Add a new public method
parseLineList(List<Line> text)
forDocument
. - Add a new type:
Line
. - Add a new optional parameter
parentSyntax
forparseLines()
ofBlockParser
, which can be used when parsing nested blocks. - Add a new optional parameter
disabledSetextHeading
forparseLines()
ofBlockParser
, which is used to disable theSetextHeaderSyntax
. - Add a new public property
previousSyntax
forBlockParser
.
- Fix a crash in checkbox lists when mixing checkbox items with non-checkbox items.
- Require Dart 2.17
- Add support to GFM extension for GitHub task lists (aka checkboxes). These
are only active in the
gitHubFlavored
andgitHubWeb
extension sets. - Add support for
#ff0000
color swatches. - Change emoji list do be derived from the GitHub API. The only two emoji that
visually change are
:cricket:
and:beetle:
. There are alternate emoji:cricket_game:
and:lady_beetle:
which can be used to access the previous emoji.update_github_emoji.dart
now pulls all emoji info directly from GitHub API and as a result we have now support the entire GitHub emoji set (excluding the 19 custom GitHub specific emoji which have no Unicode support). - Breaking change: The
TagSyntax
is deprecated. - Add new syntax
DelimiterSyntax
. - Breaking change:
StrikethroughSyntax
now extendsDelimiterSyntax
instead ofTagSyntax
. - Breaking change:
LinkSyntax
now extendsDelimiterSyntax
instead ofTagSyntax
. - Add two new emphasis syntaxes
EmphasisSyntax.underscore
andEmphasisSyntax.asterisk
.
- Breaking change: Change the type of
parseInline
's parameter fromString?
toString
. - Fix table-rendering bug when table rows have trailing whitespace. #368.
- Do not allow reference link labels to contain left brackets. Thanks @chenzhiguang. #335.
- Treat lines matching a code block syntax as continuations of paragraphs, inside blockquotes. Thanks @chenzhiguang. #358.
- Add a syntax for GitLab-flavored fenced blockquotes. GitLab-flavored Markdown will be evaluated into an ExtensionSet, in a future release. Thanks @chenzhiguang. #359.
- Add
bool withDefaultInlineSyntaxes
andbool withDefaultBlockSyntaxes
parameters tomarkdownToHtml
andDocument
to support the case of specifying exactly the list of desired syntaxes. Thanks @chenzhiguang. #393.
- Export
src/emojis.dart
in public API. - Update version of example page.
- Internal: enforce lint rules found in the lints package.
- Bump io dependency to
^1.0.0
.
- Stable null safety release.
- Require the latest
args
, update the markdown executable to be opted in.
- Migrate package to Dart's null safety language feature, requiring Dart 2.12 or higher.
- Breaking change: The TagSyntax constructor no longer takes an
end
parameter. TagSyntax no longer implementsonMatchEnd
. Instead, TagSyntax implements a method calledclose
which creates and returns a Node, if a Node can be created and closed at the current position. If the TagSyntax instance cannot create a Node at the current position, the method should returnnull
. Some TagSyntax subclasses will unconditionally create a tag inclose
, while others may be unable to, such as LinkSyntax, if an inline or reference link could not be resolved. - Improved parsing of nested links, images, and emphasis. CommonMark compliance of emphasis-parsing improves to 99%, and link-parsing compliance rises to 93%. Overall compliance improves to 94% and overall GitHub-flavored Markdown improves to 93%.
- Breaking change: Remove
ListSyntax.removeLeadingEmptyLine
,ListSyntax.removeTrailingEmptyLines
,TableSyntax.parseAlignments
,TableSyntax.parseRow
. - Allow intra-word strikethrough in GFM (#300).
- Breaking change: Change
BlockSyntax.canEndBlock
from a getter to a method accepting a BlockParser.
- Deprecate the public methods
ListSyntax.removeLeadingEmptyLine
,ListSyntax.removeTrailingEmptyLines
,TableSyntax.parseAlignments
,TableSyntax.parseRow
. These will be made private in a major version bump as early as 3.0.0.
- Add dependency on the meta package
- Overhaul table row parsing. This does not have many consequences, except that whitespace around escaped pipes is handled better. (#287).
- Correctly parse a reference link with a newline in the link reference part (#281).
- Do not encode HTML in link URLs. Also do not encode HTML in link text when
encodeHtml
is false (e.g. when used in Flutter).
- Drop support for Dart 2.0.0 through 2.1.0.
- Recognize Unicode ellipsis (…) and other Unicode punctuation as punctuation when parsing potential emphasis.
- Reduce time to parse a large HTML-block-free Markdown document (such as that in #271) by more than half.
- Add a new optional parameter for InlineSyntax(),
startCharacter
, where a subclass can specify a single character to try to match, before matching with more expensive regular expressions.
- Fix for encoding HTML for text string that contains
<pre>
(#263).
- Improve strict spec compliance of
>
handling by always encoding as>
– unless preceded by/
. - Improve strict spec compliance for
blockquote
by always putting the closing tag on a new line. - Improve strict spec compliance for
code
elements defined with "`". - Properly encode
<
,>
, and"
as their respective HTML entities when interpreted as text. - Improve inline code parsing when using multiple backticks.
- Do not encode HTML in indented code blocks when
encodeHtml
is false (e.g. when used in Flutter).
- Render element attributes in the order they were defined. Aligns more closely with the strict spec definition.
- Correctly render
&
within inline image titles. - Add 68 new GitHub emoji.
- Escape HTML attribute for fenced code blocks, in the info string.
- Set max SDK version to
<3.0.0
, and adjust other dependencies.
- Require Dart 2.0.0-dev.
-
Breaking change: The
Link
class has been renamedLinkReference
, and theDocument
field,refLinks
, has been renamedlinkReferences
. -
Breaking change: Remove the deprecated
ExtensionSet.gitHub
field. UseExtensionSet.gitHubFlavored
instead. -
Breaking change: Make all of the fields on
Document
read-only. -
Overhaul support for emphasis (
*foo*
and_foo_
) and strong emphasis (**foo**
and__foo__
), dramatically improving CommonMark compliance. -
Overhaul support for links and images, again dramatically improving CommonMark compliance.
-
Improve support for tab characters, and horizontal rules.
-
Add support for GitHub Flavored Markdown's Strikethrough extension. See the GFM spec.
-
The above fixes raise compliance with the CommonMark specs to 93%, and compliance with the GFM specs to 92%.
-
Add an
encodeHtml
parameter toDocument
, which defaults to true. When false, HTML entities (such as©
and the<
character) will not be escaped, useful when rendering Markdown in some output format other than HTML. -
Allow the binary script to take a
--extension-set
option.A reminder: You can run
bin/markdown.dart
from anywhere via:$ pub global activate markdown $ markdown
- Add support for GitHub's colon-based Emoji syntax. 🎉! This is available
in the
gitHubWeb
extension set.
- Make the constructor for ExtensionSet public, for tools like dartdoc.
- Split the
gitHub
ExtensionSet into two sets:gitHubFlavored
, which represents the GitHub Flavored Markdown spec, andgitHubWeb
, which represents what GitHub actually renders Markdown.
- Fix issue where
accept
could cause an exception. - Remove deprecated
escapeHtml
function. - Fix compliance with auto-links, including support for email addresses.
- Updated
ExtensionSet.gitHub
to more closely align with GitHub markdown.
- Fix bug with lazy blockquote continuations (#162)
- Fix bug with list item continuations (#156)
- Deprecate
escapeHtml
. This code exists indart:convert
.
- Fix reference code links inside blockquotes.
- Add src/util.dart to exports.
- Add version information:
dart bin/markdown.dart --version
now shows the package version number.- The playground app now shows the version number.
- Improve autolink parsing.
- Add new table syntax:
TableSyntax
. - Add new ExtensionSet that includes the table syntax:
ExtensionSet.gitHub
. - For development: added
tool/travis.sh
. - Support multiline Setext headers.
- Handle loose-vs-strict list items better.
- Support ordered lists that start with a number other than 1.
- Add playground app at https://dart-lang.github.io/markdown.
- Parse HTML blocks more accurately, according to CommonMark.
- Support shortcut reference links.
- Don't allow an indented code block to interrupt a paragraph.
- Change definition of "loose" and "strict" lists (items wrapped in paragraph tags vs not) to CommonMark's. The primary difference is that any single list item can trigger the entire list to be marked as "loose", rather than defining "looseness" on each specific item.
- Fix paragraph continuations in blockquotes and list items.
- Fix silly typing bug with
tool/common_mark_stats.dart
, which resulted in a dramatic overestimate of our CommonMark compliance. - There are now 427/613 (69%) passing CommonMark v0.25 specs.
- Parse hard line breaks properly (#86). Thanks @mehaase!
- Fix processing of
[ ... ]
syntax when no resolver is specified (#92). - There are now 401/613 (65%) passing CommonMark v0.24 specs. (Actually: after 0f64c8f the actual number of passing tests was 352/613 (57%).)
- BREAKING: Now following the CommonMark spec for fenced code blocks.
If a language (info string) is provided, it is added as a class to the
code
element with alanguage-
prefix. - BREAKING: Now following the CommonMark spec for images. Previously,
![text](img.png)
would compile too<a href="img.prg"><img src="img.prg" alt="text"></img></a>
. That same code will now compile to<img src="img.png" alt="text" />
. - Fix all strong mode errors.
- BREAKING: The text
[foo] (bar)
no longer renders as an inline link (#53). - BREAKING: Change list parsing to allow lists to begin immediately after a preceding block element, without a blank line in between.
- Formalize an API for Markdown extensions (#43).
- Introduce ExtensionSets. FencedCodeBlock is considered an extension, but
existing usage of
markdownToHtml()
andnew Document()
will use the default extension set, which isExtensionSet.commonMark
, which includes FencedCodeBlock. - Inline HTML syntax support; This is also considered an extension (#18).
- The text
[foo]()
now renders as an inline link. - Whitespace now allowed between a link's destination and title (#65).
- Header identifier support in the HeaderWithIdSyntax and SetextHeaderWithIdSyntax extensions.
- Implement backslash-escaping so that Markdown syntax can be escaped, such as
[foo]\(bar) ==> <p>[foo](bar)</p>
. - Support for hard line breaks with either
\\\n
or\n
(#30, #60). - New public method for BlockParser:
peek(int linesAhead)
, meant for use in subclasses. - New public members for ListSyntax:
blocksInList
anddetermineBlockItems()
, meant for use in subclasses. - Improve public docs (better, and more of them).
- Breaking: Remove (probably unused) fields:
LinkSyntax.resolved
,InlineParser.currentSource
. - Switch tests to use test instead of unittest.
- Fix a few bugs in inline code syntax.
- Ignore underscores inside words (#41).
- Allow resolving links that contain inline syntax (#42).
- Updated homepage.
-
Formatted code.
-
Updated readme.