| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Strip only the space character and not things like nbsp in tables. Fixes #635.
|
|
|
|
|
|
|
|
|
|
|
| |
We started with the numbers before HTML5 was a thing and we thought
there might be an XHTML2. Today, we know that all we have are HTML style
tags and XHTML style tags. Nothing else really matters in the real
world.
Note that if '(x)html1' '(x)html4' or '(x)html5' are passed in, the
number is stripped/ignored. Users shouldn't need to change their code
for this.
|
|
|
|
| |
Add new InlineProcessor class that handles inline processing much better and allows for more flexibility. This adds new InlineProcessors that no longer utilize unnecessary pretext and posttext captures. New class can accept the buffer that is being worked on and manually process the text without regex and return new replacement bounds. This helps us to handle links in a better way and handle nested brackets and logic that is too much for regular expression. The refactor also allows image links to have links/paths with spaces like links. Ref #551, #613, #590, #161.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Deprecated naming support is removed:
* Removed special treatment for modules in `markdown.extensions`
* Removed support for `mdx_` prefixes.
Support for Entry Point names added:
Support for "short names" are now implemented with entry points.
Therefore all the users who call extension names as `toc` will not
get errors as the builtin extensions all have entry points defined
which match the old "short names" for modules in
`markdown.extensions`. The benefit is that any extension can offer
the same support without requiring the user to manually copy a file
to that location on the file system (way to many extension authors
have included such instructions in their installation documentation).
The one odd thing about this is that we have been issuing a
DeprecationWarning for short names and now they are fully supported
again. But I think it's the right thing to do.
Support for using dot notation is not removed. After all, it was never
deprecated. And we shouldn't "force" entry points. There are plenty of
reasons why users may not want that and not all of them can be
resolved by using class instances instead.
All of the following ways to load an extension are valid:
# Class instance
from markdown.extensions.toc import TocExtension
markdown.markdown(src, extensions=[TocExtension()]
# Entry point name
markdown.markdown(src, extensions=['toc'])
# Dot notation with class
markdown.markdown(src, extensions=['markdown.extensions.toc:TocExtension'])
# Dot notation without class
markdown.markdown(src, extensions=['markdown.extensions.toc'])
|
|
|
|
| |
Use the TOC extension instead.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All file-based tests are now defined as unittest test cases via a
metaclass which walks a directory and builds a unittest for each pair
of test files.
To run the tests just run `python -m unittest discover tests`. Or use
tox as the tox config has been updated to run the new tests and all nose
specific code has been removed.
The test generator tools have been removed as well. If any changes or
additions need to be made to tests, they should be implemented using
the new framework rather than with the file-based tests. Eventually,
only the PHP and pl tests should remain as file-based tests.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As a part of the Markdown lib, test tools can be used by third party
extensions. Also keeps test dir clean as it only contains actual tests.
More work in this vein to come as the need for Nose is removed.
Tests are defined as Unittests rather than in text files allowing
features to be more easily broken into units and run individually.
Based completely on standard lib unittest with no external dependencies.
Use `python -m unittest tests.test_syntax` to run.
Pulled some tests from https://github.com/karlcow/markdown-testsuite.
Many more test units to pull from that source. As we encounter the need
to edit an existing textfile-based test, or add a new test, a new test
should be created with this framework and the old test should be
deleted. Also need to delete existing testfile-based tests which are
covered in the new tests included here.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Preserve the line which a reference was on to prevent raw HTML indexing issue. Fixes #584.
Prevent raw HTML parsing issue in abbr and footnotes
Peserve abbreviation line when stripping and preserve a line for each footnote block. Footnotes should also accumulate the extraneous padding.
Test extra lines at the end of references
Strip the gathered extraneous whitespace
When processing footnotes, we don't actually care to process the extra whitespace at the end of a footnote, but we want it to calculate lines to preserve.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes #601. Merged in 6f87b32 from the md3 branch and did a lot of cleanup.
Changes include:
* Removed old docs build tool, templates, etc.
* Added MkDocs config file, etc.
* filename.txt => filename.md
* pythonhost.org/Markdown => Python-Markdown.github.io
* Markdown lint and other cleanup.
* Automate pages deployment in makefile with `mkdocs gh-deploy`
Assumes a git remote is set up named "pages". Do
git remote add pages https://github.com/Python-Markdown/Python-Markdown.github.io.git
... before running `make deploy` the first time.
|
|
|
|
|
| |
Ancestry exclusion for inline patterns.
Adds the ability for an inline pattern to define a list of ancestor tag names that should be avoided. If a pattern would create a descendant of one of the listed tag names, the pattern will not match. Fixes #596.
|
| |
|
|
|
|
|
|
|
| |
Also consume to the end of the first line of any admonition. Everything after
the title is discarded. However, the only thing that will match should be
whitespace so it should be a non-issue.
Fixes #550.
|
|
|
|
|
|
| |
Single column tables are valid tables, so add back in the accidentally
removed functionality of allowing single column tables, but with one
exception -- table bodies should not render empty (an empty
`<tbody>` is invalid HTML. Fixes #539.
|
|
|
|
|
|
|
| |
If both open and close was not found in first block, additional blocks
were evaluated without context of previous blocks. The algorithm needs
to evaluate a buffer with the left bracket present. So feed in all
items and get the right bracket, then adjust the data_index to be
relative to the last block. Fixes #452.
|
|
|
|
|
|
|
| |
Fixes #412 and #493. First we parse footnote content as
its own document avoid quirks with using li as a parent. Second, we
surround placeholders with STX and ETX to prevent them from interfering
with inline parsing; this is also consistent with how placeholders are
used everywhere else in Python Markdown.
|
|
|
|
|
|
| |
Track when we find duplicate footnote references and create unique ids
for them. Then add an additional tree-processor after inline to go
back and update the footnotes with additional back references that link
to the duplicate footnote references. Fixes #468.
|
|
|
|
|
|
|
| |
HRProcessor tried to access a member variable after recursively calling
itself. In certain situations HRProcessor will try to access its
member variable containing its match, but it will not be the same match
that call in the stack expected. This is easily fixed by storing the
match locally *before* doing any recursive work.
|
|
|
|
|
| |
This aims to escape code in a more expected fashion. This handles
when backticks are escaped and when the escapes before backticks are
escaped.
|
|
|
|
|
|
|
| |
Tables now handle escaped pipes when testing, in table borders, and in
the inline content. To achieve properly, a bug had to be fixed related
to appending escaped chars to the Markdown class. Now appended chars
only appear in the current instance. Lastly the first backtick in a
table can be escaped rounding out the last corner case.
|
|
|
|
| |
At some point the logic of counting backticks and determining if they are odd or even was used to parse a row's text into cells. Unfortunately this approach broke expected code parsing logic in a table. We essentially traded one bug for another. This fixes table backtick handling and restores sane backtick logic while preserving existing fixes. (issue #449)
|
| |
|
|
|
|
| |
Related to #498.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Fix table alignment when seperator contains spaces
eg. seperator like "------ | :----- | :----: | -----: | ------"
* Update tests for table
* Delete the newline at the end of tables.html
|
| |
| |
| |
| |
| | |
Don’t allow spaces in image links. This was also causing an issue
where any text following a space was treated as a title. Ref #484.
|
| | |
|
|/
|
|
|
|
| |
This will probably not result in the output intending by the author, but
the syntax would be incorrect so the author needs to edit the document
anyway. We just need to ensure the parser does not crash here. Fixes #498.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
New versions of Pygments insert <span></span> blocks in the beginning
of the generated output sometimes [1], so we need to remove those blocks
before doing the actual checking.
[1]: https://bitbucket.org/birkenfeld/pygments-main/commits/164574c13533
|
|
|
|
|
|
|
| |
Now it should no longer print internal errors instead of intended ones
on Python 3.
Thanks to Maurice van der Pot for finding this fix.
|
| |
|
|
|
|
|
| |
The failure printed when self.assertTrue was used with str.startswith
did not show the string that was being searched.
|
|
|
|
|
|
| |
Added pygments to test-requirements and updated codehiliting tests to
only test partial output as output differs depending on Pygments version.
Fixes #453
|
| |
|
|
|
|
|
|
| |
Drppoed the non-greedy quantifier from the end of the inlinePatterns as it
served no useful purpose and was actually (in very rare edge cases) causing
newlines to be dropped. FIxes #439. Thanks to @munificent for the report.
|
| |
|
|
|
|
|
|
|
|
|
| |
This should fix the remaining corner cases that can cause infinite
loops. Previous iterations did not account for scenarios where the
“end” index was less than the “start” index. If the “end” index is
ever less than or equal to the “start” index, the “end” will be
adjusted to to be “start” + 1 allow the full range to be extracted and
replaced.
|
| |
|
| |
|
| |
|