Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
SCODOC_R6A06
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Paul Milleville
SCODOC_R6A06
Commits
87d04905
Commit
87d04905
authored
1 year ago
by
Iziram
Browse files
Options
Downloads
Patches
Plain Diff
create_api_map : ajout keyword "DOC_ANCHOR"
parent
5cdf089a
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
tools/create_api_map.py
+50
-13
50 additions, 13 deletions
tools/create_api_map.py
with
50 additions
and
13 deletions
tools/create_api_map.py
+
50
−
13
View file @
87d04905
...
...
@@ -461,6 +461,7 @@ def gen_api_map(app, endpoint_start="api"):
# Récupération de la fonction associée à la route
func
=
app
.
view_functions
[
rule
.
endpoint
]
func_name
=
parse_doc_name
(
func
.
__doc__
or
""
)
or
func
.
__name__
# Pour chaque segment de la route
for
i
,
segment
in
enumerate
(
segments
):
...
...
@@ -494,7 +495,7 @@ def gen_api_map(app, endpoint_start="api"):
# On ajoute le token comme enfant du token courant
# en donnant la méthode et le nom de la fonction associée
child
.
func_name
=
func
.
_
_name
__
child
.
func_name
=
func_name
method
:
str
=
"
POST
"
if
"
POST
"
in
rule
.
methods
else
"
GET
"
child
.
method
=
method
current_token
.
add_child
(
child
)
...
...
@@ -602,6 +603,9 @@ def generate_svg(element, fname):
)
ET
.
SubElement
(
marker
,
"
polygon
"
,
{
"
points
"
:
"
0 0, 10 3.5, 0 7
"
})
# Ajoute un décalage vertical pour avoir un peu de padding en haut
element
.
set
(
"
transform
"
,
"
translate(0, 10)
"
)
# Ajout de l'élément principal à l'élément racine
svg
.
append
(
element
)
...
...
@@ -610,6 +614,50 @@ def generate_svg(element, fname):
tree
.
write
(
fname
,
encoding
=
"
utf-8
"
,
xml_declaration
=
True
)
def
_get_doc_lines
(
keyword
,
doc
)
->
list
[
str
]:
"""
Renvoie les lignes de la doc qui suivent le mot clé keyword
La doc doit contenir des lignes de la forme:
KEYWORD
-------
...
"""
# Récupérer les lignes de la doc
lines
=
[
line
.
strip
()
for
line
in
doc
.
split
(
"
\n
"
)]
# On cherche la ligne "KEYWORD" et on vérifie que la ligne suivante est "-----"
# Si ce n'est pas le cas, on renvoie un dictionnaire vide
try
:
kw_index
=
lines
.
index
(
keyword
)
kw_line
=
"
-
"
*
len
(
keyword
)
if
lines
[
kw_index
+
1
]
!=
kw_line
:
return
[]
except
ValueError
:
return
[]
# On récupère les lignes de la doc qui correspondent au keyword (enfin on espère)
kw_lines
=
lines
[
kw_index
+
2
:]
return
kw_lines
def
parse_doc_name
(
doc
):
"""
renvoie le nom de la route à partir de la docstring
La doc doit contenir des lignes de la forme:
DOC_ANCHOR
----------
nom_de_la_route
Il ne peut y avoir qu
'
une seule ligne suivant -----
"""
name_lines
:
list
[
str
]
=
_get_doc_lines
(
"
DOC_ANCHOR
"
,
doc
)
return
name_lines
[
0
]
if
name_lines
else
None
def
parse_query_doc
(
doc
):
"""
renvoie un dictionnaire {param: <type:nom_param>} (ex: {assiduite_id : <int:assiduite_id>})
...
...
@@ -625,18 +673,7 @@ def parse_query_doc(doc):
Dès qu
'
une ligne ne respecte pas ce format (voir regex dans la fonction), on arrête de parser
Attention, la ligne ----- doit être collée contre QUERY et contre le premier paramètre
"""
# Récupérer les lignes de la doc
lines
=
[
line
.
strip
()
for
line
in
doc
.
split
(
"
\n
"
)]
# On cherche la ligne "QUERY" et on vérifie que la ligne suivante est "-----"
# Si ce n'est pas le cas, on renvoie un dictionnaire vide
try
:
query_index
=
lines
.
index
(
"
QUERY
"
)
if
lines
[
query_index
+
1
]
!=
"
-----
"
:
return
{}
except
ValueError
:
return
{}
# On récupère les lignes de la doc qui correspondent à la query (enfin on espère)
query_lines
=
lines
[
query_index
+
2
:]
query_lines
:
list
[
str
]
=
_get_doc_lines
(
"
QUERY
"
,
doc
)
query
=
{}
regex
=
re
.
compile
(
r
"
^(\w+):(<.+>)$
"
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment