Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikayla Hutchinson <m.j.hutchinson@gmail.com>2016-04-07 00:24:12 +0300
committerMikayla Hutchinson <m.j.hutchinson@gmail.com>2016-04-08 20:06:18 +0300
commitc8b45f6d05923ef861bf4a6650ef96019f2ed397 (patch)
tree22a71aeed50fbf34dfbbcfa144c6365aec1c5313 /main/src/addins/TextTemplating
parent692e763d110bd553493efd5bd809fd7bce7bafed (diff)
[T4] Fix -a argument handling
Diffstat (limited to 'main/src/addins/TextTemplating')
-rw-r--r--main/src/addins/TextTemplating/TextTransform/TextTransform.cs32
1 files changed, 22 insertions, 10 deletions
diff --git a/main/src/addins/TextTemplating/TextTransform/TextTransform.cs b/main/src/addins/TextTemplating/TextTransform/TextTransform.cs
index 0da1987657..58da502e85 100644
--- a/main/src/addins/TextTemplating/TextTransform/TextTransform.cs
+++ b/main/src/addins/TextTemplating/TextTransform/TextTransform.cs
@@ -100,35 +100,47 @@ namespace Mono.TextTemplating
//FIXME: implement quoting and escaping for values
foreach (var par in parameters) {
var split = par.Split ('!');
+
if (split.Length < 2) {
- Console.Error.WriteLine ("Parameter does not have enough values: {0}", par);
+ Console.Error.WriteLine ("Parameter must have name and value: {0}", par);
return -1;
}
- if (split.Length > 2) {
- Console.Error.WriteLine ("Parameter has too many values: {0}", par);
+
+ if (split.Length > 4) {
+ Console.Error.WriteLine ("Parameter has too many arguments: {0}", par);
return -1;
}
- string name = split[split.Length-2];
- string val = split[split.Length-1];
- if (string.IsNullOrEmpty (name)) {
+
+ string parName = split[split.Length-2];
+ string parVal = split[split.Length-1];
+ var directiveName = split.Length > 2 ? split [split.Length - 3] : null;
+ var processorName = split.Length > 3 ? split [0] : null;
+
+ if (string.IsNullOrEmpty (parName)) {
Console.Error.WriteLine ("Parameter has no name: {0}", par);
return -1;
}
- generator.AddParameter (split.Length > 3? split[0] : null, split.Length > 2? split[split.Length-3] : null, name, val);
+
+ generator.AddParameter (processorName, directiveName, parName, parVal);
}
foreach (var dir in directives) {
var split = dir.Split ('!');
+
if (split.Length != 3) {
- Console.Error.WriteLine ("Directive does not have correct number of values: {0}", dir);
+ Console.Error.WriteLine ("Directive must have 3 values: {0}", dir);
return -1;
}
- foreach (var s in split) {
+
+ for (int i = 0; i < 3; i++) {
+ string s = split [i];
if (string.IsNullOrEmpty (s)) {
- Console.Error.WriteLine ("Directive has missing value: {0}", dir);
+ string kind = i == 0? "name" : (i == 1 ? "class" : "assembly");
+ Console.Error.WriteLine ("Directive has missing {0} value: {1}", kind, dir);
return -1;
}
}
+
generator.AddDirectiveProcessor (split[0], split[1], split[2]);
}