From 5bd82c2883a9964b27ca344f12776f22713ffa77 Mon Sep 17 00:00:00 2001 From: Kai Huuhko Date: Tue, 17 Jun 2014 12:41:42 +0300 Subject: [PATCH] Eolian: Add text replacements for docstrings --- scripts/eolian_generate.py | 50 ++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/scripts/eolian_generate.py b/scripts/eolian_generate.py index c0f5fa4..c93b94a 100755 --- a/scripts/eolian_generate.py +++ b/scripts/eolian_generate.py @@ -26,6 +26,21 @@ eolian.init() DOCSTRINGS_ENABLED = True +import re +docstring_replacements = ( + (re.compile(r"@brief "), r""), + (re.compile(r"@ingroup .+", re.S), r""), + (re.compile(r"@see (.+)(?!@)"), r":see: \1"), + (re.compile(r"@return "), r":return: "), + (re.compile(r"@(note|warning) "), r".. \1:: "), + (re.compile(r"@(p|c) (\w+)"), r"``\2``"), + (re.compile(r"@(b) (\w+)"), r"**\2**"), + (re.compile(r"@(i) (\w+)"), r"*\2*"), + (re.compile(r"EINA_TRUE"), r"True"), + (re.compile(r"EINA_FALSE"), r"False"), + (re.compile(r"NULL"), r"None"), + ) + complex_types = ( "Eina_List" ) @@ -91,23 +106,18 @@ class Generator(object): else: self.write('"""') for docs in docstrings: - if docs.startswith("- "): + if docs.startswith("- ") or \ + docs.startswith(".. ") or \ + docs.startswith(":"): self.write( docs, wrapped=True, - #i_ind=self.level * self.tab + "- ", s_ind=self.level * self.tab + " " ) elif docs.startswith(" - "): self.write( docs, wrapped=True, - #i_ind=self.level * self.tab + " - ", s_ind=self.level * self.tab + " " ) - elif docs.startswith(":"): - self.write( - docs, wrapped=True, - s_ind=self.level * self.tab + " " - ) else: self.write(docs, wrapped=True) self.write('"""') @@ -179,8 +189,11 @@ class Method(object): if func_desc: func_desc = func_desc.split("\n\n") for desc in func_desc: - self.docs.append(desc) - self.docs.append("") + for pat, repl in docstring_replacements: + desc = pat.sub(repl, desc) + if desc: + self.docs.append(desc) + self.docs.append("") for p in func.parameters_list: pdir, ptype, name, desc = p.information @@ -302,8 +315,11 @@ class Property(object): if func_desc: func_desc = func_desc.split("\n\n") for desc in func_desc: - self.docs.append(desc) - self.docs.append("") + for pat, repl in docstring_replacements: + desc = pat.sub(repl, desc) + if desc: + self.docs.append(desc) + self.docs.append("") self.getter = None self.setter = None @@ -437,9 +453,13 @@ class Class(object): desc = self.cls.description if desc: - desc = desc.replace("\n", " ").strip() - self.docs.append(desc) - self.docs.append("") + desc = desc.split("\n\n") + for d in desc: + for pat, repl in docstring_replacements: + d = pat.sub(repl, d) + if d: + self.docs.append(d) + self.docs.append("") for k, v in ( type(self.cls).__dict__.items()