diff options
author | Florian Brosch <flo.brosch@gmail.com> | 2014-08-23 04:26:59 +0200 |
---|---|---|
committer | Florian Brosch <flo.brosch@gmail.com> | 2014-08-29 15:52:00 +0200 |
commit | 5257a46ff98a481641a7c9b86e9c4e6dd2981632 (patch) | |
tree | 78ee6ed3b353ba8af0030dfc623de014de4ba458 | |
parent | a4ea5ec772783547025169e51f3471b728bcf881 (diff) | |
download | vala-5257a46ff98a481641a7c9b86e9c4e6dd2981632.tar.gz |
Split process-comments into parse and check runs
-rw-r--r-- | src/libvaladoc/api/enumvalue.vala | 15 | ||||
-rw-r--r-- | src/libvaladoc/api/errorcode.vala | 15 | ||||
-rw-r--r-- | src/libvaladoc/api/item.vala | 6 | ||||
-rw-r--r-- | src/libvaladoc/api/member.vala | 19 | ||||
-rw-r--r-- | src/libvaladoc/api/namespace.vala | 17 | ||||
-rw-r--r-- | src/libvaladoc/api/node.vala | 17 | ||||
-rw-r--r-- | src/libvaladoc/api/property.vala | 24 | ||||
-rw-r--r-- | src/libvaladoc/api/sourcefile.vala | 1 | ||||
-rw-r--r-- | src/libvaladoc/api/tree.vala | 52 | ||||
-rw-r--r-- | src/libvaladoc/api/typesymbol.vala | 15 | ||||
-rw-r--r-- | src/libvaladoc/content/comment.vala | 10 | ||||
-rw-r--r-- | src/libvaladoc/content/page.vala | 16 | ||||
-rw-r--r-- | src/libvaladoc/documentation/documentationparser.vala | 12 | ||||
-rw-r--r-- | src/libvaladoc/documentation/gtkdoccommentparser.vala | 1 | ||||
-rw-r--r-- | src/libvaladoc/documentation/gtkdocmarkdownparser.vala | 2 | ||||
-rw-r--r-- | src/libvaladoc/documentation/wiki.vala | 36 |
16 files changed, 210 insertions, 48 deletions
diff --git a/src/libvaladoc/api/enumvalue.vala b/src/libvaladoc/api/enumvalue.vala index b71559533..34804ff55 100644 --- a/src/libvaladoc/api/enumvalue.vala +++ b/src/libvaladoc/api/enumvalue.vala @@ -55,7 +55,7 @@ public class Valadoc.Api.EnumValue: Symbol { /** * {@inheritDoc} */ - internal override void process_comments (Settings settings, DocumentationParser parser) { + internal override void parse_comments (Settings settings, DocumentationParser parser) { if (documentation != null) { return ; } @@ -64,7 +64,18 @@ public class Valadoc.Api.EnumValue: Symbol { documentation = parser.parse (this, source_comment); } - base.process_comments (settings, parser); + base.parse_comments (settings, parser); + } + + /** + * {@inheritDoc} + */ + internal override void check_comments (Settings settings, DocumentationParser parser) { + if (documentation != null) { + parser.check (this, documentation); + } + + base.check_comments (settings, parser); } /** diff --git a/src/libvaladoc/api/errorcode.vala b/src/libvaladoc/api/errorcode.vala index 71d365fd5..d7cf55128 100644 --- a/src/libvaladoc/api/errorcode.vala +++ b/src/libvaladoc/api/errorcode.vala @@ -45,7 +45,7 @@ public class Valadoc.Api.ErrorCode : Symbol { /** * {@inheritDoc} */ - internal override void process_comments (Settings settings, DocumentationParser parser) { + internal override void parse_comments (Settings settings, DocumentationParser parser) { if (documentation != null) { return ; } @@ -54,7 +54,18 @@ public class Valadoc.Api.ErrorCode : Symbol { documentation = parser.parse (this, source_comment); } - base.process_comments (settings, parser); + base.parse_comments (settings, parser); + } + + /** + * {@inheritDoc} + */ + internal override void check_comments (Settings settings, DocumentationParser parser) { + if (documentation != null) { + parser.check (this, documentation); + } + + base.check_comments (settings, parser); } /** diff --git a/src/libvaladoc/api/item.vala b/src/libvaladoc/api/item.vala index 125362364..63b994736 100644 --- a/src/libvaladoc/api/item.vala +++ b/src/libvaladoc/api/item.vala @@ -47,9 +47,13 @@ public abstract class Valadoc.Api.Item : Object { this.data = data; } - internal virtual void process_comments (Settings settings, DocumentationParser parser) { + internal virtual void parse_comments (Settings settings, DocumentationParser parser) { } + internal virtual void check_comments (Settings settings, DocumentationParser parser) { + } + + /** * The signature of this item. */ diff --git a/src/libvaladoc/api/member.vala b/src/libvaladoc/api/member.vala index 02754c7b7..b8271c37b 100644 --- a/src/libvaladoc/api/member.vala +++ b/src/libvaladoc/api/member.vala @@ -34,7 +34,11 @@ public abstract class Valadoc.Api.Member : Symbol { this.source_comment = comment; } - internal override void process_comments (Settings settings, DocumentationParser parser) { + + /** + * {@inheritDoc} + */ + internal override void parse_comments (Settings settings, DocumentationParser parser) { if (documentation != null) { return ; } @@ -43,6 +47,17 @@ public abstract class Valadoc.Api.Member : Symbol { documentation = parser.parse (this, source_comment); } - base.process_comments (settings, parser); + base.parse_comments (settings, parser); + } + + /** + * {@inheritDoc} + */ + internal override void check_comments (Settings settings, DocumentationParser parser) { + if (documentation != null) { + parser.check (this, documentation); + } + + base.check_comments (settings, parser); } } diff --git a/src/libvaladoc/api/namespace.vala b/src/libvaladoc/api/namespace.vala index 9bcb233b0..ff19db8ca 100644 --- a/src/libvaladoc/api/namespace.vala +++ b/src/libvaladoc/api/namespace.vala @@ -36,10 +36,11 @@ public class Valadoc.Api.Namespace : Symbol { this.source_comment = comment; } + /** * {@inheritDoc} */ - internal override void process_comments (Settings settings, DocumentationParser parser) { + internal override void parse_comments (Settings settings, DocumentationParser parser) { if (documentation != null) { return ; } @@ -48,9 +49,21 @@ public class Valadoc.Api.Namespace : Symbol { documentation = parser.parse (this, source_comment); } - base.process_comments (settings, parser); + base.parse_comments (settings, parser); + } + + /** + * {@inheritDoc} + */ + internal override void check_comments (Settings settings, DocumentationParser parser) { + if (documentation != null) { + parser.check (this, documentation); + } + + base.check_comments (settings, parser); } + /** * {@inheritDoc} */ diff --git a/src/libvaladoc/api/node.vala b/src/libvaladoc/api/node.vala index 9b2cee7fe..2cbfe7c6a 100644 --- a/src/libvaladoc/api/node.vala +++ b/src/libvaladoc/api/node.vala @@ -116,17 +116,30 @@ public abstract class Valadoc.Api.Node : Item, Browsable, Documentation, Compara /** * {@inheritDoc} */ - internal override void process_comments (Settings settings, DocumentationParser parser) { + internal override void parse_comments (Settings settings, DocumentationParser parser) { do_document = true; foreach (Node node in per_name_children.values) { if (node.is_browsable (settings)) { - node.process_comments (settings, parser); + node.parse_comments (settings, parser); } } } /** + * {@inheritDoc} + */ + internal override void check_comments (Settings settings, DocumentationParser parser) { + + foreach (Node node in per_name_children.values) { + if (node.is_browsable (settings)) { + node.check_comments (settings, parser); + } + } + } + + + /** * Specifies whether this node has at least one visible child with the given type * * @param type a node type diff --git a/src/libvaladoc/api/property.vala b/src/libvaladoc/api/property.vala index 895ddcdf7..556c7c9bf 100644 --- a/src/libvaladoc/api/property.vala +++ b/src/libvaladoc/api/property.vala @@ -125,21 +125,37 @@ public class Valadoc.Api.Property : Member { /** * {@inheritDoc} */ - internal override void process_comments (Settings settings, DocumentationParser parser) { + internal override void parse_comments (Settings settings, DocumentationParser parser) { if (getter != null && getter.is_browsable (settings)) { - getter.process_comments (settings, parser); + getter.parse_comments (settings, parser); } if (setter != null && setter.is_browsable (settings)) { - setter.process_comments (settings, parser); + setter.parse_comments (settings, parser); } - base.process_comments (settings, parser); + base.parse_comments (settings, parser); } /** * {@inheritDoc} */ + internal override void check_comments (Settings settings, DocumentationParser parser) { + if (getter != null && getter.is_browsable (settings)) { + getter.check_comments (settings, parser); + } + + if (setter != null && setter.is_browsable (settings)) { + setter.check_comments (settings, parser); + } + + base.check_comments (settings, parser); + } + + + /** + * {@inheritDoc} + */ protected override Inline build_signature () { var signature = new SignatureBuilder (); diff --git a/src/libvaladoc/api/sourcefile.vala b/src/libvaladoc/api/sourcefile.vala index 8cb1d9612..46d1801be 100644 --- a/src/libvaladoc/api/sourcefile.vala +++ b/src/libvaladoc/api/sourcefile.vala @@ -24,6 +24,7 @@ * Represents a source file */ public class Valadoc.Api.SourceFile : Object { + public Package package { private set; get; diff --git a/src/libvaladoc/api/tree.vala b/src/libvaladoc/api/tree.vala index 493a4b45d..e21770186 100644 --- a/src/libvaladoc/api/tree.vala +++ b/src/libvaladoc/api/tree.vala @@ -36,6 +36,7 @@ public class Valadoc.Api.Tree { private Settings settings; private ErrorReporter reporter; private CTypeResolver _cresolver = null; + private Package _source_package; public void add_package(Package package) { this.packages.add (package); @@ -233,36 +234,63 @@ public class Valadoc.Api.Tree { } private Package? get_source_package () { - foreach (Package pkg in packages) { - if (!pkg.is_package) { - return pkg; + if (_source_package == null) { + foreach (Package pkg in packages) { + if (!pkg.is_package) { + _source_package = pkg; + break; + } } } - return null; + return _source_package; + } + + public void process_comments (DocumentationParser docparser) { + parse_comments (docparser); + check_comments (docparser); } - private void process_wiki (DocumentationParser docparser) { - this.wikitree = new WikiPageTree(reporter, settings); + private void parse_wiki (DocumentationParser docparser) { + this.wikitree = new WikiPageTree (); var pkg = get_source_package (); if (pkg != null) { - wikitree.create_tree (docparser, pkg, reporter); + wikitree.parse (settings, docparser, pkg, reporter); } } - public void process_comments (DocumentationParser docparser) { - process_wiki (docparser); + private void check_wiki (DocumentationParser docparser) { + var pkg = get_source_package (); + if (pkg != null) { + wikitree.check (settings, docparser, pkg); + } + } + + private void parse_comments (DocumentationParser docparser) { + parse_wiki (docparser); foreach (Package pkg in this.packages) { if (pkg.is_browsable (settings)) { - pkg.process_comments (settings, docparser); + pkg.parse_comments (settings, docparser); } } + } + + private void check_comments (DocumentationParser docparser) { + check_wiki (docparser); + + foreach (Package pkg in this.packages) { + if (pkg.is_browsable (settings)) { + pkg.check_comments (settings, docparser); + } + } + - // parse inherited non-public comments + // Parse & check inherited non-public comments: while (!this.unbrowsable_documentation_dependencies.is_empty) { var node = this.unbrowsable_documentation_dependencies.poll_head (); - node.process_comments (settings, docparser); + node.parse_comments (settings, docparser); + node.check_comments (settings, docparser); } } diff --git a/src/libvaladoc/api/typesymbol.vala b/src/libvaladoc/api/typesymbol.vala index d6331ed32..3574688e6 100644 --- a/src/libvaladoc/api/typesymbol.vala +++ b/src/libvaladoc/api/typesymbol.vala @@ -89,7 +89,7 @@ public abstract class Valadoc.Api.TypeSymbol : Symbol { /** * {@inheritDoc} */ - internal override void process_comments (Settings settings, DocumentationParser parser) { + internal override void parse_comments (Settings settings, DocumentationParser parser) { if (documentation != null) { return ; } @@ -98,6 +98,17 @@ public abstract class Valadoc.Api.TypeSymbol : Symbol { documentation = parser.parse (this, source_comment); } - base.process_comments (settings, parser); + base.parse_comments (settings, parser); + } + + /** + * {@inheritDoc} + */ + internal override void check_comments (Settings settings, DocumentationParser parser) { + if (documentation != null) { + parser.check (this, documentation); + } + + base.check_comments (settings, parser); } } diff --git a/src/libvaladoc/content/comment.vala b/src/libvaladoc/content/comment.vala index 71b80b9ad..f1f1d4169 100644 --- a/src/libvaladoc/content/comment.vala +++ b/src/libvaladoc/content/comment.vala @@ -31,6 +31,9 @@ public class Valadoc.Content.Comment : BlockContent { public Gee.List<Taglet> taglets { get { return _taglets; } } private Gee.List<Taglet> _taglets; + private bool checked = false; + + internal Comment () { base (); _taglets = new ArrayList<Taglet> (); @@ -46,6 +49,13 @@ public class Valadoc.Content.Comment : BlockContent { public override void check (Api.Tree api_root, Api.Node container, string file_path, ErrorReporter reporter, Settings settings) { + if (checked == true) { + return ; + } + + checked = true; + + base.check (api_root, container, file_path, reporter, settings); foreach (Taglet element in _taglets) { diff --git a/src/libvaladoc/content/page.vala b/src/libvaladoc/content/page.vala index 662ee8971..f180be84f 100644 --- a/src/libvaladoc/content/page.vala +++ b/src/libvaladoc/content/page.vala @@ -24,6 +24,9 @@ using Gee; public class Valadoc.Content.Page : BlockContent { + private bool checked = false; + + internal Page () { base (); } @@ -32,6 +35,19 @@ public class Valadoc.Content.Page : BlockContent { visitor.visit_page (this); } + public override void check (Api.Tree api_root, Api.Node container, string file_path, + ErrorReporter reporter, Settings settings) + { + if (checked == true) { + return ; + } + + checked = true; + + + base.check (api_root, container, file_path, reporter, settings); + } + public override ContentElement copy (ContentElement? new_parent = null) { assert (new_parent == null); diff --git a/src/libvaladoc/documentation/documentationparser.vala b/src/libvaladoc/documentation/documentationparser.vala index a4a1201a7..d94af81c3 100644 --- a/src/libvaladoc/documentation/documentationparser.vala +++ b/src/libvaladoc/documentation/documentationparser.vala @@ -93,14 +93,13 @@ public class Valadoc.DocumentationParser : Object, ResourceLocator { { try { Comment doc_comment = parse_comment (content, filename, first_line, first_column); - doc_comment.check (_tree, element, filename, _reporter, _settings); return doc_comment; } catch (ParserError error) { return null; } } - public Page? parse_wikipage (WikiPage page, Api.Package pkg) { + public Page? parse_wikipage (Api.Package pkg, WikiPage page) { if (page.documentation != null) { return page.documentation; } @@ -111,7 +110,6 @@ public class Valadoc.DocumentationParser : Object, ResourceLocator { try { Page documentation = parse_wiki (page.documentation_str, page.get_filename ()); - documentation.check (_tree, pkg, page.path, _reporter, _settings); return documentation; } catch (ParserError error) { return null; @@ -136,6 +134,14 @@ public class Valadoc.DocumentationParser : Object, ResourceLocator { return (Page) pop (); } + public void check (Api.Node element, Comment comment) { + comment.check (_tree, element, element.get_source_file ().get_name (), _reporter, _settings); + } + + public void check_wikipage (Api.Package package, Page page) { + page.check (_tree, package, package.get_source_file ().get_name (), _reporter, _settings); + } + private GirMetaData get_metadata_for_comment (Api.GirSourceComment gir_comment) { GirMetaData metadata = metadata.get (gir_comment.file); if (metadata != null) { diff --git a/src/libvaladoc/documentation/gtkdoccommentparser.vala b/src/libvaladoc/documentation/gtkdoccommentparser.vala index 417590be8..a9553c8cb 100644 --- a/src/libvaladoc/documentation/gtkdoccommentparser.vala +++ b/src/libvaladoc/documentation/gtkdoccommentparser.vala @@ -165,7 +165,6 @@ public class Valadoc.Gtkdoc.Parser : Object, ResourceLocator { first = false; } - comment.check (tree, element, gir_comment.file.relative_path, reporter, settings); return comment; } diff --git a/src/libvaladoc/documentation/gtkdocmarkdownparser.vala b/src/libvaladoc/documentation/gtkdocmarkdownparser.vala index 341dff050..721572d1d 100644 --- a/src/libvaladoc/documentation/gtkdocmarkdownparser.vala +++ b/src/libvaladoc/documentation/gtkdocmarkdownparser.vala @@ -671,8 +671,6 @@ public class Valadoc.Gtkdoc.MarkdownParser : Object, ResourceLocator { } - cmnt.check (_tree, element, gir_comment.file.relative_path, _reporter, _settings); - this.metadata = null; this.gir_comment = null; this.element = element; diff --git a/src/libvaladoc/documentation/wiki.vala b/src/libvaladoc/documentation/wiki.vala index 614d91848..56227a441 100644 --- a/src/libvaladoc/documentation/wiki.vala +++ b/src/libvaladoc/documentation/wiki.vala @@ -22,6 +22,7 @@ using Gee; + public class Valadoc.WikiPage : Object, Documentation { public Content.Page documentation { protected set; @@ -75,22 +76,21 @@ public class Valadoc.WikiPage : Object, Documentation { } } - public bool parse (DocumentationParser docparser, Api.Package pkg) { - documentation = docparser.parse_wikipage (this, pkg); - return true; + public void parse (DocumentationParser docparser, Api.Package pkg) { + documentation = docparser.parse_wikipage (pkg, this); + } + + public void check (DocumentationParser docparser, Api.Package pkg) { + docparser.check_wikipage (pkg, documentation); } } public class Valadoc.WikiPageTree : Object { private ArrayList<WikiPage> wikipages; - private ErrorReporter reporter; - private Settings settings; - //TODO: reporter, settings -> create_tree - public WikiPageTree (ErrorReporter reporter, Settings settings) { - this.reporter = reporter; - this.settings = settings; + + public WikiPageTree () { } public Collection<WikiPage> get_pages () { @@ -111,7 +111,7 @@ public class Valadoc.WikiPageTree : Object { } private void create_tree_from_path (DocumentationParser docparser, Api.Package package, - ErrorReporter reporer, string path, string? nameoffset = null) + ErrorReporter reporter, string path, string? nameoffset = null) { try { Dir dir = Dir.open (path); @@ -135,10 +135,10 @@ public class Valadoc.WikiPageTree : Object { } } - public void create_tree (DocumentationParser docparser, Api.Package package, ErrorReporter reporer) { - weak string path = this.settings.wiki_directory; + public void parse (Settings settings, DocumentationParser docparser, Api.Package package, ErrorReporter reporter) { + weak string path = settings.wiki_directory; if (path == null) { - return; + return ; } this.wikipages = new ArrayList<WikiPage> (); @@ -148,6 +148,16 @@ public class Valadoc.WikiPageTree : Object { page.parse (docparser, package); } } + + public void check (Settings settings, DocumentationParser docparser, Api.Package pkg) { + if (this.wikipages == null) { + return ; + } + + foreach (WikiPage page in this.wikipages) { + page.check (docparser, pkg); + } + } } |