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}