From 15f82b4eafa5f9cde030a0a626a31bb7b130606f Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Wed, 8 Apr 2015 15:56:05 -0700 Subject: [PATCH] Clean up rendering and complete types and refs --- autoapi/base.py | 3 +- autoapi/dotnet.py | 86 ++++++++++++------------ autoapi/templates/base/base.rst | 6 +- autoapi/templates/dotnet/class.rst | 53 +++++---------- autoapi/templates/dotnet/constructor.rst | 4 +- autoapi/templates/dotnet/delegate.rst | 8 +-- autoapi/templates/dotnet/enum.rst | 44 +++++++++--- autoapi/templates/dotnet/event.rst | 12 ++++ autoapi/templates/dotnet/field.rst | 12 ++++ autoapi/templates/dotnet/interface.rst | 45 ++++++++++--- autoapi/templates/dotnet/method.rst | 4 +- autoapi/templates/dotnet/namespace.rst | 17 +++-- autoapi/templates/dotnet/property.rst | 4 +- autoapi/templates/dotnet/struct.rst | 42 +++++++++--- autoapi/utils.py | 6 +- 15 files changed, 216 insertions(+), 130 deletions(-) create mode 100644 autoapi/templates/dotnet/event.rst create mode 100644 autoapi/templates/dotnet/field.rst diff --git a/autoapi/base.py b/autoapi/base.py index 512d07a..abed64b 100644 --- a/autoapi/base.py +++ b/autoapi/base.py @@ -5,7 +5,6 @@ class AutoAPIBase(object): language = 'base' type = 'base' - header = '-' def __init__(self, obj): self.obj = obj @@ -16,7 +15,7 @@ class AutoAPIBase(object): template = env.get_template( '{language}/{type}.rst'.format(language=self.language, type=self.type) ) - ctx.update(**self.obj) + ctx.update(**self.__dict__) return template.render(**ctx) diff --git a/autoapi/dotnet.py b/autoapi/dotnet.py index 439149b..6b75d54 100644 --- a/autoapi/dotnet.py +++ b/autoapi/dotnet.py @@ -10,76 +10,76 @@ class DotNetBase(AutoAPIBase): def __init__(self, obj): super(DotNetBase, self).__init__(obj) - self.name = obj['qualifiedName']['CSharp'] - if hasattr(obj, 'sort'): + # Always exist + self.id = obj['id'] + self.type = obj['type'] + # Use name or id + try: + self.name = obj['qualifiedName']['CSharp'] + except: + self.name = self.id + self.short_name = self.name.split('.')[-1] + self.namespace = self.name.split('.')[0] + + # Optional + self.summary = obj.get('summary', '') + if 'syntax' in obj: + self.syntax = obj['syntax']['content']['CSharp'] + else: + self.syntax = '' + self.children = obj.get('items', []) + if self.children: + self.item_map = defaultdict(list) self.sort() - def render(self, ctx=None): - if not ctx: - ctx = {} - added_ctx = { - 'underline': len(self.name) * self.header - } - added_ctx.update(**ctx) - return super(DotNetBase, self).render(ctx=added_ctx) + def sort(self): + from .utils import classify + for item in self.children: + if 'type' not in item: + print "Missing Type: %s" % item + continue + classified = classify(item, 'dotnet') + self.item_map[item['type']].append(classified) class DotNetNamespace(DotNetBase): type = 'namespace' - header = '=' + class DotNetMethod(DotNetBase): type = 'method' - header = '-' + class DotNetProperty(DotNetBase): type = 'property' - header = '-' + class DotNetEnum(DotNetBase): type = 'enum' - header = '-' + class DotNetStruct(DotNetBase): type = 'struct' - header = '-' + class DotNetConstructor(DotNetBase): type = 'constructor' - header = '-' + class DotNetInterface(DotNetBase): type = 'interface' - header = '-' + class DotNetDelegate(DotNetBase): type = 'delegate' - header = '-' -class DotNetClass(object): - def __init__(self, obj): - self.obj = obj - self.item_map = defaultdict(list) - self.sort() +class DotNetClass(DotNetBase): + type = 'class' - def sort(self): - from .utils import classify - for item in self.obj.get('items', []): - if 'type' not in item: - print "Missing Type: %s" % item - continue - self.item_map[item['type']].append(classify(item, 'dotnet')) - - def render(self, indent=4): - # print "Rendering class %s" % self.obj['name'] - self.obj['underline'] = len(self.obj['qualifiedName']['CSharp']) * "#" - template = env.get_template('dotnet/class.rst') - - ctx = self.obj - ctx.update(dict( - ctors=self.item_map['Constructor'], - methods=self.item_map['Method'], - attributes=self.item_map['Property'], - )) - return template.render(**ctx) + +class DotNetField(DotNetBase): + type = 'field' + +class DotNetEvent(DotNetBase): + type = 'event' diff --git a/autoapi/templates/base/base.rst b/autoapi/templates/base/base.rst index 3f3900f..967e4c4 100644 --- a/autoapi/templates/base/base.rst +++ b/autoapi/templates/base/base.rst @@ -1,11 +1,11 @@ -.. {{ type.lower() }}:: {{ name }} +.. {{ obj.type.lower() }}:: {{ obj.name }} {% if summary %} - {{ summary }} + {{ obj.summary }} {% endif %} .. code-block:: csharp - {{ syntax.content.CSharp }} + {{ obj.syntax.content.CSharp }} diff --git a/autoapi/templates/dotnet/class.rst b/autoapi/templates/dotnet/class.rst index 28bc3ec..c118895 100644 --- a/autoapi/templates/dotnet/class.rst +++ b/autoapi/templates/dotnet/class.rst @@ -1,7 +1,7 @@ -{{ name.CSharp }} -{{ underline }} +{{ short_name }} {{ type.title()}} +{{ "=" * (short_name|length + type|length + 1) }} -.. dn:class:: {{ qualifiedName.CSharp }} +.. dn:class:: {{ name }} Summary ------- @@ -12,51 +12,30 @@ Inheritance Hierarchy --------------------- {% for item in inheritance %} -* {{ item.id }} +* :ref:`{{ item.id }}` {% endfor %} Syntax +------ .. code-block:: csharp - {{ syntax.content.CSharp }} + {{ syntax }} -Class Information ------------------ +{% if item_map %} - {% if ctors %} - - {% for ctor in ctors %} - - {% macro render() %}{{ ctor.render() }}{% endmacro %} - {{ render()|indent(3) }} - - {%- endfor %} - - {% endif %} - - - {% if methods %} - - {% for method in methods %} - - {% macro render() %}{{ method.render() }}{% endmacro %} - {{ render()|indent(3) }} - - {%- endfor %} - - {% endif %} +{% for obj_type, obj_list in item_map.items() %} +{{ obj_type }} +{{ "-" * obj_type|length }} +{% for obj_item in obj_list %} +{% macro render() %}{{ obj_item.render() }}{% endmacro %} +{{ render()|indent(0) }} +{% endfor %} - {% if methods %} - - {% for method in attributes %} +{% endfor %} - {% macro render() %}{{ method.render() }}{% endmacro %} - {{ render()|indent(3) }} - - {%- endfor %} +{% endif %} - {% endif %} diff --git a/autoapi/templates/dotnet/constructor.rst b/autoapi/templates/dotnet/constructor.rst index 1d37732..f6924be 100644 --- a/autoapi/templates/dotnet/constructor.rst +++ b/autoapi/templates/dotnet/constructor.rst @@ -1,4 +1,4 @@ -.. dn:{{ type.lower() }}:: {{ qualifiedName.CSharp }} +.. dn:{{ type.lower() }}:: {{ name }} {% if summary %} @@ -9,4 +9,4 @@ .. code-block:: csharp - {{ syntax.content.CSharp }} + {{ syntax }} diff --git a/autoapi/templates/dotnet/delegate.rst b/autoapi/templates/dotnet/delegate.rst index a017795..710051c 100644 --- a/autoapi/templates/dotnet/delegate.rst +++ b/autoapi/templates/dotnet/delegate.rst @@ -1,7 +1,7 @@ -{{ name.CSharp }} -{{ underline }} +{{ short_name }} +{{ "=" * short_name|length }} -.. dn:delegate:: {{ qualifiedName.CSharp }} +.. dn:delegate:: {{ name }} {% if summary %} @@ -12,4 +12,4 @@ .. code-block:: csharp - {{ syntax.content.CSharp }} + {{ syntax }} diff --git a/autoapi/templates/dotnet/enum.rst b/autoapi/templates/dotnet/enum.rst index bde3683..482bf8e 100644 --- a/autoapi/templates/dotnet/enum.rst +++ b/autoapi/templates/dotnet/enum.rst @@ -1,13 +1,39 @@ -{{ name.CSharp }} -{{ underline }} +{{ short_name }} {{ type.title()}} +{{ "=" * (short_name|length + type|length + 1) }} -.. dn:enumeration:: {{ qualifiedName.CSharp }} +.. dn:enumeration:: {{ name }} - {% if summary %} - {% macro render() %}{{ summary }}{% endmacro %} - {{ render()|indent(4) }} - {% endif %} +Summary +------- - .. code-block:: csharp +{{ summary }} - {{ syntax.content.CSharp }} +Inheritance Hierarchy +--------------------- + +{% for item in inheritance %} +* :ref:`{{ item.id }}` +{% endfor %} + +Syntax +------ + +.. code-block:: csharp + + {{ syntax }} + +{% if item_map %} + +{% for obj_type, obj_list in item_map.items() %} + +{{ obj_type }} +{{ "-" * obj_type|length }} + +{% for obj_item in obj_list %} +{% macro render() %}{{ obj_item.render() }}{% endmacro %} +{{ render()|indent(0) }} +{% endfor %} + +{% endfor %} + +{% endif %} \ No newline at end of file diff --git a/autoapi/templates/dotnet/event.rst b/autoapi/templates/dotnet/event.rst new file mode 100644 index 0000000..54d85bb --- /dev/null +++ b/autoapi/templates/dotnet/event.rst @@ -0,0 +1,12 @@ +.. dn:{{ type.lower() }}:: {{ name }} + + {% if summary %} + + {% macro render() %}{{ summary }}{% endmacro %} + {{ render()|indent(4) }} + + {% endif %} + + .. code-block:: csharp + + {{ syntax }} diff --git a/autoapi/templates/dotnet/field.rst b/autoapi/templates/dotnet/field.rst new file mode 100644 index 0000000..54d85bb --- /dev/null +++ b/autoapi/templates/dotnet/field.rst @@ -0,0 +1,12 @@ +.. dn:{{ type.lower() }}:: {{ name }} + + {% if summary %} + + {% macro render() %}{{ summary }}{% endmacro %} + {{ render()|indent(4) }} + + {% endif %} + + .. code-block:: csharp + + {{ syntax }} diff --git a/autoapi/templates/dotnet/interface.rst b/autoapi/templates/dotnet/interface.rst index 2164602..1469c7f 100644 --- a/autoapi/templates/dotnet/interface.rst +++ b/autoapi/templates/dotnet/interface.rst @@ -1,13 +1,40 @@ -{{ name.CSharp }} -{{ underline }} +{{ short_name }} {{ type.title()}} +{{ "=" * short_name|length }}{{ "=" * type|length }}= -.. dn:{{ type.lower() }}:: {{ qualifiedName.CSharp }} +.. dn:interface:: {{ name }} - {% if summary %} - {% macro render() %}{{ summary }}{% endmacro %} - {{ render()|indent(4) }} - {% endif %} +Summary +------- - .. code-block:: csharp +{{ summary }} - {{ syntax.content.CSharp }} +Inheritance Hierarchy +--------------------- + +{% for item in inheritance %} +* :ref:`{{ item.id }}` +{% endfor %} + +Syntax +------ + +.. code-block:: csharp + + {{ syntax }} + + +{% if item_map %} + +{% for obj_type, obj_list in item_map.items() %} + +{{ obj_type }} +{{ "-" * obj_type|length }} + +{% for obj_item in obj_list %} +{% macro render() %}{{ obj_item.render() }}{% endmacro %} +{{ render()|indent(0) }} +{% endfor %} + +{% endfor %} + +{% endif %} \ No newline at end of file diff --git a/autoapi/templates/dotnet/method.rst b/autoapi/templates/dotnet/method.rst index 53cf668..54d85bb 100644 --- a/autoapi/templates/dotnet/method.rst +++ b/autoapi/templates/dotnet/method.rst @@ -1,4 +1,4 @@ -.. dn:{{ type.lower() }}:: {{ qualifiedName.CSharp }} +.. dn:{{ type.lower() }}:: {{ name }} {% if summary %} @@ -9,4 +9,4 @@ .. code-block:: csharp - {{ syntax.content.CSharp }} + {{ syntax }} diff --git a/autoapi/templates/dotnet/namespace.rst b/autoapi/templates/dotnet/namespace.rst index 58a55f6..cebcb6e 100644 --- a/autoapi/templates/dotnet/namespace.rst +++ b/autoapi/templates/dotnet/namespace.rst @@ -1,18 +1,21 @@ -{{ name.CSharp }} Namespace -{{ underline }}{{ underline }} +{{ short_name }} {{ type.title()}} +{{ "=" * short_name|length }}{{ "=" * type|length }}= Tree: +{% if children %} + .. toctree:: :hidden: - {% for obj in items %} - /autoapi/{{ obj.type }}/{{ obj.id.split('.')[-1] }} {% endfor %} + {% for item in children %} + /autoapi/{{ item.type }}/{{ item.id.split('.')[-1] }} {% endfor %} +{% endif %} Table: -{% if items %} +{% if children %} .. list-table:: Classes :widths: 20, 80 @@ -20,8 +23,8 @@ Table: * - Class - Description -{% for obj in items %} {% macro render() %}{{ obj.summary }}{% endmacro %} - * - :dn:{{ obj.type.lower().replace('class', 'cls').replace('interface', 'iface') }}:`{{ obj.id }}` +{% for item in children %} {% macro render() %}{{ item.summary }}{% endmacro %} + * - :dn:{{ item.type.lower().replace('class', 'cls').replace('interface', 'iface').replace('delegate', 'del') }}:`{{ item.id }}` - {{ render()|indent(7) }} {% endfor %} diff --git a/autoapi/templates/dotnet/property.rst b/autoapi/templates/dotnet/property.rst index 53cf668..54d85bb 100644 --- a/autoapi/templates/dotnet/property.rst +++ b/autoapi/templates/dotnet/property.rst @@ -1,4 +1,4 @@ -.. dn:{{ type.lower() }}:: {{ qualifiedName.CSharp }} +.. dn:{{ type.lower() }}:: {{ name }} {% if summary %} @@ -9,4 +9,4 @@ .. code-block:: csharp - {{ syntax.content.CSharp }} + {{ syntax }} diff --git a/autoapi/templates/dotnet/struct.rst b/autoapi/templates/dotnet/struct.rst index e808151..9f8fc99 100644 --- a/autoapi/templates/dotnet/struct.rst +++ b/autoapi/templates/dotnet/struct.rst @@ -1,15 +1,39 @@ -{{ name.CSharp }} -{{ underline }} +{{ short_name }} {{ type.title()}} +{{ "=" * short_name|length }}{{ "=" * type|length }}= -.. dn:structure:: {{ qualifiedName.CSharp }} +.. dn:structure:: {{ name }} - {% if summary %} +Summary +------- - {% macro render() %}{{ summary }}{% endmacro %} - {{ render()|indent(4) }} +{{ summary }} - {% endif %} +Inheritance Hierarchy +--------------------- - .. code-block:: csharp +{% for item in inheritance %} +* :ref:`{{ item.id }}` +{% endfor %} - {{ syntax.content.CSharp }} +Syntax +------ + +.. code-block:: csharp + + {{ syntax }} + +{% if item_map %} + +{% for obj_type, obj_list in item_map.items() %} + +{{ obj_type }} +{{ "-" * obj_type|length }} + +{% for obj_item in obj_list %} +{% macro render() %}{{ obj_item.render() }}{% endmacro %} +{{ render()|indent(0) }} +{% endfor %} + +{% endfor %} + +{% endif %} \ No newline at end of file diff --git a/autoapi/utils.py b/autoapi/utils.py index ff5c360..7405aa6 100644 --- a/autoapi/utils.py +++ b/autoapi/utils.py @@ -2,7 +2,7 @@ from .base import UnknownType from .dotnet import ( DotNetNamespace, DotNetClass, DotNetMethod, DotNetProperty, DotNetEnum, DotNetConstructor, DotNetStruct, DotNetInterface, - DotNetDelegate + DotNetDelegate, DotNetField, DotNetEvent ) from .python import PythonModule, PythonClass, PythonFunction @@ -37,4 +37,8 @@ def classify(obj, obj_type): return DotNetInterface(obj) if obj['type'] == 'Delegate': return DotNetDelegate(obj) + if obj['type'] == 'Field': + return DotNetField(obj) + if obj['type'] == 'Event': + return DotNetEvent(obj) return UnknownType(obj)