123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace Viewer
- {
- public class CmdParser
- {
- public const string DEFAULT_KEY = "null";
- public CmdParser(string[] args)
- : this()
- {
- string key = DEFAULT_KEY;
- List<string> values = new List<string>();
- foreach (string arg in args)
- {
- if (arg.Length > 0 && arg[0] == '/')
- {
- if (key != null && values.Count > 0)
- {
- this[key] = values.ToArray();
- }
- key = arg;
- values.Clear();
- }
- else
- {
- values.Add(arg);
- }
- }
- if (key != null)
- {
- this[key] = values.ToArray();
- }
- }
- public CmdParser()
- {
- commands = new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase);
- }
- private readonly Dictionary<string, string[]> commands;
- public string[] this[string cmd]
- {
- get
- {
- if (commands.ContainsKey(cmd))
- return commands[cmd];
- return null;
- }
- set
- {
- commands[cmd] = value;
- }
- }
- public bool HasCommand(string cmd)
- {
- return commands.ContainsKey(cmd);
- }
- public override string ToString()
- {
- StringBuilder sb = new StringBuilder();
- sb.Append("Viewer.exe");
- if (this[DEFAULT_KEY] != null)
- {
- foreach (string val in this[DEFAULT_KEY])
- {
- if (val.IndexOf(" ") >= 0)
- {
- sb.Append(" \"").Append(val).Append('"');
- }
- else
- {
- sb.Append(" ").Append(val);
- }
- }
- }
- foreach (KeyValuePair<string, string[]> kv in commands)
- {
- if (kv.Key == DEFAULT_KEY)
- continue;
- if (kv.Key.IndexOf(" ") >= 0)
- {
- sb.Append(" \"").Append(kv.Key).Append('"');
- }
- else
- {
- sb.Append(" ").Append(kv.Key);
- }
- if (kv.Value != null)
- {
- foreach(string val in kv.Value)
- {
- if (val.IndexOf(" ") >= 0)
- {
- sb.Append(" \"").Append(val).Append('"');
- }
- else
- {
- sb.Append(" ").Append(val);
- }
- }
- }
- }
- return sb.ToString();
- }
- }
- }
|