mistletoe v0.7 Release Notes
Release Date: 2018-06-11 // almost 5 years ago-
Warning : this is a release that breaks backwards compatibility in non-trivial ways (hopefully for the last time!) Read the full release notes if you are updating from a previous version.
🔋 Features :
- 🍱 all tests passing in CommonMark test suite (finally! 🎉)
- 👍 allow specifying span token precedence levels;
- 🆕 new and shiny
span_tokenizer.tokenize
.
🛠 Fixed :
- ✅ well, all the CommonMark test cases..
ASTRenderer
crashes on tables with headers (#48, thanks @timfox456!)
Where I break backwards compatibility :
📜 Previously span-level tokens need to have their
children
attribute manually specified. This is no longer the case, as thechildren
attribute will automatically be set based on the class variableparse_group
, which correspond to the regex match group in which child tokens might occur.As an example, previously
GithubWiki
is implemented as this:from mistletoe.span\_token import SpanToken, tokenize\_innerimport reclass GithubWiki(SpanToken): pattern = re.compile(r'...') def \_\_init\_\_(self, match\_obj): super().\_\_init\_\_(match\_obj) # alternatively, self.children = tokenize\_inner(match\_obj.group(1))self.target = match\_obj.group(2)
Now we can write:
from mistletoe.span\_token import SpanTokenimport reclass GithubWiki(SpanToken): pattern = re.compile(r'...') parse\_inner = True# default value, can be omitted parse\_group = 1# default value, can be omitted precedence = 5# default value, can be omitteddef \_\_init\_\_(self, match\_obj): self.target = match\_obj.group(2)
📜 If we have a span token that does not need further parsing, we can write:
class Foo(SpanToken): pattern = re.compile(r'(foo)') parse\_inner = Falsedef \_\_init\_\_(self, match\_obj): self.content = match\_obj.group(1)
👀 See the readme for more details.