[gi-docgen/ebassi/parse-array: 4/5] generate: Ensure that properties have the right type
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gi-docgen/ebassi/parse-array: 4/5] generate: Ensure that properties have the right type
- Date: Tue, 9 Nov 2021 23:02:50 +0000 (UTC)
commit f8c02fe25b4789bd8a755bd11bb68a12782fd8da
Author: Emmanuele Bassi <ebassi gnome org>
Date: Tue Nov 9 22:50:18 2021 +0000
generate: Ensure that properties have the right type
We're falling back to the property name instead of the property's type
name; we should handle simple and complex types in the same way.
gidocgen/gdgenerate.py | 58 +++++++++++++++-------------------
gidocgen/templates/basic/property.html | 2 +-
2 files changed, 27 insertions(+), 33 deletions(-)
---
diff --git a/gidocgen/gdgenerate.py b/gidocgen/gdgenerate.py
index 7098229..e95a400 100644
--- a/gidocgen/gdgenerate.py
+++ b/gidocgen/gdgenerate.py
@@ -383,8 +383,6 @@ class TemplateConstant:
class TemplateProperty:
def __init__(self, namespace, type_, prop):
self.name = prop.name
- self.type_name = prop.target.name
- self.type_cname = prop.target.ctype
self.is_fundamental = prop.target.is_fundamental
self.is_array = isinstance(prop.target, gir.ArrayType)
self.is_list = isinstance(prop.target, gir.ListType)
@@ -393,19 +391,23 @@ class TemplateProperty:
self.writable = prop.writable
self.construct = prop.construct
self.construct_only = prop.construct_only
- if self.type_cname is None:
- if prop.target.is_fundamental:
- self.type_cname = prop.target.name
- elif self.is_array or self.is_list:
- value_type = prop.target.value_type
- if value_type.name in ['utf8', 'filename']:
- self.type_cname = 'gchar*'
- elif value_type.ctype is None:
- self.type_cname = type_name_to_cname(value_type.name, True)
- else:
- self.type_cname = value_type.ctype
+ if self.is_fundamental:
+ self.type_name = prop.target.name
+ self.type_cname = prop.target.ctype
+ elif self.is_array or self.is_list:
+ value_type = prop.target.value_type
+ if value_type.name in ['utf8', 'filename']:
+ self.type_name = "string[]"
+ self.type_cname = "char*"
+ elif value_type.ctype is not None:
+ self.type_name = value_type.name
+ self.type_cname = value_type.ctype
else:
- self.type_cname = type_name_to_cname(prop.target.name, True)
+ self.type_name = value_type.name
+ self.type_cname = type_name_to_cname(value_type.name, True)
+ else:
+ self.type_name = prop.target.name
+ self.type_cname = prop.target.ctype
if prop.doc is not None:
self.summary = utils.preprocess_docs(prop.doc.content, namespace, summary=True)
self.description = utils.preprocess_docs(prop.doc.content, namespace)
@@ -510,25 +512,17 @@ class TemplateProperty:
if link is not None:
self.attributes["Getter method"] = link
- if self.is_array:
- name = prop.target.value_type.name
- elif self.is_list:
- name = prop.target.value_type.name
- elif self.type_name is not None:
- name = self.type_name
- else:
- name = None
- if name is not None:
- if self.is_fundamental:
- self.link = f"<code>{self.type_cname}</code>"
- elif self.is_array or self.is_list:
- self.link = f"<code>{self.type_cname}</code>"
+ if self.is_fundamental:
+ self.link = f"<code>{self.type_cname}</code>"
+ elif self.is_array or self.is_list:
+ self.link = f"<code>{self.type_cname}</code>"
+ elif prop.target.name is not None:
+ name = prop.target.name
+ if '.' in name:
+ ns, name = name.split('.')
else:
- if '.' in name:
- ns, name = name.split('.')
- else:
- ns = namespace.name
- self.link = gen_type_link(namespace.repository, ns, name, self.type_cname)
+ ns = namespace.name
+ self.link = gen_type_link(namespace.repository, ns, name, self.type_cname)
@property
def c_decl(self):
diff --git a/gidocgen/templates/basic/property.html b/gidocgen/templates/basic/property.html
index f4fd008..0e6eb8d 100644
--- a/gidocgen/templates/basic/property.html
+++ b/gidocgen/templates/basic/property.html
@@ -47,7 +47,7 @@ SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
</h4>
<div class="docblock">
- <pre><code>{{ property.c_decl|safe }}</code></pre>
+ <pre><code>{{ property.c_decl }}</code></pre>
</div>
</div>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]