summaryrefslogtreecommitdiff
path: root/giscanner/mallardwriter.py
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2013-01-30 10:07:59 -0500
committerJasper St. Pierre <jstpierre@mecheye.net>2013-02-01 19:47:40 -0500
commitedec66f3826b160065db575c3dc9c81031dfb075 (patch)
treeda49325e371e72828a32fddb99d8b5aca0f75766 /giscanner/mallardwriter.py
parent9d1eb5f5c937d1bd687828ee897b7cd42e470571 (diff)
downloadgobject-introspection-edec66f3826b160065db575c3dc9c81031dfb075.tar.gz
mallardwriter: Parse %ENUM_FIELDs
Diffstat (limited to 'giscanner/mallardwriter.py')
-rw-r--r--giscanner/mallardwriter.py25
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 = []