main
1using System.Text.RegularExpressions;
2
3namespace gorilla.migrations
4{
5 public class ConsoleArguments
6 {
7 public string[] arguments { get; set; }
8
9 static public implicit operator ConsoleArguments(string[] arguments)
10 {
11 return new ConsoleArguments {arguments = arguments};
12 }
13
14 static public implicit operator string[](ConsoleArguments arguments)
15 {
16 return arguments.arguments;
17 }
18
19 public virtual bool contains(string key)
20 {
21 return find_match_for(key).Success;
22 }
23
24 public virtual string parse_for(string argument_name)
25 {
26 var match = find_match_for(argument_name);
27 return value_from(argument_name, match);
28 }
29
30 string value_from(string argument_name, Capture match)
31 {
32 var replace = match.Value.Replace("-{0}:'".format_using(argument_name), "");
33 return replace.Remove(replace.Length - 1, 1);
34 }
35
36 Match find_match_for(string argument_name)
37 {
38 var pattern = @"-{0}:'.+?'".format_using(argument_name);
39 var argument = arguments[0];
40 return new Regex(pattern, RegexOptions.Singleline).Match(argument);
41 }
42
43 public bool Equals(ConsoleArguments other)
44 {
45 if (ReferenceEquals(null, other)) return false;
46 if (ReferenceEquals(this, other)) return true;
47 return Equals(other.arguments, arguments);
48 }
49
50 public override bool Equals(object obj)
51 {
52 if (ReferenceEquals(null, obj)) return false;
53 if (ReferenceEquals(this, obj)) return true;
54 if (obj.GetType() != typeof (ConsoleArguments)) return false;
55 return Equals((ConsoleArguments) obj);
56 }
57
58 public override int GetHashCode()
59 {
60 return (arguments != null ? arguments.GetHashCode() : 0);
61 }
62 }
63}