Skip to content

Commit 4cd849b

Browse files
sphinxcontrib/jsonschema.py: Fix include and collapse logic
1 parent 3d043f5 commit 4cd849b

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

sphinxcontrib/jsonschema.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,11 @@ class JSONSchemaDirective(Directive):
9090
def run(self):
9191
include = self.options.get('include')
9292
if include:
93-
self.include = include.split(',')
93+
self.include = [path.split('/') for path in include.split(',')]
9494
self.include_used = set()
9595
collapse = self.options.get('collapse')
9696
if collapse:
97-
self.collapse = collapse.split(',')
97+
self.collapse = [path.split('/') for path in collapse.split(',')]
9898
self.collapse_used = set()
9999

100100
external_links = self.options.get('externallinks')
@@ -137,14 +137,14 @@ def run(self):
137137

138138
def make_nodes(self, schema):
139139
table = self.table(schema)
140-
include_unused = set(self.include) - self.include_used
141-
collapse_unused = set(self.collapse) - self.collapse_used
140+
include_unused = set(map(tuple, self.include)) - self.include_used
141+
collapse_unused = set(map(tuple, self.collapse)) - self.collapse_used
142142
nodes = [table]
143143
if collapse_unused:
144-
msg = "Collapse values don't exist: {}".format(collapse_unused)
144+
msg = "Collapse values don't exist: {}".format(['/'.join(path) for path in collapse_unused])
145145
nodes.insert(0, self.state.document.reporter.warning(msg))
146146
if include_unused:
147-
msg = "Include values don't exist: {}".format(include_unused)
147+
msg = "Include values don't exist: {}".format(['/'.join(path) for path in include_unused])
148148
nodes.insert(0, self.state.document.reporter.warning(msg))
149149
return nodes
150150

@@ -162,15 +162,16 @@ def table(self, schema):
162162
tbody = nodes.tbody()
163163
tgroup += tbody
164164
for prop in schema:
165+
path = prop.name.split('/')
165166
if self.include:
166-
if prop.name.startswith(tuple(self.include)):
167-
if prop.name in self.include:
168-
self.include_used.add(prop.name)
167+
if any(map(lambda x: x == path[:len(x)], self.include)):
168+
if path in self.include:
169+
self.include_used.add(tuple(path))
169170
else:
170171
continue
171-
if prop.name.startswith(tuple(self.collapse)):
172-
if prop.name in self.collapse:
173-
self.collapse_used.add(prop.name)
172+
if any(map(lambda x: x == path[:len(x)], self.collapse)):
173+
if path in self.collapse:
174+
self.collapse_used.add(tuple(path))
174175
else:
175176
continue
176177
if '^' in prop.name:

0 commit comments

Comments
 (0)