[valadoc] libvaladoc: reorder @param
- From: Florian Brosch <flobrosch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [valadoc] libvaladoc: reorder @param
- Date: Fri, 27 Jan 2012 16:45:17 +0000 (UTC)
commit 7d5abf3972158a3b24d2e075c20bde604de3e813
Author: Florian Brosch <flo brosch gmail com>
Date: Fri Jan 6 18:40:00 2012 +0100
libvaladoc: reorder @param
src/libvaladoc/html/htmlrenderer.vala | 32 +++++++++++++++++++++++++++++++
src/libvaladoc/taglets/tagletparam.vala | 11 ++++++++-
2 files changed, 41 insertions(+), 2 deletions(-)
---
diff --git a/src/libvaladoc/html/htmlrenderer.vala b/src/libvaladoc/html/htmlrenderer.vala
index d0ea807..0655ce0 100755
--- a/src/libvaladoc/html/htmlrenderer.vala
+++ b/src/libvaladoc/html/htmlrenderer.vala
@@ -115,6 +115,38 @@ public class Valadoc.Html.HtmlRenderer : ContentRenderer {
element.accept_children (this);
taglets = element.find_taglets ((Api.Node) _container, typeof (Taglets.Param));
+ taglets.sort ((_a, _b) => {
+ Taglets.Param a = _a as Taglets.Param;
+ Taglets.Param b = _b as Taglets.Param;
+
+ if (a.position < 0 && b.position < 0) {
+ int cmp = a.parameter_name.ascii_casecmp (b.parameter_name);
+ if (cmp == 0) {
+ return 0;
+ }
+
+ if (a.parameter_name == "...") {
+ return 1;
+ }
+
+ if (b.parameter_name == "...") {
+ return -1;
+ }
+
+ return cmp;
+ }
+
+ if (a.position < 0) {
+ return 1;
+ }
+
+ if (b.position < 0) {
+ return -1;
+ }
+
+ return a.position - b.position;
+ });
+
write_taglets (
() => {
writer.start_tag ("h2", {"class", "main_title"}).text ("Parameters:").end_tag ("h2");
diff --git a/src/libvaladoc/taglets/tagletparam.vala b/src/libvaladoc/taglets/tagletparam.vala
index db0d962..6dfb235 100755
--- a/src/libvaladoc/taglets/tagletparam.vala
+++ b/src/libvaladoc/taglets/tagletparam.vala
@@ -27,7 +27,9 @@ using Valadoc.Content;
public class Valadoc.Taglets.Param : InlineContent, Taglet, Block {
public string parameter_name { internal set; get; }
- public Api.Symbol? parameter { private set; get; }
+ public weak Api.Symbol? parameter { private set; get; }
+
+ public int position { private set; get; default = -1; }
public Rule? get_parser_rule (Rule run_rule) {
return Rule.seq ({
@@ -40,7 +42,6 @@ public class Valadoc.Taglets.Param : InlineContent, Taglet, Block {
public override void check (Api.Tree api_root, Api.Node container, ErrorReporter reporter, Settings settings) {
// Check for the existence of such a parameter
-
this.parameter = null;
if (parameter_name == "...") {
@@ -48,16 +49,22 @@ public class Valadoc.Taglets.Param : InlineContent, Taglet, Block {
foreach (Api.Node param in params) {
if (((Api.FormalParameter) param).ellipsis) {
this.parameter = (Api.Symbol) param;
+ this.position = params.size - 1;
break;
}
}
} else {
Gee.List<Api.Node> params = container.get_children_by_types ({Api.NodeType.FORMAL_PARAMETER, Api.NodeType.TYPE_PARAMETER}, false);
+ int pos = 0;
+
foreach (Api.Node param in params) {
if (param.name == parameter_name) {
this.parameter = (Api.Symbol) param;
+ this.position = pos;
break;
}
+
+ pos++;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]