Markdown parser, done right. 100% CommonMark support, extensions, syntax plugins & high speed. Now in Python!
MIT License
⚠️ This release contains some minor breaking changes in the internal API and improvements to the parsing strictness.
Full Changelog: https://github.com/executablebooks/markdown-it-py/compare/v2.2.0...v3.0.0
Also add testing for Python 3.11
12.2.0
to 13.0.0
A key change is the addition of a new Token
type, text_special
, which is used to represent HTML entities and backslash escaped characters.
This ensures that (core) typographic transformation rules are not incorrectly applied to these texts.
The final core rule is now the new text_join
rule, which joins adjacent text
/text_special
tokens,
and so no text_special
tokens should be present in the final token stream.
Any custom typographic rules should be inserted before text_join
.
A new linkify
rule has also been added to the inline chain, which will linkify full URLs (e.g. https://example.com
),
and fixes collision of emphasis and linkifier (so http://example.org/foo._bar_-_baz
is now a single link, not emphasized).
Emails and fuzzy links are not affected by this.
text_special
#276
text_special
token #280
(p)
=> §
replacement in typographer #281
silent
arg in ParserBlock.tokenize
#284
skipSpaces
/skipChars
#271
text_special
in tree.pretty
#282
The use of StateBase.srcCharCode
is deprecated (with backward-compatibility), and all core uses are replaced by StateBase.src
.
Conversion of source string characters to an integer representing the Unicode character is prevalent in the upstream JavaScript implementation, to improve performance.
However, it is unnecessary in Python and leads to harder to read code and performance deprecations (during the conversion in the StateBase
initialisation).
See #270, thanks to @hukkinj1.
For CommonMark, the presence of indented code blocks prevent any other block element from having an indent of greater than 4 spaces.
Certain Markdown flavors and derivatives, such as mdx and djot, disable these code blocks though, since it is more common to use code fences and/or arbitrary indenting is desirable.
Previously, disabling code blocks did not remove the indent limitation, since most block elements had the 3 space limitation hard-coded.
This change centralised the logic of applying this limitation (in StateBlock.is_code_block
), and only applies it when indented code blocks are enabled.
This allows for e.g.
<div>
<div>
I can indent as much as I want here.
<div>
<div>
See #260
Strict type annotation checking has been applied to the whole code base,
ruff is now used for linting,
and fuzzing tests have been added to the CI, to integrate with Google OSS-Fuzz testing, thanks to @DavidKorczynski.
Published by chrisjsewell over 1 year ago
Thanks to 🎉
Full Changelog: https://github.com/executablebooks/markdown-it-py/compare/v2.1.0...v2.2.0
Published by chrisjsewell over 2 years ago
IndexError
by @mib112 in https://github.com/executablebooks/markdown-it-py/pull/206
Rule
/Delimiter
to dataclass by @chrisjsewell in https://github.com/executablebooks/markdown-it-py/pull/211
Token
to dataclass
by @chrisjsewell in https://github.com/executablebooks/markdown-it-py/pull/212
Full Changelog: https://github.com/executablebooks/markdown-it-py/compare/v2.0.1...v2.1.0
Published by chrisjsewell over 2 years ago
inline_definitions
option by @chrisjsewell in https://github.com/executablebooks/markdown-it-py/pull/187
Full Changelog: https://github.com/executablebooks/markdown-it-py/compare/v2.0.0...v2.0.1
Published by chrisjsewell almost 3 years ago
mdurl
and punycode
for URL normalisation by @hukkin in https://github.com/executablebooks/markdown-it-py/pull/171
pyproject-build
for package deployment by @hukkin in https://github.com/executablebooks/markdown-it-py/pull/177
punycode
and mdurl
are now used by @hukkin in https://github.com/executablebooks/markdown-it-py/pull/179
AttrDict
by @chrisjsewell in https://github.com/executablebooks/markdown-it-py/pull/181
Full Changelog: https://github.com/executablebooks/markdown-it-py/compare/v1.1.0...v2.0.0
Published by chrisjsewell over 3 years ago
See CHANGELOG.md
Published by chrisjsewell over 3 years ago
The first stable release of markdown-it-py 🎉
See CHANGELOG.md
Published by chrisjsewell over 3 years ago
See CHANGELOG.md
Published by chrisjsewell over 3 years ago
See CHANGELOG.md
Published by chrisjsewell over 3 years ago
See CHANGELOG.md
Published by chrisjsewell over 3 years ago
See CHANGELOG.md
Published by chrisjsewell almost 4 years ago
See CHANGELOG.md
Published by chrisjsewell almost 4 years ago
See CHANGELOG.md
Published by chrisjsewell almost 4 years ago
The CHANGELOG.md
Published by chrisjsewell almost 4 years ago
See CHANGELOG.md
Published by chrisjsewell about 4 years ago
See CHANGELOG.md
Published by chrisjsewell about 4 years ago
See CHANGELOG.md
Published by chrisjsewell about 4 years ago
✨ NEW: Add anchors_plugin for headers (#46)
Published by chrisjsewell about 4 years ago
See CHANGELOG.md
Published by chrisjsewell about 4 years ago
See CHANGELOG.md