Skip to content

Commit 3d758e4

Browse files
committed
refactoring
1 parent da96e15 commit 3d758e4

File tree

1 file changed

+22
-24
lines changed

1 file changed

+22
-24
lines changed

sphinx_proof/nodes.py

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
from sphinx.writers.latex import LaTeXTranslator
1414

1515
CR = '\n'
16+
latex_admonition_start = CR + '\\begin{sphinxadmonition}{note}'
17+
latex_admonition_end = '\\end{sphinxadmonition}' + CR
1618

1719
class proof_node(nodes.Admonition, nodes.Element):
1820
pass
@@ -28,7 +30,7 @@ class unenumerable_node(nodes.Admonition, nodes.Element):
2830

2931
def visit_enumerable_node(self, node: Node) -> None:
3032
if isinstance(self, LaTeXTranslator):
31-
self.body.append(CR + '\\begin{sphinxadmonition}{note}')
33+
self.body.append(latex_admonition)
3234
else:
3335
self.body.append(self.starttag(node, "div", CLASS="admonition"))
3436

@@ -37,10 +39,9 @@ def depart_enumerable_node(self, node: Node) -> None:
3739
typ = node.attributes.get("type", "")
3840
if isinstance(self, LaTeXTranslator):
3941
number = get_node_number_latex(self, node)
40-
text = node.children[0].astext()
41-
idx = list_rindex(self.body,CR + '\\begin{sphinxadmonition}{note}') + 2
42+
idx = list_rindex(self.body,latex_admonition) + 2
4243
self.body.insert(idx, f"{typ.title()} {number}")
43-
self.body.append('\\end{sphinxadmonition}' + CR)
44+
self.body.append(latex_admonition_end)
4445
else:
4546
# Find index in list of 'Proof #'
4647
number = get_node_number(self, node)
@@ -51,7 +52,7 @@ def depart_enumerable_node(self, node: Node) -> None:
5152

5253
def visit_unenumerable_node(self, node: Node) -> None:
5354
if isinstance(self, LaTeXTranslator):
54-
self.body.append(CR + '\\begin{sphinxadmonition}{note}')
55+
self.body.append(latex_admonition)
5556
else:
5657
self.body.append(self.starttag(node, "div", CLASS="admonition"))
5758

@@ -60,19 +61,14 @@ def depart_unenumerable_node(self, node: Node) -> None:
6061
typ = node.attributes.get("type", "")
6162
title = node.attributes.get("title", "")
6263
if isinstance(self, LaTeXTranslator):
63-
if title == "":
64-
idx = (len(self.body) - self.body[-1::-1].index(CR + '\\begin{sphinxadmonition}{note}')) + 1
65-
else:
66-
text = node.children[0].astext()
67-
idx = list_rindex(self.body,CR + '\\begin{sphinxadmonition}{note}') + 2
64+
idx = list_rindex(self.body,latex_admonition) + 2
6865
self.body.insert(idx, f"{typ.title()}")
69-
self.body.append('\\end{sphinxadmonition}' + CR)
66+
self.body.append(latex_admonition_end)
7067
else:
7168
if title == "":
72-
idx = len(self.body) - self.body[-1::-1].index('<p class="admonition-title">')
69+
idx = list_rindex(self.body,'<p class="admonition-title">') + 1
7370
else:
7471
idx = list_rindex(self.body,title)
75-
7672
element = f"<span>{typ.title()} </span>"
7773
self.body.insert(idx, element)
7874
self.body.append("</div>")
@@ -85,15 +81,8 @@ def visit_proof_node(self, node: Node) -> None:
8581
def depart_proof_node(self, node: Node) -> None:
8682
pass
8783

88-
89-
def get_node_number(self: HTMLTranslator, node: Node) -> str:
90-
key = "proof"
91-
ids = node.attributes.get("ids", [])[0]
92-
number = self.builder.fignumbers.get(key, {}).get(ids, ())
93-
return ".".join(map(str, number))
94-
9584
def find_parent(env, node , parent_tag):
96-
"""Find the parent node."""
85+
"""Find the nearest parent node with the given tagname."""
9786
while True:
9887
node = node.parent
9988
if node is None:
@@ -111,15 +100,24 @@ def find_parent(env, node , parent_tag):
111100

112101
return None
113102

114-
def get_node_number_latex(self, node: Node) -> str:
103+
def get_node_number(self: HTMLTranslator, node: Node) -> str:
104+
"""Get the number for the directive node for HTML."""
105+
key = "proof"
106+
ids = node.attributes.get("ids", [])[0]
107+
number = self.builder.fignumbers.get(key, {}).get(ids, ())
108+
return ".".join(map(str, number))
109+
110+
def get_node_number_latex(self: LaTeXTranslator, node: Node) -> str:
111+
"""Get the number for the directive node for LaTeX."""
115112
key = "proof"
116113
docname = find_parent(self.builder.env, node, "section")
117114
ids = node.attributes.get("ids", [])[0]
118-
fignumbers = self.builder.env.toc_fignumbers.get(docname, {})
115+
fignumbers = self.builder.env.toc_fignumbers.get(docname, {}) # Latex does not have builder.fignumbers
119116
number = fignumbers.get(key, {}).get(ids, ())
120117
return ".".join(map(str, number))
121118

122-
def list_rindex(li, x):
119+
def list_rindex(li, x) -> int:
120+
"""Getting the last occurence of an item in a list."""
123121
for i in reversed(range(len(li))):
124122
if li[i] == x:
125123
return i

0 commit comments

Comments
 (0)