]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girparser: Add more complex renaming using regex replace
authorLuca Bruno <lucabru@src.gnome.org>
Tue, 26 Jul 2011 18:52:19 +0000 (20:52 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Tue, 26 Jul 2011 19:41:52 +0000 (21:41 +0200)
vala/valagirparser.vala

index 9fe6abfec48d43d5971da59bcef3073d20ffd514..25601fcf03d2531452f06bd0c1b8b94115c0c496 100644 (file)
@@ -1443,21 +1443,22 @@ public class Vala.GirParser : CodeVisitor {
                }
                var pattern = metadata.get_string (ArgumentType.NAME);
                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;
+                       if (pattern.index_of_char ('(') < 0) {
+                               // shortcut for "(.+)/replacement"
+                               name = pattern;
+                       } else {
+                               try {
+                                       string replacement = "\\1"; // replace the whole name with the match by default
+                                       var split = pattern.split ("/");
+                                       if (split.length > 1) {
+                                               pattern = split[0];
+                                               replacement = split[1];
                                        }
+                                       var regex = new Regex (pattern, RegexCompileFlags.ANCHORED, RegexMatchFlags.ANCHORED);
+                                       name = regex.replace (name, -1, 0, replacement);
+                               } catch (Error e) {
+                                       name = pattern;
                                }
-                       } catch (Error e) {
-                               name = pattern;
                        }
                } else {
                        if (name != null && name.has_suffix ("Enum")) {