Skip to content

Commit 8b8b659

Browse files
authored
Merge pull request #8955 from dhalbert/convert-release-notes-mistune-3
Update tools/convert_release_notes.py to use mistune v3
2 parents cbdaaea + 8e4296a commit 8b8b659

File tree

1 file changed

+41
-17
lines changed

1 file changed

+41
-17
lines changed

tools/convert_release_notes.py

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44

55
import sys
66
import mistune
7-
import mistune.renderers
7+
from mistune import BlockState
8+
9+
from typing import Dict, Any
810

911
print(sys.argv[1])
1012

@@ -20,48 +22,70 @@
2022
print(html(source))
2123

2224

23-
class AdafruitBBCodeRenderer(mistune.renderers.BaseRenderer):
24-
def placeholder(self):
25+
class AdafruitBBCodeRenderer(mistune.BaseRenderer):
26+
def render_token(self, token: Dict[str, Any], state: BlockState) -> str:
27+
# backward compatible with v2
28+
func = self._get_method(token["type"])
29+
attrs = token.get("attrs")
30+
31+
if "raw" in token:
32+
text = token["raw"]
33+
elif "children" in token:
34+
text = self.render_tokens(token["children"], state)
35+
else:
36+
if attrs:
37+
return func(**attrs)
38+
else:
39+
return func()
40+
if attrs:
41+
return func(text, **attrs)
42+
else:
43+
return func(text)
44+
45+
def blank_line(self):
2546
return ""
2647

2748
def paragraph(self, text):
28-
return text + "\n\n"
49+
return f"{text}\n\n"
2950

3051
def block_text(self, text):
3152
return text
3253

3354
def text(self, text):
3455
return text
3556

36-
def link(self, link, title, text):
37-
return "[url={}]{}[/url]".format(link, title)
57+
def block_code(self, text):
58+
return f"[code]{text}[/code]"
59+
60+
def link(self, text, url):
61+
return f"[url={url}]{text}[/url]"
3862

3963
def autolink(self, link, is_email):
4064
if not is_email:
41-
return "[url={}]{}[/url]".format(link, link)
65+
return f"[url={link}]{link}[/url]"
4266
return link
4367

4468
def heading(self, text, level):
45-
return "[b][size=150]{}[/size][/b]\n".format(text)
69+
return f"[b][size={200 - level * 20}]{text}[/size][/b]\n"
4670

4771
def codespan(self, text):
48-
return "[color=#E74C3C][size=95]{}[/size][/color]".format(text)
72+
return f"[color=#E74C3C][size=95]{text}[/size][/color]"
4973

50-
def list_item(self, text, level):
51-
return "[*]{}[/*]\n".format(text.strip())
52-
53-
def list(self, text, ordered, level, start=None):
74+
def list(self, text, ordered: bool, start=None, depth=None):
5475
ordered_indicator = "=" if ordered else ""
55-
return "[list{}]\n{}[/list]".format(ordered_indicator, text)
76+
return f"[list{ordered_indicator}]\n{text}[/list]"
77+
78+
def list_item(self, text):
79+
return f"[*]{text.strip()}[/*]\n"
5680

5781
def double_emphasis(self, text):
58-
return "[b]{}[/b]".format(text)
82+
return f"[b]{text}[/b]"
5983

6084
def emphasis(self, text):
61-
return "[i]{}[/i]".format(text)
85+
return f"[i]{text}[/i]"
6286

6387
def strong(self, text):
64-
return "[b]{}[/b]".format(text)
88+
return f"[b]{text}[/b]"
6589

6690
def finalize(self, data):
6791
return "".join(data)

0 commit comments

Comments
 (0)