// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
using System;
namespace HtmlAgilityPack{
internal class HtmlCmdLine
{
static internal bool Help;
static HtmlCmdLine()
{
Help = false;
ParseArgs();
}
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;
}
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);
}
}
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 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
{
}
}
}
}
}
|