Fix Go documentation generation (#172)

* Correction of the "parameters" accessibility problem in the Go mapper

The "parameters" attributes of the GoPythonMapper class instance was
not accessible from the "output_rst" function used to create the .rst
file. Thanks to this correction, the parameters are now accessible.

* Enhance the template used to genertae the .rst file from the .go source file

This modification allows to create a .rst file compatible with the
last version of Sphinx. Without this correction, the creation of documentation
was not possible. A "make html" command lead to an "AssertionError" Exception.
pull/174/head
Armand BENETEAU 5 years ago committed by Ashley Whetter
parent be324b10bf
commit fa3b0b3f70

@ -123,10 +123,11 @@ class GoPythonMapper(PythonMapperBase):
# Second level
self.imports = obj.get("imports", [])
self.children = []
self.parameters = map(
temp_parameters = map(
lambda n: {"name": n["name"], "type": n["type"].lstrip("*")},
obj.get("parameters", []),
)
self.parameters = list(temp_parameters)
self.docstring = obj.get("doc", "")
# Go Specific

@ -1,26 +1,32 @@
.. go:{{ obj.ref_type }}:: {{ obj.name }}
{% if obj.type == 'func' %}
{# Creating the parameters line #}
{% set ns = namespace(tmpstring='') %}
{% set argjoin = joiner(', ') %}
({% for param in obj.parameters %}
{{ argjoin() }}{{ param.name }} {{ param.type }}
{% endfor %})
{% for param in obj.parameters %}
{% set ns.tmpstring = ns.tmpstring ~ argjoin() ~ param.name ~ ' ' ~ param.type %}
{% endfor %}
.. {{ obj.ref_type }}:: {{ obj.name }}({{ ns.tmpstring }})
{% else %}
.. go:{{ obj.ref_type }}:: {{ obj.name }}
{% endif %}
{% macro render() %}{{ obj.docstring }}{% endmacro %}
{{ render()|indent(4) }}
{% macro render() %}{{ obj.docstring }}{% endmacro %}
{{ render()|indent(4) }}
{# Don't define parameter description here, that can be done in the block
above #}
{% for param in obj.parameters %}
:type {{ param.name }}: {{ param.type }}
{# Don't define parameter description here, that can be done in the block
above #}
{% for param in obj.parameters %}
:param {{ param.name }}:
:type {{ param.name }}: {{ param.type }}
{% endfor %}
{% if obj.returns %}
:rtype: {{ obj.returns.type }}
{% endif %}
{% if obj.children %}
{% for child in obj.children|sort %}
{% macro render_child() %}{{ child.render() }}{% endmacro %}
{{ render_child()|indent(4) }}
{% endfor %}
{% if obj.returns %}
:rtype: {{ obj.returns.type }}
{% endif %}
{% endif %}
{% if obj.children %}
{% for child in obj.children|sort %}
{% macro render_child() %}{{ child.render() }}{% endmacro %}
{{ render_child()|indent(4) }}
{% endfor %}
{% endif %}

Loading…
Cancel
Save