Skip to content

Commit d2626ff

Browse files
committed
Fix element nesting for "infocard" directive
1 parent 7122632 commit d2626ff

File tree

8 files changed

+197
-188
lines changed

8 files changed

+197
-188
lines changed

docs/infocard.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ and for consolidating them.
4444

4545
{tags-secondary}`qux`
4646

47-
{tags-info}`anything`
47+
{tags-info}`anything else`
4848
:::
4949

5050
::::

docs/snippets/myst/infocard.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ and for consolidating them.
2020

2121
{tags-secondary}`qux`
2222

23-
{tags-info}`anything`
23+
{tags-info}`anything else`
2424
:::
2525

2626
::::

docs/snippets/rst/infocard.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@
2020

2121
:tags-secondary:`qux`
2222

23-
:tags-info:`anything`
23+
:tags-info:`anything else`

sphinx_design_elements/infocard.py

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Dict, List
1+
from typing import Dict, List, Tuple
22

33
from docutils import nodes
44
from docutils.statemachine import StringList
@@ -20,9 +20,11 @@ class GridBuilderDirective(SphinxDirective):
2020
Helper functions for the `InfoCardDirective` to create grids and cards.
2121
"""
2222

23-
def create_grid(self):
23+
def create_grid(self) -> Tuple[nodes.container, nodes.container]:
2424
"""
2525
Create a "grid layout" using sphinx-design components.
26+
27+
Return its outer and inner `docutils.container` instances.
2628
"""
2729
margin_padding_classes = [margin_option("0")[0], padding_option("0")[0]]
2830

@@ -47,25 +49,32 @@ def create_grid(self):
4749
grid_container += grid_row
4850
return grid_container, grid_row
4951

50-
def create_card(self):
52+
def create_card(self) -> Tuple[nodes.container, nodes.container]:
5153
"""
5254
Create a sphinx-design "card" component.
55+
56+
Return its outer and inner `docutils.container` instances.
5357
"""
54-
# A dummy directive needed to use the CardDirective.
55-
dummy = SphinxDirective(
58+
card = CardDirective(
59+
# FIXME: Need to assign random name?
5660
name="sdroot",
57-
arguments=[],
58-
options={},
61+
arguments=self.arguments,
62+
options=self.options,
5963
content=StringList(None),
6064
lineno=self.lineno,
6165
content_offset=self.content_offset,
62-
block_text="",
66+
block_text=self.block_text,
6367
state=self.state,
6468
state_machine=self.state_machine,
6569
)
66-
card = CardDirective.create_card(dummy, [], {})
67-
self.set_source_info(card)
68-
return card
70+
71+
# TODO: Can process this differently?
72+
card_node = card.run()[0]
73+
self.set_source_info(card_node)
74+
75+
card_body = card_node.children[0]
76+
self.set_source_info(card_body)
77+
return card_node, card_body
6978

7079

7180
class InfoCardDirective(GridBuilderDirective):
@@ -87,17 +96,17 @@ def run(self) -> List[nodes.Node]:
8796
root, canvas = self.create_grid()
8897

8998
# Create a card, and add it to the canvas.
90-
card = self.create_card()
99+
card, card_body = self.create_card()
91100
canvas += card
92101

93102
# Create a content grid, and add it to the card.
94-
outer, inner = self.create_grid()
95-
self.set_source_info(outer)
96-
card += outer
103+
content_outer, content_inner = self.create_grid()
104+
self.set_source_info(content_outer)
105+
card_body += content_outer
97106

98107
# Parse the node content, assuming grid items, and add them to the content grid.
99-
self.state.nested_parse(self.content, self.content_offset, inner)
100-
self.set_source_info(inner)
108+
self.state.nested_parse(self.content, self.content_offset, content_inner)
109+
self.set_source_info(content_inner)
101110

102111
# Return a reference to the root node.
103112
return [root]

tests/test_snippets/snippet_myst_post_infocard.xml

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6,46 +6,46 @@
66
<container classes="sd-row sd-m-0 sd-p-0" design_component="grid-row" is_div="True">
77
<container classes="sd-card sd-sphinx-override sd-mb-3 sd-shadow-sm" design_component="card" is_div="True">
88
<container classes="sd-card-body" design_component="card-body" is_div="True">
9-
<container classes="sd-container-fluid sd-sphinx-override sd-m-0 sd-p-0" design_component="grid-container" is_div="True">
10-
<container classes="sd-row sd-m-0 sd-p-0" design_component="grid-row" is_div="True">
11-
<container classes="sd-col sd-d-flex-column sd-col-8 sd-col-xs-8 sd-col-sm-8 sd-col-md-8 sd-col-lg-8" design_component="grid-item" is_div="True">
12-
<paragraph>
13-
<reference refuri="https://example.org/beagles">
14-
example.org/beagles
15-
<paragraph>
16-
A module for collecting votes from beagles,
17-
<raw format="html" xml:space="preserve">
18-
<br />
19-
<raw format="latex" xml:space="preserve">
20-
\\
21-
and for consolidating them.
22-
<paragraph>
23-
<strong>
24-
Author:
25-
C. Schultz, Universal Features Syndicate
26-
<raw format="html" xml:space="preserve">
27-
<br />
28-
<raw format="latex" xml:space="preserve">
29-
\\
30-
<strong>
31-
Contact:
32-
Los Angeles, CA;
33-
<reference refuri="mailto:cschultz@peanuts.example.org">
34-
cschultz@peanuts.example.org
35-
<container classes="sd-col sd-d-flex-column sd-col-4 sd-col-xs-4 sd-col-sm-4 sd-col-md-4 sd-col-lg-4" design_component="grid-item" is_div="True">
36-
<paragraph>
37-
<inline classes="sd-sphinx-override sd-badge sd-outline-primary sd-text-primary">
38-
foo
39-
<inline>
40-
41-
<inline classes="sd-sphinx-override sd-badge sd-outline-primary sd-text-primary">
42-
bar
43-
<paragraph>
44-
<inline classes="sd-sphinx-override sd-badge sd-outline-success sd-text-success">
45-
baz
46-
<paragraph>
47-
<inline classes="sd-sphinx-override sd-badge sd-outline-secondary sd-text-secondary">
48-
qux
49-
<paragraph>
50-
<inline classes="sd-sphinx-override sd-badge sd-outline-info sd-text-info">
51-
anything
9+
<container classes="sd-container-fluid sd-sphinx-override sd-m-0 sd-p-0" design_component="grid-container" is_div="True">
10+
<container classes="sd-row sd-m-0 sd-p-0" design_component="grid-row" is_div="True">
11+
<container classes="sd-col sd-d-flex-column sd-col-8 sd-col-xs-8 sd-col-sm-8 sd-col-md-8 sd-col-lg-8" design_component="grid-item" is_div="True">
12+
<paragraph>
13+
<reference refuri="https://example.org/beagles">
14+
example.org/beagles
15+
<paragraph>
16+
A module for collecting votes from beagles,
17+
<raw format="html" xml:space="preserve">
18+
<br />
19+
<raw format="latex" xml:space="preserve">
20+
\\
21+
and for consolidating them.
22+
<paragraph>
23+
<strong>
24+
Author:
25+
C. Schultz, Universal Features Syndicate
26+
<raw format="html" xml:space="preserve">
27+
<br />
28+
<raw format="latex" xml:space="preserve">
29+
\\
30+
<strong>
31+
Contact:
32+
Los Angeles, CA;
33+
<reference refuri="mailto:cschultz@peanuts.example.org">
34+
cschultz@peanuts.example.org
35+
<container classes="sd-col sd-d-flex-column sd-col-4 sd-col-xs-4 sd-col-sm-4 sd-col-md-4 sd-col-lg-4" design_component="grid-item" is_div="True">
36+
<paragraph>
37+
<inline classes="sd-sphinx-override sd-badge sd-outline-primary sd-text-primary">
38+
foo
39+
<inline>
40+
41+
<inline classes="sd-sphinx-override sd-badge sd-outline-primary sd-text-primary">
42+
bar
43+
<paragraph>
44+
<inline classes="sd-sphinx-override sd-badge sd-outline-success sd-text-success">
45+
baz
46+
<paragraph>
47+
<inline classes="sd-sphinx-override sd-badge sd-outline-secondary sd-text-secondary">
48+
qux
49+
<paragraph>
50+
<inline classes="sd-sphinx-override sd-badge sd-outline-info sd-text-info">
51+
anything else

tests/test_snippets/snippet_myst_pre_infocard.xml

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6,46 +6,46 @@
66
<container classes="sd-row sd-m-0 sd-p-0" design_component="grid-row" is_div="True">
77
<container classes="sd-card sd-sphinx-override sd-mb-3 sd-shadow-sm" design_component="card" is_div="True">
88
<container classes="sd-card-body" design_component="card-body" is_div="True">
9-
<container classes="sd-container-fluid sd-sphinx-override sd-m-0 sd-p-0" design_component="grid-container" is_div="True">
10-
<container classes="sd-row sd-m-0 sd-p-0" design_component="grid-row" is_div="True">
11-
<container classes="sd-col sd-d-flex-column sd-col-8 sd-col-xs-8 sd-col-sm-8 sd-col-md-8 sd-col-lg-8" design_component="grid-item" is_div="True">
12-
<paragraph>
13-
<reference refuri="https://example.org/beagles">
14-
example.org/beagles
15-
<paragraph>
16-
A module for collecting votes from beagles,
17-
<raw format="html" xml:space="preserve">
18-
<br />
19-
<raw format="latex" xml:space="preserve">
20-
\\
21-
and for consolidating them.
22-
<paragraph>
23-
<strong>
24-
Author:
25-
C. Schultz, Universal Features Syndicate
26-
<raw format="html" xml:space="preserve">
27-
<br />
28-
<raw format="latex" xml:space="preserve">
29-
\\
30-
<strong>
31-
Contact:
32-
Los Angeles, CA;
33-
<reference refuri="mailto:cschultz@peanuts.example.org">
34-
cschultz@peanuts.example.org
35-
<container classes="sd-col sd-d-flex-column sd-col-4 sd-col-xs-4 sd-col-sm-4 sd-col-md-4 sd-col-lg-4" design_component="grid-item" is_div="True">
36-
<paragraph>
37-
<inline classes="sd-sphinx-override sd-badge sd-outline-primary sd-text-primary">
38-
foo
39-
<inline>
40-
41-
<inline classes="sd-sphinx-override sd-badge sd-outline-primary sd-text-primary">
42-
bar
43-
<paragraph>
44-
<inline classes="sd-sphinx-override sd-badge sd-outline-success sd-text-success">
45-
baz
46-
<paragraph>
47-
<inline classes="sd-sphinx-override sd-badge sd-outline-secondary sd-text-secondary">
48-
qux
49-
<paragraph>
50-
<inline classes="sd-sphinx-override sd-badge sd-outline-info sd-text-info">
51-
anything
9+
<container classes="sd-container-fluid sd-sphinx-override sd-m-0 sd-p-0" design_component="grid-container" is_div="True">
10+
<container classes="sd-row sd-m-0 sd-p-0" design_component="grid-row" is_div="True">
11+
<container classes="sd-col sd-d-flex-column sd-col-8 sd-col-xs-8 sd-col-sm-8 sd-col-md-8 sd-col-lg-8" design_component="grid-item" is_div="True">
12+
<paragraph>
13+
<reference refuri="https://example.org/beagles">
14+
example.org/beagles
15+
<paragraph>
16+
A module for collecting votes from beagles,
17+
<raw format="html" xml:space="preserve">
18+
<br />
19+
<raw format="latex" xml:space="preserve">
20+
\\
21+
and for consolidating them.
22+
<paragraph>
23+
<strong>
24+
Author:
25+
C. Schultz, Universal Features Syndicate
26+
<raw format="html" xml:space="preserve">
27+
<br />
28+
<raw format="latex" xml:space="preserve">
29+
\\
30+
<strong>
31+
Contact:
32+
Los Angeles, CA;
33+
<reference refuri="mailto:cschultz@peanuts.example.org">
34+
cschultz@peanuts.example.org
35+
<container classes="sd-col sd-d-flex-column sd-col-4 sd-col-xs-4 sd-col-sm-4 sd-col-md-4 sd-col-lg-4" design_component="grid-item" is_div="True">
36+
<paragraph>
37+
<inline classes="sd-sphinx-override sd-badge sd-outline-primary sd-text-primary">
38+
foo
39+
<inline>
40+
41+
<inline classes="sd-sphinx-override sd-badge sd-outline-primary sd-text-primary">
42+
bar
43+
<paragraph>
44+
<inline classes="sd-sphinx-override sd-badge sd-outline-success sd-text-success">
45+
baz
46+
<paragraph>
47+
<inline classes="sd-sphinx-override sd-badge sd-outline-secondary sd-text-secondary">
48+
qux
49+
<paragraph>
50+
<inline classes="sd-sphinx-override sd-badge sd-outline-info sd-text-info">
51+
anything else

0 commit comments

Comments
 (0)