diff --git a/hacking/module_formatter.py b/hacking/module_formatter.py index fd18e2a1827..43f84dcb2f3 100755 --- a/hacking/module_formatter.py +++ b/hacking/module_formatter.py @@ -112,6 +112,16 @@ def rst_ify(text): return t +def markdown_ify(text): + + t = _ITALIC.sub("_" + r"\1" + "_", text) + t = _BOLD.sub("**" + r"\1" + "**", t) + t = _MODULE.sub("*" + r"\1" + "*", t) + t = _URL.sub("[" + r"\1" + "](" + r"\1" + ")", t) + t = _CONST.sub("`" + r"\1" + "`", t) + + return t + # Helper for Jinja2 (format() doesn't work here...) def rst_fmt(text, fmt): return fmt % (text) @@ -187,7 +197,7 @@ def main(): p.add_option("-t", "--type", action='store', dest='type', - choices=['html', 'latex', 'man', 'rst', 'json'], + choices=['html', 'latex', 'man', 'rst', 'json', 'markdown'], default='latex', help="Output type") p.add_option("-m", "--module", @@ -283,6 +293,13 @@ def main(): env.filters['jpfunc'] = js_ify template = env.get_template('js.j2') outputname = "%s.js" + if options.type == 'markdown': + env.filters['jpfunc'] = markdown_ify + env.filters['html_ify'] = html_ify + template = env.get_template('markdown.j2') + outputname = "%s.md" + includecmt = "" + includefmt = "" if options.includes_file is not None and includefmt != "": incfile = open(options.includes_file, "w") diff --git a/hacking/templates/markdown.j2 b/hacking/templates/markdown.j2 new file mode 100644 index 00000000000..2c65af0fa3d --- /dev/null +++ b/hacking/templates/markdown.j2 @@ -0,0 +1,55 @@ +## @{ module }@ + +{# ------------------------------------------ + # + # This is Github-flavored Markdown + # + --------------------------------------------#} + +{% if version_added is defined -%} +New in version @{ version_added }@. +{% endif %} + +{% for desc in description -%} +@{ desc | jpfunc }@ +{% endfor %} + +{% if options -%} + + + + + + + + +{% for (k,v) in options.iteritems() %} + + + + + + + +{% endfor %} +
parameterrequireddefaultchoicescomments
@{ k }@{% if v.get('required', False) %}yes{% else %}no{% endif %}{% if v['default'] %}@{ v['default'] }@{% endif %}
    {% for choice in v.get('choices',[]) -%}
  • @{ choice }@
  • {% endfor -%}
{% for desc in v.description -%}@{ desc | html_ify }@{% endfor -%}{% if v['version_added'] %} (added in Ansible @{v['version_added']}@){% endif %}
+{% endif %} + +{% for example in examples %} +{% if example['description'] %} +* @{ example['description'] | jpfunc }@ +{% endif %} + +``` +@{ example['code'] }@ +``` +{% endfor %} + + +{% if notes %} +#### Notes +{% for note in notes %} +@{ note | jpfunc }@ +{% endfor %} +{% endif %} +