Improve Markdown (and other) module doc output
- The html_ify filter now escapes HTML found in module documentation. THIS COULD AFFECT MORE THAN JUST MARKDOWN but I didn't see any modules expecting to use e.g. HTML entities or HTML tags in their documentation. - The markdown_ify filter (used as jpfunc in markdown.j2) escapes at least a few Markdown in-line formatting characters. - Improvements to markdown.j2: - Call jpfunc on the module name heading so that it gets escaped for Markdown (e.g. my_module_name becomes my\_module\_name). - Added paragraph breaks between paragraphs in the description. - Added examples heading, which is consistent with the notes heading below it.
This commit is contained in:
parent
cf2ddb6f80
commit
7681b1ce68
2 changed files with 16 additions and 4 deletions
|
@ -30,6 +30,7 @@ import optparse
|
||||||
import time
|
import time
|
||||||
import datetime
|
import datetime
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import cgi
|
||||||
import ansible.utils
|
import ansible.utils
|
||||||
import ansible.utils.module_docs as module_docs
|
import ansible.utils.module_docs as module_docs
|
||||||
|
|
||||||
|
@ -62,11 +63,13 @@ def latex_ify(text):
|
||||||
|
|
||||||
def html_ify(text):
|
def html_ify(text):
|
||||||
|
|
||||||
t = _ITALIC.sub("<em>" + r"\1" + "</em>", text)
|
t = cgi.escape(text)
|
||||||
|
t = _ITALIC.sub("<em>" + r"\1" + "</em>", t)
|
||||||
t = _BOLD.sub("<b>" + r"\1" + "</b>", t)
|
t = _BOLD.sub("<b>" + r"\1" + "</b>", t)
|
||||||
t = _MODULE.sub("<span class='module'>" + r"\1" + "</span>", t)
|
t = _MODULE.sub("<span class='module'>" + r"\1" + "</span>", t)
|
||||||
t = _URL.sub("<a href='" + r"\1" + "'>" + r"\1" + "</a>", t)
|
t = _URL.sub("<a href='" + r"\1" + "'>" + r"\1" + "</a>", t)
|
||||||
t = _CONST.sub("<code>" + r"\1" + "</code>", t)
|
t = _CONST.sub("<code>" + r"\1" + "</code>", t)
|
||||||
|
|
||||||
return t
|
return t
|
||||||
|
|
||||||
def json_ify(text):
|
def json_ify(text):
|
||||||
|
@ -105,9 +108,13 @@ def rst_ify(text):
|
||||||
|
|
||||||
return t
|
return t
|
||||||
|
|
||||||
|
_MARKDOWN = re.compile(r"[*_`]")
|
||||||
|
|
||||||
def markdown_ify(text):
|
def markdown_ify(text):
|
||||||
|
|
||||||
t = _ITALIC.sub("_" + r"\1" + "_", text)
|
t = cgi.escape(text)
|
||||||
|
t = _MARKDOWN.sub(r"\\\g<0>", t)
|
||||||
|
t = _ITALIC.sub("_" + r"\1" + "_", t)
|
||||||
t = _BOLD.sub("**" + r"\1" + "**", t)
|
t = _BOLD.sub("**" + r"\1" + "**", t)
|
||||||
t = _MODULE.sub("*" + r"\1" + "*", t)
|
t = _MODULE.sub("*" + r"\1" + "*", t)
|
||||||
t = _URL.sub("[" + r"\1" + "](" + r"\1" + ")", t)
|
t = _URL.sub("[" + r"\1" + "](" + r"\1" + ")", t)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
## @{ module }@
|
## @{ module | jpfunc }@
|
||||||
|
|
||||||
{# ------------------------------------------
|
{# ------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -11,7 +11,8 @@ New in version @{ version_added }@.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% for desc in description -%}
|
{% for desc in description -%}
|
||||||
@{ desc | jpfunc }@
|
@{ desc | jpfunc }@
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if options -%}
|
{% if options -%}
|
||||||
|
@ -35,6 +36,10 @@ New in version @{ version_added }@.
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if examples or plainexamples %}
|
||||||
|
#### Examples
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% for example in examples %}
|
{% for example in examples %}
|
||||||
{% if example['description'] %}
|
{% if example['description'] %}
|
||||||
* @{ example['description'] | jpfunc }@
|
* @{ example['description'] | jpfunc }@
|
||||||
|
|
Loading…
Reference in a new issue