Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

142 lines
4.2 KiB
C#

// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
using System;
namespace HtmlAgilityPack
{
internal class HtmlCmdLine
{
#region Static Members
internal static bool Help;
#endregion
#region Constructors
static HtmlCmdLine()
{
Help = false;
ParseArgs();
}
#endregion
#region Internal Methods
internal static string GetOption(string name, string def)
{
string p = def;
string[] args = Environment.GetCommandLineArgs();
for (int i = 1; i < args.Length; i++)
{
GetStringArg(args[i], name, ref p);
}
return p;
}
internal static string GetOption(int index, string def)
{
string p = def;
string[] args = Environment.GetCommandLineArgs();
int j = 0;
for (int i = 1; i < args.Length; i++)
{
if (GetStringArg(args[i], ref p))
{
if (index == j)
return p;
else
p = def;
j++;
}
}
return p;
}
internal static bool GetOption(string name, bool def)
{
bool p = def;
string[] args = Environment.GetCommandLineArgs();
for (int i = 1; i < args.Length; i++)
{
GetBoolArg(args[i], name, ref p);
}
return p;
}
internal static int GetOption(string name, int def)
{
int p = def;
string[] args = Environment.GetCommandLineArgs();
for (int i = 1; i < args.Length; i++)
{
GetIntArg(args[i], name, ref p);
}
return p;
}
#endregion
#region Private Methods
private static void GetBoolArg(string Arg, string Name, ref bool ArgValue)
{
if (Arg.Length < (Name.Length + 1)) // -name is 1 more than name
return;
if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param
return;
if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())
ArgValue = true;
}
private static void GetIntArg(string Arg, string Name, ref int ArgValue)
{
if (Arg.Length < (Name.Length + 3)) // -name:12 is 3 more than name
return;
if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param
return;
if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())
{
try
{
ArgValue = Convert.ToInt32(Arg.Substring(Name.Length + 2, Arg.Length - Name.Length - 2));
}
catch
{
}
}
}
private static bool GetStringArg(string Arg, ref string ArgValue)
{
if (('/' == Arg[0]) || ('-' == Arg[0]))
return false;
ArgValue = Arg;
return true;
}
private static void GetStringArg(string Arg, string Name, ref string ArgValue)
{
if (Arg.Length < (Name.Length + 3)) // -name:x is 3 more than name
return;
if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param
return;
if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())
ArgValue = Arg.Substring(Name.Length + 2, Arg.Length - Name.Length - 2);
}
private static void ParseArgs()
{
string[] args = Environment.GetCommandLineArgs();
for (int i = 1; i < args.Length; i++)
{
// help
GetBoolArg(args[i], "?", ref Help);
GetBoolArg(args[i], "h", ref Help);
GetBoolArg(args[i], "help", ref Help);
}
}
#endregion
}
}