diff options
author | Benjamin Tissoires <benjamin.tissoires@gmail.com> | 2020-06-12 07:22:36 +0200 |
---|---|---|
committer | Benjamin Tissoires <benjamin.tissoires@gmail.com> | 2020-06-12 07:22:36 +0200 |
commit | 336a22555f7c6baf81587c6f10e818a7c1cdce90 (patch) | |
tree | c76d77be1f19912b6065d5c9abf00a4eeb95d297 | |
parent | 1617577378fc17ca09fd3ef34f24e02c2889aa9f (diff) | |
download | wekan-336a22555f7c6baf81587c6f10e818a7c1cdce90.tar.gz wekan-336a22555f7c6baf81587c6f10e818a7c1cdce90.tar.bz2 wekan-336a22555f7c6baf81587c6f10e818a7c1cdce90.zip |
openapi: fix jsdoc/operation matching
The script was considering that the operation
associated to a jsdoc was declared on the line
just after the end of the jsdoc.
Turns out that adding new lines makes the code
clearer, but the python script was then ignoring
some jsdocs.
Change the behaviour to consider that the jsdoc
associated with an operation is the last one
declared after the end of the previous operation.
Fixes #3169
-rw-r--r-- | openapi/generate_openapi.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/openapi/generate_openapi.py b/openapi/generate_openapi.py index 54526416..b843feff 100644 --- a/openapi/generate_openapi.py +++ b/openapi/generate_openapi.py @@ -814,13 +814,21 @@ def parse_schemas(schemas_dir): for d in data] entry_points.extend(schema_entry_points) + end_of_previous_operation = -1 + # try to match JSDoc to the operations for entry_point in schema_entry_points: operation = entry_point.method # POST/GET/PUT/DELETE + + # find all jsdocs that end before the current operation, + # the last item in the list is the one we need jsdoc = [j for j in jsdocs - if j.loc.end.line + 1 == operation.loc.start.line] + if j.loc.end.line + 1 <= operation.loc.start.line and + j.loc.start.line > end_of_previous_operation] if bool(jsdoc): - entry_point.doc = jsdoc[0] + entry_point.doc = jsdoc[-1] + + end_of_previous_operation = operation.loc.end.line except TypeError: logger.warning(context.txt_for(statement)) logger.error('{}:{}-{} can not parse {}'.format(path, |