[gobject-introspection] scanner: Don't throw away blank lines in the docs
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gobject-introspection] scanner: Don't throw away blank lines in the docs
- Date: Sat, 13 Aug 2011 08:28:13 +0000 (UTC)
commit d437ae4ae95bada1305c6b720bb7eb207c7122bf
Author: Colin Walters <walters verbum org>
Date: Fri Aug 12 06:01:56 2011 -0400
scanner: Don't throw away blank lines in the docs
For generating documentation, we actually want to preserve these.
https://bugzilla.gnome.org/show_bug.cgi?id=656389
giscanner/annotationparser.py | 13 ++++++++++---
giscanner/girparser.py | 3 ++-
giscanner/girwriter.py | 2 +-
tests/scanner/Regress-1.0-expected.gir | 13 +++++++++++++
tests/scanner/regress.c | 16 ++++++++++++++++
tests/scanner/regress.h | 2 ++
6 files changed, 44 insertions(+), 5 deletions(-)
---
diff --git a/giscanner/annotationparser.py b/giscanner/annotationparser.py
index ac6430d..0d7672e 100644
--- a/giscanner/annotationparser.py
+++ b/giscanner/annotationparser.py
@@ -492,13 +492,20 @@ class AnnotationParser(object):
lineno = 2
for line in comment[pos+1:].split('\n'):
line = line.lstrip()
- if (not line.startswith('*') or
- self.WHITESPACE_RE.match(line[1:])):
+ if not line.startswith('*'):
+ lineno += 1
+ continue
+ is_whitespace = self.WHITESPACE_RE.match(line[1:]) is not None
+ if parsing_parameters and is_whitespace:
# As soon as we find a line that's just whitespace,
# we're done parsing the parameters.
parsing_parameters = False
lineno += 1
continue
+ elif is_whitespace:
+ comment_lines.append('')
+ lineno += 1
+ continue
line = line[1:].lstrip()
@@ -576,7 +583,7 @@ class AnnotationParser(object):
elif (not is_parameter):
comment_lines.append(line)
lineno += 1
- block.comment = '\n'.join(comment_lines)
+ block.comment = '\n'.join(comment_lines).strip()
block.validate()
self._blocks[block.name] = block
diff --git a/giscanner/girparser.py b/giscanner/girparser.py
index 45a93ed..51de1b1 100644
--- a/giscanner/girparser.py
+++ b/giscanner/girparser.py
@@ -199,7 +199,8 @@ class GIRParser(object):
return
doc = node.find(_corens('doc'))
if doc is not None:
- obj.doc = doc.text
+ if doc.text:
+ obj.doc = doc.text
version = node.attrib.get('version')
if version:
obj.version = version
diff --git a/giscanner/girwriter.py b/giscanner/girwriter.py
index 1da2417..b3b7435 100644
--- a/giscanner/girwriter.py
+++ b/giscanner/girwriter.py
@@ -135,7 +135,7 @@ and/or use gtk-doc annotations. ''')
self.write_tag('attribute', [('name', key), ('value', value)])
if hasattr(node, 'doc') and node.doc:
self.write_tag('doc', [('xml:whitespace', 'preserve')],
- node.doc.strip())
+ node.doc)
def _append_node_generic(self, node, attrs):
if node.skip or not node.introspectable:
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index a19969e..7e0b2e5 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -2342,6 +2342,19 @@ call and can be released on return.</doc>
</parameter>
</parameters>
</function>
+ <function name="test_multiline_doc_comments"
+ c:identifier="regress_test_multiline_doc_comments">
+ <doc xml:whitespace="preserve">This is a function.
+
+It has multiple lines in the documentation.
+
+The sky is blue.
+
+You will give me your credit card number.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
<function name="test_short" c:identifier="regress_test_short">
<return-value transfer-ownership="none">
<type name="gshort" c:type="gshort"/>
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index c6608f4..86927a0 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -3143,6 +3143,22 @@ regress_test_strv_in_gvalue (void)
}
/**
+ * regress_test_multiline_doc_comments:
+ *
+ * This is a function.
+ *
+ * It has multiple lines in the documentation.
+ *
+ * The sky is blue.
+ *
+ * You will give me your credit card number.
+ */
+void
+regress_test_multiline_doc_comments (void)
+{
+}
+
+/**
* regress_introspectable_via_alias:
*
*/
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index 04ebe29..7b8d9de 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -608,6 +608,8 @@ GValue *regress_test_strv_in_gvalue (void);
GObject * _regress_this_is_a_private_symbol (void);
+void regress_test_multiline_doc_comments (void);
+
/**
* RegressSkippedStructure: (skip)
*
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]