diff --git a/Tools/px4params/markdownout.py b/Tools/px4params/markdownout.py new file mode 100644 index 0000000000..4fa1836000 --- /dev/null +++ b/Tools/px4params/markdownout.py @@ -0,0 +1,40 @@ +from xml.sax.saxutils import escape +import codecs + +class MarkdownTablesOutput(): + def __init__(self, groups): + result = ("# Parameter Reference\n" + "> **Note** **This list is auto-generated from the source code** and contains the most recent parameter documentation.\n" + "\n") + for group in groups: + result += '## %s\n\n' % group.GetName() + result += '\n' + result += '\n' + result += '\n' + result += '\n' + result += '\n' + + for param in group.GetParams(): + code = param.GetName() + def_val = param.GetDefault() or '' + name = param.GetFieldValue("short_desc") or '' + min_val = param.GetFieldValue("min") or '' + max_val = param.GetFieldValue("max") or '' + long_desc = param.GetFieldValue("long_desc") or '' + if long_desc is not '': + long_desc = '

Comment: %s

' % long_desc + + if name == code: + name = "" + code='%s' % (code, code) + + result += '\n' % (code,name, long_desc, min_val,max_val,def_val) + + #Close the table. + result += '
NameDescriptionMinMaxDefault
%s

%s

%s
%s%s%s
\n\n' + + self.output = result; + + def Save(self, filename): + with codecs.open(filename, 'w', 'utf-8') as f: + f.write(self.output) diff --git a/Tools/px_process_params.py b/Tools/px_process_params.py index 697af39f91..841edebb48 100644 --- a/Tools/px_process_params.py +++ b/Tools/px_process_params.py @@ -50,7 +50,7 @@ from __future__ import print_function import sys import os import argparse -from px4params import srcscanner, srcparser, xmlout, dokuwikiout, dokuwikirpc +from px4params import srcscanner, srcparser, xmlout, dokuwikiout, dokuwikirpc, markdownout import re import json @@ -81,6 +81,12 @@ def main(): const="", metavar="BOARD", help="Board to create xml parameter xml for") + parser.add_argument("-m", "--markdown", + nargs='?', + const="parameters.md", + metavar="FILENAME", + help="Create Markdown file" + " (default FILENAME: parameters.md)") parser.add_argument("-w", "--wiki", nargs='?', const="parameters.wiki", @@ -122,7 +128,7 @@ def main(): args = parser.parse_args() # Check for valid command - if not (args.xml or args.wiki or args.wiki_update): + if not (args.xml or args.wiki or args.wiki_update or args.markdown): print("Error: You need to specify at least one output method!\n") parser.print_usage() sys.exit(1) @@ -176,6 +182,13 @@ def main(): else: print("Error: You need to specify DokuWiki XML-RPC username and password!") + # Output to Markdown/HTML tables + if args.markdown: + out = markdownout.MarkdownTablesOutput(param_groups) + if args.markdown: + print("Creating markdown file " + args.markdown) + out.Save(args.markdown) + #print("All done!")