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:
Dale Sedivec 2013-06-14 13:27:59 -05:00
parent cf2ddb6f80
commit 7681b1ce68
2 changed files with 16 additions and 4 deletions

View file

@ -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)

View file

@ -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 }@