Skip to content

Commit f16c3a0

Browse files
authored
Fix nested parsing of tab labels (#102)
1 parent 0ce888a commit f16c3a0

File tree

3 files changed

+89
-25
lines changed

3 files changed

+89
-25
lines changed

sphinx_tabs/tabs.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,11 @@ def run(self):
146146
else:
147147
tab_id = self.tab_id
148148

149-
tab_name = SphinxTabsTab(text=self.content[0])
149+
tab_name = SphinxTabsTab()
150+
self.state.nested_parse(self.content[0:1], 0, tab_name)
151+
# Remove the paragraph node that is created by nested_parse
152+
tab_name.children[0].replace_self(tab_name.children[0].children)
153+
150154
tab_name["classes"].append("sphinx-tabs-tab")
151155
tab_name["classes"].extend(sorted(self.tab_classes))
152156

tests/test_build/test_nested_markup.html

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,16 @@ <h1>
1111
<div class="sphinx-tabs docutils container">
1212
<div aria-label="Tabbed content" role="tablist">
1313
<button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">
14-
**bold** tab
14+
<strong>
15+
bold
16+
</strong>
17+
tab
1518
</button>
1619
<button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
17-
*italic* tab
20+
<em>
21+
italic
22+
</em>
23+
tab
1824
</button>
1925
</div>
2026
<div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
@@ -37,10 +43,16 @@ <h1>
3743
<div class="sphinx-tabs docutils container">
3844
<div aria-label="Tabbed content" role="tablist">
3945
<button aria-controls="panel-1-Kipib2xkKiogZ3JvdXAgdGFi" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-1-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tab" tabindex="0">
40-
**bold** group tab
46+
<strong>
47+
bold
48+
</strong>
49+
group tab
4150
</button>
4251
<button aria-controls="panel-1-Kml0YWxpYyogZ3JvdXAgdGFi" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-1-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tab" tabindex="-1">
43-
*italic* group tab
52+
<em>
53+
italic
54+
</em>
55+
group tab
4456
</button>
4557
</div>
4658
<div aria-labelledby="tab-1-Kipib2xkKiogZ3JvdXAgdGFi" class="sphinx-tabs-panel group-tab" id="panel-1-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
@@ -63,10 +75,16 @@ <h1>
6375
<div class="sphinx-tabs docutils container">
6476
<div aria-label="Tabbed content" role="tablist">
6577
<button aria-controls="panel-2-Kipib2xkKiogZ3JvdXAgdGFi" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-2-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tab" tabindex="0">
66-
**bold** group tab
78+
<strong>
79+
bold
80+
</strong>
81+
group tab
6782
</button>
6883
<button aria-controls="panel-2-Kml0YWxpYyogZ3JvdXAgdGFi" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-2-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tab" tabindex="-1">
69-
*italic* group tab
84+
<em>
85+
italic
86+
</em>
87+
group tab
7088
</button>
7189
</div>
7290
<div aria-labelledby="tab-2-Kipib2xkKiogZ3JvdXAgdGFi" class="sphinx-tabs-panel group-tab" id="panel-2-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
@@ -89,10 +107,16 @@ <h1>
89107
<div class="sphinx-tabs docutils container">
90108
<div aria-label="Tabbed content" role="tablist">
91109
<button aria-controls="panel-3-3-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-3-3-0" name="3-0" role="tab" tabindex="0">
92-
:math:`x = y` tab
110+
<span class="math notranslate nohighlight">
111+
\(x = y\)
112+
</span>
113+
tab
93114
</button>
94115
<button aria-controls="panel-3-3-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-3-3-1" name="3-1" role="tab" tabindex="-1">
95-
:math:`x \neq y` tab
116+
<span class="math notranslate nohighlight">
117+
\(x \neq y\)
118+
</span>
119+
tab
96120
</button>
97121
</div>
98122
<div aria-labelledby="tab-3-3-0" class="sphinx-tabs-panel" id="panel-3-3-0" name="3-0" role="tabpanel" tabindex="0">
@@ -117,10 +141,16 @@ <h1>
117141
<div class="sphinx-tabs docutils container">
118142
<div aria-label="Tabbed content" role="tablist">
119143
<button aria-controls="panel-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tab" tabindex="0">
120-
:math:`x = y` group tab
144+
<span class="math notranslate nohighlight">
145+
\(x = y\)
146+
</span>
147+
group tab
121148
</button>
122149
<button aria-controls="panel-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tab" tabindex="-1">
123-
:math:`x \neq y` group tab
150+
<span class="math notranslate nohighlight">
151+
\(x \neq y\)
152+
</span>
153+
group tab
124154
</button>
125155
</div>
126156
<div aria-labelledby="tab-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" class="sphinx-tabs-panel group-tab" id="panel-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
@@ -145,10 +175,16 @@ <h1>
145175
<div class="sphinx-tabs docutils container">
146176
<div aria-label="Tabbed content" role="tablist">
147177
<button aria-controls="panel-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tab" tabindex="0">
148-
:math:`x = y` group tab
178+
<span class="math notranslate nohighlight">
179+
\(x = y\)
180+
</span>
181+
group tab
149182
</button>
150183
<button aria-controls="panel-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tab" tabindex="-1">
151-
:math:`x \neq y` group tab
184+
<span class="math notranslate nohighlight">
185+
\(x \neq y\)
186+
</span>
187+
group tab
152188
</button>
153189
</div>
154190
<div aria-labelledby="tab-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" class="sphinx-tabs-panel group-tab" id="panel-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">

tests/test_build/test_nested_markup.xml

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@
55
<container classes="sphinx-tabs" type="tab-element">
66
<div aria-label="Tabbed content" role="tablist">
77
<button aria-controls="panel-0-0-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-0-0-0" name="0-0" role="tab" tabindex="0">
8-
**bold** tab
8+
<strong>
9+
bold
10+
tab
911
<button aria-controls="panel-0-0-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
10-
*italic* tab
12+
<emphasis>
13+
italic
14+
tab
1115
<div aria-labelledby="tab-0-0-0" classes="sphinx-tabs-panel" ids="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
1216
<paragraph>
1317
<strong>
@@ -21,9 +25,13 @@
2125
<container classes="sphinx-tabs" type="tab-element">
2226
<div aria-label="Tabbed content" role="tablist">
2327
<button aria-controls="panel-1-Kipib2xkKiogZ3JvdXAgdGFi" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-1-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tab" tabindex="0">
24-
**bold** group tab
28+
<strong>
29+
bold
30+
group tab
2531
<button aria-controls="panel-1-Kml0YWxpYyogZ3JvdXAgdGFi" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-1-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tab" tabindex="-1">
26-
*italic* group tab
32+
<emphasis>
33+
italic
34+
group tab
2735
<div aria-labelledby="tab-1-Kipib2xkKiogZ3JvdXAgdGFi" classes="sphinx-tabs-panel group-tab" ids="panel-1-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
2836
<paragraph>
2937
<strong>
@@ -37,9 +45,13 @@
3745
<container classes="sphinx-tabs" type="tab-element">
3846
<div aria-label="Tabbed content" role="tablist">
3947
<button aria-controls="panel-2-Kipib2xkKiogZ3JvdXAgdGFi" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-2-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tab" tabindex="0">
40-
**bold** group tab
48+
<strong>
49+
bold
50+
group tab
4151
<button aria-controls="panel-2-Kml0YWxpYyogZ3JvdXAgdGFi" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-2-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tab" tabindex="-1">
42-
*italic* group tab
52+
<emphasis>
53+
italic
54+
group tab
4355
<div aria-labelledby="tab-2-Kipib2xkKiogZ3JvdXAgdGFi" classes="sphinx-tabs-panel group-tab" ids="panel-2-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
4456
<paragraph>
4557
<strong>
@@ -53,9 +65,13 @@
5365
<container classes="sphinx-tabs" type="tab-element">
5466
<div aria-label="Tabbed content" role="tablist">
5567
<button aria-controls="panel-3-3-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-3-3-0" name="3-0" role="tab" tabindex="0">
56-
:math:`x = y` tab
68+
<math>
69+
x = y
70+
tab
5771
<button aria-controls="panel-3-3-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-3-3-1" name="3-1" role="tab" tabindex="-1">
58-
:math:`x \neq y` tab
72+
<math>
73+
x \neq y
74+
tab
5975
<div aria-labelledby="tab-3-3-0" classes="sphinx-tabs-panel" ids="panel-3-3-0" name="3-0" role="tabpanel" tabindex="0">
6076
<paragraph>
6177
Variables are equal
@@ -71,9 +87,13 @@
7187
<container classes="sphinx-tabs" type="tab-element">
7288
<div aria-label="Tabbed content" role="tablist">
7389
<button aria-controls="panel-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tab" tabindex="0">
74-
:math:`x = y` group tab
90+
<math>
91+
x = y
92+
group tab
7593
<button aria-controls="panel-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tab" tabindex="-1">
76-
:math:`x \neq y` group tab
94+
<math>
95+
x \neq y
96+
group tab
7797
<div aria-labelledby="tab-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" classes="sphinx-tabs-panel group-tab" ids="panel-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
7898
<paragraph>
7999
Variables are equal
@@ -89,9 +109,13 @@
89109
<container classes="sphinx-tabs" type="tab-element">
90110
<div aria-label="Tabbed content" role="tablist">
91111
<button aria-controls="panel-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tab" tabindex="0">
92-
:math:`x = y` group tab
112+
<math>
113+
x = y
114+
group tab
93115
<button aria-controls="panel-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tab" tabindex="-1">
94-
:math:`x \neq y` group tab
116+
<math>
117+
x \neq y
118+
group tab
95119
<div aria-labelledby="tab-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" classes="sphinx-tabs-panel group-tab" ids="panel-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
96120
<paragraph>
97121
Variables are equal

0 commit comments

Comments
 (0)