diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2013-01-30 10:07:59 -0500 |
---|---|---|
committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2013-02-01 19:47:40 -0500 |
commit | edec66f3826b160065db575c3dc9c81031dfb075 (patch) | |
tree | da49325e371e72828a32fddb99d8b5aca0f75766 /giscanner/mallardwriter.py | |
parent | 9d1eb5f5c937d1bd687828ee897b7cd42e470571 (diff) | |
download | gobject-introspection-edec66f3826b160065db575c3dc9c81031dfb075.tar.gz |
mallardwriter: Parse %ENUM_FIELDs
Diffstat (limited to 'giscanner/mallardwriter.py')
-rw-r--r-- | giscanner/mallardwriter.py | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/giscanner/mallardwriter.py b/giscanner/mallardwriter.py index 74bb3d67..b7385fed 100644 --- a/giscanner/mallardwriter.py +++ b/giscanner/mallardwriter.py @@ -150,7 +150,7 @@ class DocstringScanner(TemplatedScanner): ('property', r'#<<type_name:alpha>>:(<<property_name:alpha_dash>>)'), ('signal', r'#<<type_name:alpha>>::(<<signal_name:alpha_dash>>)'), ('type_name', r'#(<<type_name:alpha>>)'), - ('fundamental', r'%(<<fundamental:alpha>>)'), + ('enum_value', r'%(<<member_name:alpha>>)'), ('parameter', r'@<<param_name:alpha>>'), ('function_call', r'<<symbol_name:alpha>>\(\)'), ] @@ -238,12 +238,19 @@ class MallardFormatter(object): return self.format_xref(type_) - def _process_fundamental(self, node, match, props): - fundamental = props['fundamental'] + def _process_enum_value(self, node, match, props): + member_name = props['member_name'] + try: - return '<code>%s</code>' % (self.fundamentals[fundamental],) + return '<code>%s</code>' % (self.fundamentals[member_name], ) except KeyError: - return match + pass + + enum_value = self._resolve_symbol(member_name) + if enum_value: + return self.format_xref(enum_value) + + return match def _process_parameter(self, node, match, props): try: @@ -268,7 +275,7 @@ class MallardFormatter(object): 'property': self._process_property, 'signal': self._process_signal, 'type_name': self._process_type_name, - 'fundamental': self._process_fundamental, + 'enum_value': self._process_enum_value, 'parameter': self._process_parameter, 'function_call': self._process_function_call, } @@ -305,7 +312,11 @@ class MallardFormatter(object): return make_page_id(node) def format_xref(self, node): - return '<link xref="%s">%s</link>' % (make_page_id(node), self.format_page_name(node)) + if isinstance(node, ast.Member): + # Enum/BitField members are linked to the main enum page. + return self.format_xref(node.parent) + '.' + node.name + else: + return '<link xref="%s">%s</link>' % (make_page_id(node), self.format_page_name(node)) def format_property_flags(self, property_, construct_only=False): flags = [] |