summaryrefslogtreecommitdiff
path: root/libvaladoc/documentation
diff options
context:
space:
mode:
authorMichael James Gratton <mike@vee.net>2018-01-09 12:30:50 +1100
committerRico Tzschichholz <ricotz@ubuntu.com>2018-01-10 20:46:30 +0100
commitbf7fd434616d21422755f7ec5cddd0b0865d1e7a (patch)
treeefd08a1555edd76847475014d6487c949b7bffd0 /libvaladoc/documentation
parent6f40447623f5baecc86743da0adff04cde4394e3 (diff)
downloadvala-bf7fd434616d21422755f7ec5cddd0b0865d1e7a.tar.gz
libvaladoc: Add support for single line documentation comments
This is useful for example in annotating properties: /** Returns the current state of the frobnocator. */ public State frob { get; set; }; * libvaladoc/documentation/documentationparser.vala (DocumentationParser.init_valadoc_rules): Split Comment rule up into single and multi-line versions. Duplication Paragraph creation and cleanup for single-line comments. https://bugzilla.gnome.org/show_bug.cgi?id=736483
Diffstat (limited to 'libvaladoc/documentation')
-rw-r--r--libvaladoc/documentation/documentationparser.vala37
1 files changed, 27 insertions, 10 deletions
diff --git a/libvaladoc/documentation/documentationparser.vala b/libvaladoc/documentation/documentationparser.vala
index a03480c73..4a9c0c9bd 100644
--- a/libvaladoc/documentation/documentationparser.vala
+++ b/libvaladoc/documentation/documentationparser.vala
@@ -548,6 +548,16 @@ public class Valadoc.DocumentationParser : Object, ResourceLocator {
// Block rules
+ Rule.Action reduce_paragraph = () => {
+ var head = (Paragraph) pop ();
+ ((BlockContent) peek ()).content.add (head);
+
+ Text last_element = head.content.last () as Text;
+ if (last_element != null) {
+ last_element.content._chomp ();
+ }
+ };
+
Rule paragraph =
Rule.seq ({
Rule.option ({
@@ -563,15 +573,7 @@ public class Valadoc.DocumentationParser : Object, ResourceLocator {
})
.set_name ("Paragraph")
.set_start (() => { push (_factory.create_paragraph ()); })
- .set_reduce (() => {
- var head = (Paragraph) pop ();
- ((BlockContent) peek ()).content.add (head);
-
- Text last_element = head.content.last () as Text;
- if (last_element != null) {
- last_element.content._chomp ();
- }
- });
+ .set_reduce (reduce_paragraph);
Rule warning =
Rule.seq ({
@@ -876,7 +878,7 @@ public class Valadoc.DocumentationParser : Object, ResourceLocator {
((Comment) peek ()).taglets.add (head);
});
- Rule comment =
+ Rule ml_comment =
Rule.seq ({
TokenType.EOL,
Rule.option ({
@@ -886,6 +888,21 @@ public class Valadoc.DocumentationParser : Object, ResourceLocator {
Rule.many ({ taglet })
})
})
+ .set_name ("MultiLineComment");
+
+ Rule sl_comment =
+ Rule.seq ({
+ run
+ })
+ .set_start (() => { push (_factory.create_paragraph ()); })
+ .set_reduce (reduce_paragraph)
+ .set_name ("SingleLineComment");
+
+ Rule comment =
+ Rule.one_of ({
+ ml_comment,
+ sl_comment
+ })
.set_name ("Comment")
.set_start (() => { push (_factory.create_comment ()); });