diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2020-04-26 13:17:15 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2020-04-28 12:09:54 +0100 |
commit | f1e14a68ef3c056fab85ee43f331c1fa8b40b932 (patch) | |
tree | 215afdf962fb072991843440941478e674991172 /giscanner/docwriter.py | |
parent | bb364bd25d50215b0c40d98ba5ecf2aa779e53a2 (diff) | |
download | gobject-introspection-issue-328.tar.gz |
Add support for element-type to GListModelissue-328
GListModel is an interface for creating typed, list-like containers. The
data stored is GObject instances, but it's useful to be able to annotate
the actual type, for both documentation and code generation purposes.
The annotation should be optional, to maintain backward compatibility.
Fixes: #328
Diffstat (limited to 'giscanner/docwriter.py')
-rw-r--r-- | giscanner/docwriter.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/giscanner/docwriter.py b/giscanner/docwriter.py index 786da80d..e4a8f7c5 100644 --- a/giscanner/docwriter.py +++ b/giscanner/docwriter.py @@ -793,7 +793,11 @@ class DocFormatterPython(DocFormatterIntrospectableBase): return fundamental_types.get(name, name) def format_type(self, type_, link=False): - if isinstance(type_, (ast.List, ast.Array)): + if isinstance(type_, ast.List): + if type_.name == 'Gio.ListModel': + return 'Gio.ListModel(item_type=' + self.format_type(type_.element_type) + ')' + return '[' + self.format_type(type_.element_type) + ']' + elif isinstance(type_, ast.Array): return '[' + self.format_type(type_.element_type) + ']' elif isinstance(type_, ast.Map): return '{%s: %s}' % (self.format_type(type_.key_type), @@ -930,10 +934,14 @@ class DocFormatterGjs(DocFormatterIntrospectableBase): return fundamental_types.get(name, name) def format_type(self, type_, link=False): - if isinstance(type_, ast.Array) and \ - type_.element_type.target_fundamental in ('gint8', 'guint8'): - return 'ByteArray' - elif isinstance(type_, (ast.List, ast.Array)): + if isinstance(type_, ast.Array): + if type_.element_type.target_fundamental in ('gint8', 'guint8'): + return 'ByteArray' + else: + return 'Array(' + self.format_type(type_.element_type, link) + ')' + elif isinstance(type_, ast.List): + if type_.name == 'Gio.ListModel': + return 'Gio.ListModel({item_type: ' + self.format_type(type_.element_type) + '})' return 'Array(' + self.format_type(type_.element_type, link) + ')' elif isinstance(type_, ast.Map): return '{%s: %s}' % (self.format_type(type_.key_type, link), |