Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
3793830e
Commit
3793830e
authored
May 10, 2014
by
Damien George
Browse files
tools: Move gendoc.py to tools, and make it a little more generic.
parent
09bbe721
Changes
1
Hide whitespace changes
Inline
Side-by-side
stmhal
/gendoc.py
→
tools
/gendoc.py
View file @
3793830e
...
@@ -67,6 +67,9 @@ class Lexer:
...
@@ -67,6 +67,9 @@ class Lexer:
print
(
'({}:{}) {}'
.
format
(
self
.
filename
,
self
.
cur_line
,
msg
))
print
(
'({}:{}) {}'
.
format
(
self
.
filename
,
self
.
cur_line
,
msg
))
raise
Lexer
.
LexerError
raise
Lexer
.
LexerError
class
DocValidateError
(
Exception
):
pass
class
DocItem
:
class
DocItem
:
def
__init__
(
self
):
def
__init__
(
self
):
self
.
doc
=
[]
self
.
doc
=
[]
...
@@ -216,6 +219,10 @@ class DocModule(DocItem):
...
@@ -216,6 +219,10 @@ class DocModule(DocItem):
def
process_constant
(
self
,
lex
,
d
):
def
process_constant
(
self
,
lex
,
d
):
self
.
cur_class
.
process_constant
(
lex
,
d
)
self
.
cur_class
.
process_constant
(
lex
,
d
)
def
validate
(
self
):
if
self
.
descr
is
None
:
raise
DocValidateError
(
'module {} referenced but never defined'
.
format
(
self
.
name
))
def
dump
(
self
):
def
dump
(
self
):
s
=
[]
s
=
[]
s
.
append
(
'# module {}'
.
format
(
self
.
name
))
s
.
append
(
'# module {}'
.
format
(
self
.
name
))
...
@@ -262,15 +269,18 @@ class Doc:
...
@@ -262,15 +269,18 @@ class Doc:
def
process_module
(
self
,
lex
,
d
):
def
process_module
(
self
,
lex
,
d
):
name
=
d
[
'id'
]
name
=
d
[
'id'
]
if
name
in
self
.
modules
:
if
name
not
in
self
.
modules
:
self
.
modules
[
name
]
=
DocModule
(
name
,
None
)
self
.
cur_module
=
self
.
modules
[
name
]
if
self
.
cur_module
.
descr
is
not
None
:
lex
.
error
(
"multiple definition of module '{}'"
.
format
(
name
))
lex
.
error
(
"multiple definition of module '{}'"
.
format
(
name
))
self
.
cur_module
=
self
.
modules
[
name
]
=
DocModule
(
name
,
d
[
'descr'
]
)
self
.
cur_module
.
descr
=
d
[
'descr'
]
self
.
cur_module
.
add_doc
(
lex
)
self
.
cur_module
.
add_doc
(
lex
)
def
process_moduleref
(
self
,
lex
,
d
):
def
process_moduleref
(
self
,
lex
,
d
):
name
=
d
[
'id'
]
name
=
d
[
'id'
]
if
name
not
in
self
.
modules
:
if
name
not
in
self
.
modules
:
lex
.
error
(
'module {} referenced before definition'
.
format
(
name
)
)
self
.
modules
[
name
]
=
DocModule
(
name
,
None
)
self
.
cur_module
=
self
.
modules
[
name
]
self
.
cur_module
=
self
.
modules
[
name
]
lex
.
opt_break
()
lex
.
opt_break
()
...
@@ -294,6 +304,10 @@ class Doc:
...
@@ -294,6 +304,10 @@ class Doc:
self
.
check_module
(
lex
)
self
.
check_module
(
lex
)
self
.
cur_module
.
process_constant
(
lex
,
d
)
self
.
cur_module
.
process_constant
(
lex
,
d
)
def
validate
(
self
):
for
m
in
self
.
modules
.
values
():
m
.
validate
()
def
write
(
self
,
dir
):
def
write
(
self
,
dir
):
for
m
in
self
.
modules
.
values
():
for
m
in
self
.
modules
.
values
():
mod_dir
=
os
.
path
.
join
(
dir
,
'module'
,
m
.
name
)
mod_dir
=
os
.
path
.
join
(
dir
,
'module'
,
m
.
name
)
...
@@ -339,17 +353,18 @@ def process_file(file, doc):
...
@@ -339,17 +353,18 @@ def process_file(file, doc):
def
main
():
def
main
():
cmd_parser
=
argparse
.
ArgumentParser
(
description
=
'Generate documentation for pyboard API from C files.'
)
cmd_parser
=
argparse
.
ArgumentParser
(
description
=
'Generate documentation for pyboard API from C files.'
)
cmd_parser
.
add_argument
(
'--outdir'
,
metavar
=
'<output dir>'
,
default
=
'gendoc-out'
,
help
=
'ouput directory'
)
cmd_parser
.
add_argument
(
'--outdir'
,
metavar
=
'<output dir>'
,
default
=
'gendoc-out'
,
help
=
'ouput directory'
)
cmd_parser
.
add_argument
(
'files'
,
nargs
=
'
*
'
,
help
=
'input files'
)
cmd_parser
.
add_argument
(
'files'
,
nargs
=
'
+
'
,
help
=
'input files'
)
args
=
cmd_parser
.
parse_args
()
args
=
cmd_parser
.
parse_args
()
if
len
(
args
.
files
)
==
0
:
args
.
files
=
[
'modpyb.c'
,
'accel.c'
,
'adc.c'
,
'dac.c'
,
'extint.c'
,
'i2c.c'
,
'led.c'
,
'pin.c'
,
'rng.c'
,
'servo.c'
,
'spi.c'
,
'uart.c'
,
'usrsw.c'
,
'timer.c'
,
'rtc.c'
]
doc
=
Doc
()
doc
=
Doc
()
for
file
in
args
.
files
:
for
file
in
args
.
files
:
print
(
'processing'
,
file
)
print
(
'processing'
,
file
)
if
not
process_file
(
file
,
doc
):
if
not
process_file
(
file
,
doc
):
return
return
try
:
doc
.
validate
()
except
DocValidateError
as
e
:
print
(
e
)
doc
.
write
(
args
.
outdir
)
doc
.
write
(
args
.
outdir
)
print
(
'written to'
,
args
.
outdir
)
print
(
'written to'
,
args
.
outdir
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment