Skip to content

Commit a8be542

Browse files
committed
Allow linking to lower level in delta specs.
1 parent adf8655 commit a8be542

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

bikeshed/metadata.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ def __init__(self):
6767
self.defaultHighlight = None
6868
self.defaultBiblioDisplay = "index"
6969
self.defaultRefStatus = None
70+
self.deltaSpec = False
7071
self.displayShortname = None
7172
self.editors = []
7273
self.editorTerm = {"singular": "Editor", "plural": "Editors"}
@@ -1068,6 +1069,7 @@ def parseLiteralList(key, val, lineNum):
10681069
"Default Biblio Status": Metadata("Default Biblio Status", "defaultRefStatus", joinValue, parseRefStatus), #synonym of "Default Ref Status"
10691070
"Default Highlight": Metadata("Default Highlight", "defaultHighlight", joinValue, parseLiteral),
10701071
"Default Ref Status": Metadata("Default Ref Status", "defaultRefStatus", joinValue, parseRefStatus),
1072+
"Delta Spec": Metadata("Delta Spec", "deltaSpec", joinValue, parseBoolean),
10711073
"ED": Metadata("ED", "ED", joinValue, parseLiteral),
10721074
"Editor": Metadata("Editor", "editors", joinList, parseEditor),
10731075
"Editor Term": Metadata("Editor Term", "editorTerm", joinValue, parseEditorTerm),

bikeshed/refs/ReferenceManager.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class ReferenceManager(object):
2222

2323
__slots__ = ["dataFile", "specs", "defaultSpecs", "ignoredSpecs", "replacedSpecs", "biblios", "loadedBiblioGroups",
2424
"biblioKeys", "biblioNumericSuffixes", "preferredBiblioNames", "headings", "defaultStatus", "localRefs", "anchorBlockRefs", "foreignRefs",
25-
"shortname", "specLevel", "spec", "testing"]
25+
"shortname", "specLevel", "spec", "testing", "isDelta"]
2626

2727
def __init__(self, defaultStatus=None, fileRequester=None, testing=False):
2828
if fileRequester is None:
@@ -176,6 +176,7 @@ def setSpecData(self, md):
176176
self.shortname = md.shortname
177177
self.specLevel = md.level
178178
self.spec = md.vshortname
179+
self.isDelta = md.deltaSpec
179180

180181
for term, defaults in md.linkDefaults.items():
181182
for default in defaults:
@@ -364,6 +365,9 @@ def getRef(self, linkType, text, spec=None, status=None, statusHint=None, linkFo
364365
export = None
365366
refs, failure = self.foreignRefs.queryRefs(text=text, linkType=linkType, spec=spec, status=status, statusHint=statusHint, linkFor=linkFor, linkForHint=linkForHint, explicitFor=explicitFor, export=export, ignoreObsoletes=True)
366367

368+
if failure and self.isDelta:
369+
refs, failure = self.foreignRefs.queryRefs(text=text, linkType=linkType, spec=self.shortname, status=status, statusHint=statusHint, linkFor=linkFor, linkForHint=linkForHint, explicitFor=explicitFor, export=False, ignoreObsoletes=True, latestOnly=False)
370+
367371
if failure and linkType in ("argument", "idl") and linkFor is not None and any(x.endswith("()") for x in linkFor):
368372
# foo()/bar failed, because foo() is technically the wrong signature
369373
# let's see if we can find the right signature, and it's unambiguous

0 commit comments

Comments
 (0)