[vala/switch-to-gir] girparser: Support regex in name argument
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/switch-to-gir] girparser: Support regex in name argument
- Date: Fri, 27 Aug 2010 11:12:18 +0000 (UTC)
commit 2ba2e9e212dd4ff44710929aac1f95236b986cc1
Author: Luca Bruno <lethalman88 gmail com>
Date: Fri Aug 27 13:11:44 2010 +0200
girparser: Support regex in name argument
vala/valagirparser.vala | 32 ++++++++++++++++++++++++++++----
1 files changed, 28 insertions(+), 4 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index 0bbe1c9..763ecfa 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -806,6 +806,30 @@ public class Vala.GirParser : CodeVisitor {
return str;
}
+ string? element_get_name (string attribute_name = "name", ArgumentType arg_type = ArgumentType.NAME) {
+ var name = reader.get_attribute (attribute_name);
+ var pattern = metadata.get_string (arg_type);
+ if (pattern != null) {
+ try {
+ var regex = new Regex (pattern, RegexCompileFlags.ANCHORED, RegexMatchFlags.ANCHORED);
+ GLib.MatchInfo match;
+ if (!regex.match (name, 0, out match)) {
+ name = pattern;
+ } else {
+ var matched = match.fetch (1);
+ if (matched != null && matched.length > 0) {
+ name = matched;
+ } else {
+ name = pattern;
+ }
+ }
+ } catch (Error e) {
+ name = pattern;
+ }
+ }
+ return name;
+ }
+
void element_reparent (Symbol symbol) {
if (metadata.has_argument (ArgumentType.PARENT)) {
var target_symbol = parse_symbol_from_string (metadata.get_string (ArgumentType.PARENT), metadata.get_source_reference (ArgumentType.PARENT));
@@ -1555,7 +1579,7 @@ public class Vala.GirParser : CodeVisitor {
Interface parse_interface () {
start_element ("interface");
- var iface = new Interface (element_get_string ("name", ArgumentType.NAME), get_current_src ());
+ var iface = new Interface (element_get_name (), get_current_src ());
iface.access = SymbolAccessibility.PUBLIC;
iface.external = true;
@@ -1745,7 +1769,7 @@ public class Vala.GirParser : CodeVisitor {
Method parse_constructor (string? parent_ctype = null) {
start_element ("constructor");
- string name = element_get_string ("name", ArgumentType.NAME);
+ string name = element_get_name ();
string throws_string = reader.get_attribute ("throws");
next ();
@@ -1806,7 +1830,7 @@ public class Vala.GirParser : CodeVisitor {
Symbol parse_function (string element_name) {
start_element (element_name);
- string name = element_get_string ("name", ArgumentType.NAME);
+ string name = element_get_name ();
string cname = reader.get_attribute ("c:identifier");
string throws_string = reader.get_attribute ("throws");
string invoker = reader.get_attribute ("invoker");
@@ -2100,7 +2124,7 @@ public class Vala.GirParser : CodeVisitor {
Constant parse_constant () {
start_element ("constant");
- string name = reader.get_attribute ("name");
+ string name = element_get_name ();
next ();
var type = parse_type ();
var c = new Constant (name, type, null, get_current_src ());
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]