source: trunk/CrypConsole/Arguments.cs @ 1378

Last change on this file since 1378 was 4, checked in by Thomas Schmid, 13 years ago

Init checkin

File size: 2.7 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Collections.Specialized;
6using System.Text.RegularExpressions;
7
8namespace Cryptool.Console
9{
10    class Arguments
11    {
12        private StringDictionary parameters;
13
14        public Arguments(string[] args)
15        {
16            parameters = new StringDictionary();
17            Regex splitter = new Regex(@"^-{1,2}|^/|=|:", RegexOptions.IgnoreCase | RegexOptions.Compiled);
18            Regex remover = new Regex(@"^['""]?(.*?)['""]?$", RegexOptions.IgnoreCase | RegexOptions.Compiled);
19
20            string parameter = null;
21            string[] parts;
22
23            foreach (string strPart in args)
24            {
25                parts = splitter.Split(strPart, 3);
26
27                switch (parts.Length)
28                {
29                    case 1:
30                        if (parameter != null)
31                        {
32                            if (!parameters.ContainsKey(parameter))
33                            {
34                                parts[0] = remover.Replace(parts[0], "$1");
35                                parameters.Add(parameter, parts[0]);
36                            }
37                            parameter = null;
38                        }
39                        break;
40                    case 2:
41                        if (parameter != null)
42                        {
43                            if (!parameters.ContainsKey(parameter))
44                                parameters.Add(parameter, "true");
45                        }
46                        parameter = parts[1];
47                        break;
48                    case 3:
49                        if (parameter != null)
50                        {
51                            if (!parameters.ContainsKey(parameter))
52                                parameters.Add(parameter, "true");
53                        }
54                        parameter = parts[1];
55                        if (!parameters.ContainsKey(parameter))
56                        {
57                            parts[2] = remover.Replace(parts[2], "$1");
58                            parameters.Add(parameter, parts[2]);
59                        }
60                        parameter = null;
61                        break;
62                }
63            }
64            if (parameter != null)
65            {
66                if (!parameters.ContainsKey(parameter))
67                    parameters.Add(parameter, "true");
68            }
69        }
70        public string this[string param]
71        {
72            get
73            {
74                return (parameters[param]);
75            }
76        }
77    }
78}
Note: See TracBrowser for help on using the repository browser.