summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Brosch <flo.brosch@gmail.com>2014-08-23 04:26:59 +0200
committerFlorian Brosch <flo.brosch@gmail.com>2014-08-29 15:52:00 +0200
commit5257a46ff98a481641a7c9b86e9c4e6dd2981632 (patch)
tree78ee6ed3b353ba8af0030dfc623de014de4ba458
parenta4ea5ec772783547025169e51f3471b728bcf881 (diff)
downloadvala-5257a46ff98a481641a7c9b86e9c4e6dd2981632.tar.gz
Split process-comments into parse and check runs
-rw-r--r--src/libvaladoc/api/enumvalue.vala15
-rw-r--r--src/libvaladoc/api/errorcode.vala15
-rw-r--r--src/libvaladoc/api/item.vala6
-rw-r--r--src/libvaladoc/api/member.vala19
-rw-r--r--src/libvaladoc/api/namespace.vala17
-rw-r--r--src/libvaladoc/api/node.vala17
-rw-r--r--src/libvaladoc/api/property.vala24
-rw-r--r--src/libvaladoc/api/sourcefile.vala1
-rw-r--r--src/libvaladoc/api/tree.vala52
-rw-r--r--src/libvaladoc/api/typesymbol.vala15
-rw-r--r--src/libvaladoc/content/comment.vala10
-rw-r--r--src/libvaladoc/content/page.vala16
-rw-r--r--src/libvaladoc/documentation/documentationparser.vala12
-rw-r--r--src/libvaladoc/documentation/gtkdoccommentparser.vala1
-rw-r--r--src/libvaladoc/documentation/gtkdocmarkdownparser.vala2
-rw-r--r--src/libvaladoc/documentation/wiki.vala36
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);
+ }
+ }
}