Merge pull request #5668 from kumpera/wasm-work-p4
[mono.git] / docs / HtmlAgilityPack / HtmlCmdLine.cs
1 // HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>\r
2 using System;\r
3 \r
4 namespace HtmlAgilityPack\r
5 {\r
6     internal class HtmlCmdLine\r
7     {\r
8         #region Static Members\r
9 \r
10         internal static bool Help;\r
11 \r
12         #endregion\r
13 \r
14         #region Constructors\r
15 \r
16         static HtmlCmdLine()\r
17         {\r
18             Help = false;\r
19             ParseArgs();\r
20         }\r
21 \r
22         #endregion\r
23 \r
24         #region Internal Methods\r
25 \r
26         internal static string GetOption(string name, string def)\r
27         {\r
28             string p = def;\r
29             string[] args = Environment.GetCommandLineArgs();\r
30             for (int i = 1; i < args.Length; i++)\r
31             {\r
32                 GetStringArg(args[i], name, ref p);\r
33             }\r
34             return p;\r
35         }\r
36 \r
37         internal static string GetOption(int index, string def)\r
38         {\r
39             string p = def;\r
40             string[] args = Environment.GetCommandLineArgs();\r
41             int j = 0;\r
42             for (int i = 1; i < args.Length; i++)\r
43             {\r
44                 if (GetStringArg(args[i], ref p))\r
45                 {\r
46                     if (index == j)\r
47                         return p;\r
48                     else\r
49                         p = def;\r
50                     j++;\r
51                 }\r
52             }\r
53             return p;\r
54         }\r
55 \r
56         internal static bool GetOption(string name, bool def)\r
57         {\r
58             bool p = def;\r
59             string[] args = Environment.GetCommandLineArgs();\r
60             for (int i = 1; i < args.Length; i++)\r
61             {\r
62                 GetBoolArg(args[i], name, ref p);\r
63             }\r
64             return p;\r
65         }\r
66 \r
67         internal static int GetOption(string name, int def)\r
68         {\r
69             int p = def;\r
70             string[] args = Environment.GetCommandLineArgs();\r
71             for (int i = 1; i < args.Length; i++)\r
72             {\r
73                 GetIntArg(args[i], name, ref p);\r
74             }\r
75             return p;\r
76         }\r
77 \r
78         #endregion\r
79 \r
80         #region Private Methods\r
81 \r
82         private static void GetBoolArg(string Arg, string Name, ref bool ArgValue)\r
83         {\r
84             if (Arg.Length < (Name.Length + 1)) // -name is 1 more than name\r
85                 return;\r
86             if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param\r
87                 return;\r
88             if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())\r
89                 ArgValue = true;\r
90         }\r
91 \r
92         private static void GetIntArg(string Arg, string Name, ref int ArgValue)\r
93         {\r
94             if (Arg.Length < (Name.Length + 3)) // -name:12 is 3 more than name\r
95                 return;\r
96             if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param\r
97                 return;\r
98             if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())\r
99             {\r
100                 try\r
101                 {\r
102                     ArgValue = Convert.ToInt32(Arg.Substring(Name.Length + 2, Arg.Length - Name.Length - 2));\r
103                 }\r
104                 catch\r
105                 {\r
106                 }\r
107             }\r
108         }\r
109 \r
110         private static bool GetStringArg(string Arg, ref string ArgValue)\r
111         {\r
112             if (('/' == Arg[0]) || ('-' == Arg[0]))\r
113                 return false;\r
114             ArgValue = Arg;\r
115             return true;\r
116         }\r
117 \r
118         private static void GetStringArg(string Arg, string Name, ref string ArgValue)\r
119         {\r
120             if (Arg.Length < (Name.Length + 3)) // -name:x is 3 more than name\r
121                 return;\r
122             if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param\r
123                 return;\r
124             if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())\r
125                 ArgValue = Arg.Substring(Name.Length + 2, Arg.Length - Name.Length - 2);\r
126         }\r
127 \r
128         private static void ParseArgs()\r
129         {\r
130             string[] args = Environment.GetCommandLineArgs();\r
131             for (int i = 1; i < args.Length; i++)\r
132             {\r
133                 // help\r
134                 GetBoolArg(args[i], "?", ref Help);\r
135                 GetBoolArg(args[i], "h", ref Help);\r
136                 GetBoolArg(args[i], "help", ref Help);\r
137             }\r
138         }\r
139 \r
140         #endregion\r
141     }\r
142 }