Releases: Python-Markdown/markdown
Release 3.7
Changed
Refactor abbr
Extension
A new AbbrTreeprocessor
has been introduced, which replaces the now deprecated
AbbrInlineProcessor
. Abbreviation processing now happens after Attribute Lists,
avoiding a conflict between the two extensions (#1460).
The AbbrPreprocessor
class has been renamed to AbbrBlockprocessor
, which
better reflects what it is. AbbrPreprocessor
has been deprecated.
A call to Markdown.reset()
now clears all previously defined abbreviations.
Abbreviations are now sorted by length before executing AbbrTreeprocessor
to ensure that multi-word abbreviations are implemented even if an abbreviation
exists for one of those component words. (#1465)
Abbreviations without a definition are now ignored. This avoids applying
abbr tags to text without a title value.
Added an optional glossary
configuration option to the abbreviations extension.
This provides a simple and efficient way to apply a dictionary of abbreviations
to every page.
Abbreviations can now be disabled by setting their definition to ""
or ''
.
This can be useful when using the glossary
option.
Fixed
- Fixed links to source code on GitHub from the documentation (#1453).
Release 3.6
Changed
Refactor TOC Sanitation
- All postprocessors are now run on heading content.
- Footnote references are now stripped from heading content. Fixes #660.
- A more robust
striptags
is provided to convert headings to plain text.
Unlike, themarkupsafe
implementation, HTML entities are not unescaped. - The plain text
name
, richhtml
, and unescaped rawdata-toc-label
are
saved totoc_tokens
, allowing users to access the full rich text content of
the headings directly fromtoc_tokens
. - The value of
data-toc-label
is sanitized separate from heading content
before being written toname
. This fixes a bug which allowed markup through
in certain circumstances. To access the raw unsanitized data, retrieve the
value fromtoken['data-toc-label']
directly. - An
html.unescape
call is made just prior to callingslugify
so that
slugify
only operates on Unicode characters. Note thathtml.unescape
is
not run onname
,html
, ordata-toc-label
. - The functions
get_name
andstashedHTML2text
defined in thetoc
extension
are both deprecated. Instead, third party extensions should use some
combination of the new functionsrun_postprocessors
,render_inner_html
and
striptags
.
Fixed
- Include
scripts/*.py
in the generated source tarballs (#1430). - Ensure lines after heading in loose list are properly detabbed (#1443).
- Give smarty tree processor higher priority than toc (#1440).
- Permit carets (
^
) and square brackets (]
) but explicitly exclude
backslashes (\
) from abbreviations (#1444). - In attribute lists (
attr_list
,fenced_code
), quoted attribute values are
now allowed to contain curly braces (}
) (#1414).
Release 3.5.2
Fixed
- Fix type annotations for
convertFile
- it accepts only bytes-based buffers.
Also remove legacy checks from Python 2 (#1400) - Remove legacy import needed only in Python 2 (#1403)
- Fix typo that left the attribute
AdmonitionProcessor.content_indent
unset
(#1404) - Fix edge-case crash in
InlineProcessor
withAtomicString
(#1406). - Fix edge-case crash in
codehilite
with an emptycode
tag (#1405). - Improve and expand type annotations in the code base (#1401).
- Fix handling of bogus comments (#1425).