Skip to content

Commit 54ecd0a

Browse files
committed
Do not generate signode for obj without title and uniq field
1 parent 11e9454 commit 54ecd0a

File tree

2 files changed

+26
-24
lines changed

2 files changed

+26
-24
lines changed

src/sphinxnotes/any/directives.py

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def _build_object(self) -> Object:
8383

8484
def _setup_nodes(self, obj:Object,
8585
sectnode:nodes.Element,
86-
ahrnode:nodes.Element,
86+
ahrnode:nodes.Element|None,
8787
contnode:nodes.Element) -> None:
8888
"""
8989
Attach necessary informations to nodes and note them.
@@ -105,20 +105,21 @@ def _setup_nodes(self, obj:Object,
105105
sectnode['classes'].append(domain.name)
106106

107107
# Setup anchor
108-
_, objid = self.schema.identifier_of(obj)
109-
ahrid = make_id(self.env, self.state.document, prefix=objtype, term=objid)
110-
ahrnode['ids'].append(ahrid)
111-
# Add object name to node's names attribute.
112-
# 'names' is space-separated list containing normalized reference
113-
# names of an element.
114-
name = self.schema.name_of(obj)
115-
if isinstance(name, str):
116-
ahrnode['names'].append(fully_normalize_name(name))
117-
elif isinstance(name, list):
118-
ahrnode['names'].extend([fully_normalize_name(x) for x in name])
119-
self.state.document.note_explicit_target(ahrnode)
120-
# Note object by docu fields
121-
domain.note_object(self.env.docname, ahrid, self.schema, obj) # FIXME: Cast to AnyDomain
108+
if ahrnode is not None:
109+
_, objid = self.schema.identifier_of(obj)
110+
ahrid = make_id(self.env, self.state.document, prefix=objtype, term=objid)
111+
ahrnode['ids'].append(ahrid)
112+
# Add object name to node's names attribute.
113+
# 'names' is space-separated list containing normalized reference
114+
# names of an element.
115+
name = self.schema.name_of(obj)
116+
if isinstance(name, str):
117+
ahrnode['names'].append(fully_normalize_name(name))
118+
elif isinstance(name, list):
119+
ahrnode['names'].extend([fully_normalize_name(x) for x in name])
120+
self.state.document.note_explicit_target(ahrnode)
121+
# Note object by docu fields
122+
domain.note_object(self.env.docname, ahrid, self.schema, obj) # FIXME: Cast to AnyDomain
122123

123124
# Parse description
124125
nested_parse_with_titles(self.state,
@@ -157,20 +158,20 @@ def _run_section(self, obj:Object) -> list[nodes.Node]:
157158

158159
def _run_objdesc(self, obj:Object) -> list[nodes.Node]:
159160
descnode = addnodes.desc()
161+
160162
# Generate signature node
161163
title = self.schema.title_of(obj)
162164
if title is None:
163165
# Use non-generated object ID as replacement of title
164166
idfield, objid = self.schema.identifier_of(obj)
165-
if idfield is not None:
166-
# ID is not generated
167-
title = objid
168-
else:
169-
# ID is auto-generated, Use '' is better than None
170-
title = ''
171-
signode = addnodes.desc_signature(title, '')
172-
signode += addnodes.desc_name(title, title)
173-
descnode.append(signode)
167+
title = objid if idfield is not None else None
168+
if title is not None:
169+
signode = addnodes.desc_signature(title, '')
170+
signode += addnodes.desc_name(title, title)
171+
descnode.append(signode)
172+
else:
173+
signode = None
174+
174175
# Generate content node
175176
contnode = addnodes.desc_content()
176177
descnode.append(contnode)

src/sphinxnotes/any/domain.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ def resolve_xref(self, env:BuildEnvironment, fromdocname:str,
135135
if not has_explicit_title:
136136
newtitle = schema.render_reference(obj)
137137
else:
138+
# Mulitple objects found, we should create link to indices page.
138139
todocname, anchor, = self._get_index_anchor(typ, target)
139140
if not has_explicit_title:
140141
newtitle = schema.render_ambiguous_reference(title)

0 commit comments

Comments
 (0)