[vala/0.38] libvaladoc: Add support for single line documentation comments



commit bf7fd434616d21422755f7ec5cddd0b0865d1e7a
Author: Michael James Gratton <mike vee net>
Date:   Tue Jan 9 12:30:50 2018 +1100

    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

 libvaladoc/documentation/documentationparser.vala |   37 +++++++++++++++------
 1 files changed, 27 insertions(+), 10 deletions(-)
---
diff --git a/libvaladoc/documentation/documentationparser.vala 
b/libvaladoc/documentation/documentationparser.vala
index a03480c..4a9c0c9 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 ()); });
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]