mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-31 18:47:21 +08:00
Tools/px4moduledoc: add some comments, describe the regexes
This commit is contained in:
@@ -1,8 +1,12 @@
|
|||||||
|
"""
|
||||||
|
Class to generate Markdown documentation pages from parsed module doc strings
|
||||||
|
"""
|
||||||
|
|
||||||
from xml.sax.saxutils import escape
|
from xml.sax.saxutils import escape
|
||||||
import codecs
|
import codecs
|
||||||
import os
|
import os
|
||||||
|
|
||||||
class MarkdownTablesOutput():
|
class MarkdownOutput():
|
||||||
def __init__(self, module_groups):
|
def __init__(self, module_groups):
|
||||||
|
|
||||||
self._outputs = {}
|
self._outputs = {}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class ModuleDocumentation(object):
|
|||||||
self._category = self._get_string(args[1])
|
self._category = self._get_string(args[1])
|
||||||
|
|
||||||
self._usage_string = "%s <command> [arguments...]\n" % self._name
|
self._usage_string = "%s <command> [arguments...]\n" % self._name
|
||||||
self._usage_string += " Commands:\n"
|
self._usage_string += " Commands:\n"
|
||||||
|
|
||||||
def _handle_usage_name_simple(self, args):
|
def _handle_usage_name_simple(self, args):
|
||||||
assert(len(args) == 2) # executable_name, category
|
assert(len(args) == 2) # executable_name, category
|
||||||
@@ -200,7 +200,7 @@ class ModuleDocumentation(object):
|
|||||||
def documentation(self):
|
def documentation(self):
|
||||||
doc_string = self._doc_string
|
doc_string = self._doc_string
|
||||||
|
|
||||||
# convert ' $ cmd' commands into code blocks
|
# convert '$ cmd' commands into code blocks (e.g. '$ logger start')
|
||||||
# use lookahead (?=...) so the multiple consecutive command lines work
|
# use lookahead (?=...) so the multiple consecutive command lines work
|
||||||
doc_string = re.sub(r"\n\$ (.*)(?=\n)", r"\n```\n\1\n```", doc_string)
|
doc_string = re.sub(r"\n\$ (.*)(?=\n)", r"\n```\n\1\n```", doc_string)
|
||||||
# now merge consecutive blocks
|
# now merge consecutive blocks
|
||||||
@@ -240,6 +240,7 @@ class SourceParser(object):
|
|||||||
Parses provided data and stores all found parameters internally.
|
Parses provided data and stores all found parameters internally.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Regex to extract module doc function calls, starting with PRINT_MODULE_
|
||||||
re_doc_definition = re.compile(r'PRINT_MODULE_([A-Z_]*)\s*\(')
|
re_doc_definition = re.compile(r'PRINT_MODULE_([A-Z_]*)\s*\(')
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|||||||
@@ -33,6 +33,9 @@ class SourceScanner(object):
|
|||||||
Scans provided file and passes its contents to the parser using
|
Scans provided file and passes its contents to the parser using
|
||||||
parser.Parse method.
|
parser.Parse method.
|
||||||
"""
|
"""
|
||||||
|
# Extract the scope: it is the directory within the repo. Either it
|
||||||
|
# starts directly with 'src/module/abc', or it has the form 'x/y/z/src/module/abc'.
|
||||||
|
# The output is 'module/abc' in both cases.
|
||||||
prefix = "^(|.*" + os.path.sep + ")src" + os.path.sep
|
prefix = "^(|.*" + os.path.sep + ")src" + os.path.sep
|
||||||
scope = re.sub(prefix.replace("\\", "/"), "", os.path.dirname(os.path.relpath(path)).replace("\\", "/"))
|
scope = re.sub(prefix.replace("\\", "/"), "", os.path.dirname(os.path.relpath(path)).replace("\\", "/"))
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,9 @@ class SourceScanner(object):
|
|||||||
Scans provided file and passes its contents to the parser using
|
Scans provided file and passes its contents to the parser using
|
||||||
parser.Parse method.
|
parser.Parse method.
|
||||||
"""
|
"""
|
||||||
|
# Extract the scope: it is the directory within the repo. Either it
|
||||||
|
# starts directly with 'src/module/abc', or it has the form 'x/y/z/src/module/abc'.
|
||||||
|
# The output is 'module/abc' in both cases.
|
||||||
prefix = "^(|.*" + os.path.sep + ")src" + os.path.sep
|
prefix = "^(|.*" + os.path.sep + ")src" + os.path.sep
|
||||||
scope = re.sub(prefix.replace("\\", "/"), "", os.path.dirname(os.path.relpath(path)).replace("\\", "/"))
|
scope = re.sub(prefix.replace("\\", "/"), "", os.path.dirname(os.path.relpath(path)).replace("\\", "/"))
|
||||||
|
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ def main():
|
|||||||
if (args.verbose): print("Creating markdown output to directory " + str(args.markdown))
|
if (args.verbose): print("Creating markdown output to directory " + str(args.markdown))
|
||||||
if not os.path.exists(args.markdown):
|
if not os.path.exists(args.markdown):
|
||||||
os.makedirs(args.markdown)
|
os.makedirs(args.markdown)
|
||||||
out = markdownout.MarkdownTablesOutput(module_groups)
|
out = markdownout.MarkdownOutput(module_groups)
|
||||||
out.Save(args.markdown)
|
out.Save(args.markdown)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user