[valadoc] Improve handling for c::this
- From: Florian Brosch <flobrosch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [valadoc] Improve handling for c::this
- Date: Tue, 2 Sep 2014 17:16:25 +0000 (UTC)
commit a03ba9564082f08908fba57932b6923ece2ee169
Author: Florian Brosch <flo brosch gmail com>
Date: Wed Aug 20 21:02:23 2014 +0200
Improve handling for c::this
.../documentation/gtkdocmarkdownparser.vala | 12 ++-------
src/libvaladoc/html/htmlrenderer.vala | 2 +-
src/libvaladoc/taglets/tagletparam.vala | 23 ++++++++++++++++---
3 files changed, 23 insertions(+), 14 deletions(-)
---
diff --git a/src/libvaladoc/documentation/gtkdocmarkdownparser.vala
b/src/libvaladoc/documentation/gtkdocmarkdownparser.vala
index 841949d..9614e6c 100644
--- a/src/libvaladoc/documentation/gtkdocmarkdownparser.vala
+++ b/src/libvaladoc/documentation/gtkdocmarkdownparser.vala
@@ -598,11 +598,6 @@ public class Valadoc.Gtkdoc.MarkdownParser : Object, ResourceLocator {
this.gir_comment = gir_comment;
this.element = element;
- bool has_instance = false;
- if (element is Api.Method) {
- has_instance = !((Api.Method) element).is_static;
- }
-
// main:
Comment? cmnt = _parse (gir_comment);
@@ -645,10 +640,9 @@ public class Valadoc.Gtkdoc.MarkdownParser : Object, ResourceLocator {
Taglets.Param? taglet = _parse_block_taglet (iter.get_value (), "param") as
Taglets.Param;
string param_name = iter.get_key ();
- if (taglet != null && !(has_instance && param_name ==
gir_comment.instance_param_name)) {
- taglet.parameter_name = param_name;
- add_taglet (ref cmnt, taglet);
- }
+ taglet.is_c_self_param = (param_name == gir_comment.instance_param_name);
+ taglet.parameter_name = param_name;
+ add_taglet (ref cmnt, taglet);
}
diff --git a/src/libvaladoc/html/htmlrenderer.vala b/src/libvaladoc/html/htmlrenderer.vala
index d9f5a21..294a977 100644
--- a/src/libvaladoc/html/htmlrenderer.vala
+++ b/src/libvaladoc/html/htmlrenderer.vala
@@ -175,7 +175,7 @@ public class Valadoc.Html.HtmlRenderer : ContentRenderer {
(taglet) => {
var param = taglet as Taglets.Param;
string[]? unknown_parameter_css = null;
- if (param.parameter == null) {
+ if (param.parameter == null && !param.is_this) {
unknown_parameter_css = {"class",
"main_parameter_table_unknown_parameter"};
}
diff --git a/src/libvaladoc/taglets/tagletparam.vala b/src/libvaladoc/taglets/tagletparam.vala
index 94c602a..e6e5cd0 100644
--- a/src/libvaladoc/taglets/tagletparam.vala
+++ b/src/libvaladoc/taglets/tagletparam.vala
@@ -34,6 +34,9 @@ public class Valadoc.Taglets.Param : BlockContent, Taglet, Block {
public bool is_c_self_param { internal set; get; }
+ public bool is_this { private set; get; }
+
+
public Rule? get_parser_rule (Rule run_rule) {
return Rule.seq ({
Rule.option ({ Rule.many ({ TokenType.SPACE }) }),
@@ -47,6 +50,7 @@ public class Valadoc.Taglets.Param : BlockContent, Taglet, Block {
{
// Check for the existence of such a parameter
unowned string? implicit_return_array_length = null;
+ bool has_instance = has_instance (container);
bool is_implicit = false;
this.parameter = null;
@@ -59,13 +63,16 @@ public class Valadoc.Taglets.Param : BlockContent, Taglet, Block {
return ;
}
-
- if (parameter_name == "...") {
+ if (is_c_self_param == true && has_instance) {
+ this.parameter_name = "this";
+ this.is_this = true;
+ this.position = 0;
+ } else if (parameter_name == "...") {
Gee.List<Api.Node> params = container.get_children_by_type
(Api.NodeType.FORMAL_PARAMETER, false);
foreach (Api.Node param in params) {
if (((Api.FormalParameter) param).ellipsis) {
this.parameter = (Api.Symbol) param;
- this.position = params.size - 1;
+ this.position = (has_instance)? params.size : params.size - 1;
break;
}
}
@@ -73,7 +80,7 @@ public class Valadoc.Taglets.Param : BlockContent, Taglet, Block {
Gee.List<Api.Node> params = container.get_children_by_types
({Api.NodeType.FORMAL_PARAMETER,
Api.NodeType.TYPE_PARAMETER},
false);
- int pos = 0;
+ int pos = (has_instance)? 1 : 0;
foreach (Api.Node param in params) {
if (param.name == parameter_name) {
@@ -116,6 +123,14 @@ public class Valadoc.Taglets.Param : BlockContent, Taglet, Block {
base.check (api_root, container, file_path, reporter, settings);
}
+ private bool has_instance (Api.Item element) {
+ if (element is Api.Method) {
+ return !((Api.Method) element).is_static;
+ }
+
+ return false;
+ }
+
public override void accept (ContentVisitor visitor) {
visitor.visit_taglet (this);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]