public void Example_Documentation() { var swA = new CommandSwitch("AAA", 'a'); swA.AddParameter(Arity.One, "a-param"); swA.SetHelp("Help for A."); var swB = new CommandSwitch("be"); swB.AddParameter(Arity.NoneOrOne, "b-param"); swB.SetHelp("Help for B."); var parser = new Parser(); parser.AddSwitch(swA); parser.AddSwitch(swB); var result = parser.Parse(new string[] { "-a", "111", "--be=222", "path1" }); Assert.AreEqual(1, result.pathsCount); Assert.AreEqual("path1", result.paths[0]); Assert.AreEqual(2, result.switchesCount); Assert.AreEqual("AAA", result.switches[0].primaryName); Assert.AreEqual("111", result.switches[0].args[0]); Assert.AreEqual("be", result.switches[1].primaryName); Assert.AreEqual("222", result.switches[1].args[0]); }
public QueueItemEventHandler(IQueueItemService queueItemService) { this.queueItemService = queueItemService; CommandSwitch .CaseWhen(Constants.GetQueueItems, SendQueueItems); }
public void RepeatedSwitches_OneOrNoneArgIncorrect_Throws() { var parser = new Parser(); var swA = new CommandSwitch("AA", 'a'); swA.AddParameter(Arity.NoneOrOne, "ones"); parser.AddSwitch(swA); Assert.Throws <InvalidInput>(() => parser.Parse(new string[] { "-a=111", "--AA=222" })); }
public void RepeatedSwitches_NoArg() { var parser = new Parser(); var swA = new CommandSwitch("AA", 'a'); parser.AddSwitch(swA); var result = parser.Parse(new string[] { "-a", "--AA" }); Assert.AreEqual(0, result.pathsCount); Assert.AreEqual(1, result.switchesCount); Assert.AreEqual("AA", result.switches[0].primaryName); Assert.AreEqual(0, result.switches[0].argsCount); }
private static int ParseSwitches(IList <string> args, out CommandSwitch switches) { switches = CommandSwitch.None; var index = 0; while (index < args.Count) { var possibleSwitch = args[index].ToLowerInvariant(); if (possibleSwitch.Length == 0 || possibleSwitch[0] != '-') { break; } switch (possibleSwitch) { case "--": return(index + 1); case "-n": switches |= CommandSwitch.NewLine; break; case "-t": switches |= CommandSwitch.Tab; break; case "-x": switches |= CommandSwitch.ExtendedSyntax; if (switches.HasFlag(CommandSwitch.OnlyEscape)) { throw new ArgumentException("Conflict: " + CommandSwitch.ExtendedSyntax + " already " + CommandSwitch.OnlyEscape + " set!", "args"); } break; case "-e": switches |= CommandSwitch.OnlyEscape; if (switches.HasFlag(CommandSwitch.ExtendedSyntax)) { throw new ArgumentException("Conflict: " + CommandSwitch.OnlyEscape + " already " + CommandSwitch.ExtendedSyntax + " set!", "args"); } break; default: throw new ArgumentException("Cannot parse option: " + possibleSwitch, "args"); } index++; } return(index); }
public void GetHelp_WhenNoLongNameAndNoAltNames() { var sw1 = new CommandSwitch("s"); sw1.SetHelp("Help here"); sw1.AddParameter(Arity.NoneOrOne, "p"); StringBuilder sb = new StringBuilder(); sw1.GetHelp(new Setup(), sb); var actual = sb.ToString(); var expected = " -s[=p] Help here\n"; Assert.AreEqual(expected, actual); }
public void SwitchesWithArguments_OneOrNone_NoValue() { var parser = new Parser(); var swA = new CommandSwitch("a"); swA.AddParameter(Arity.NoneOrOne, "ones"); parser.AddSwitch(swA); var result = parser.Parse(new string[] { "-a" }); Assert.AreEqual(0, result.pathsCount); Assert.AreEqual(1, result.switchesCount); Assert.AreEqual("a", result.switches[0].primaryName); Assert.AreEqual(0, result.switches[0].argsCount); }
public void GetHelp_MaybeParam() { var sw1 = new CommandSwitch("switch"); sw1.SetHelp("Help here"); sw1.AddParameter(Arity.NoneOrOne, "p"); StringBuilder sb = new StringBuilder(); sw1.GetHelp(new Setup(), sb); var actual = sb.ToString(); var expected = " --switch[=p] Help here\n"; Assert.AreEqual(expected, actual); }
public void GetHelp_NoParam() { var sw1 = new CommandSwitch("switch", 's'); sw1.AddAlternativeNames("alt"); sw1.SetHelp("Help here"); StringBuilder sb = new StringBuilder(); sw1.GetHelp(new Setup(), sb); var actual = sb.ToString(); var expected = " -s --switch, --alt Help here\n"; Assert.AreEqual(expected, actual); }
public void GetHelp_WithAltNamesNoLongname_CorrectDisplay() { var sw1 = new CommandSwitch("s"); sw1.AddAlternativeNames("alternative"); sw1.SetHelp("Help here"); StringBuilder sb = new StringBuilder(); sw1.GetHelp(new Setup(), sb); var actual = sb.ToString(); var expected = " -s --alternative Help here\n"; Assert.AreEqual(expected, actual); }
public void SwitchesOnly() { var parser = new Parser(); var swA = new CommandSwitch("a"); var swBE = new CommandSwitch("be"); parser.AddSwitch(swA); parser.AddSwitch(swBE); var result = parser.Parse(new string[] { "-a", "--be" }); Assert.AreEqual(0, result.pathsCount); Assert.AreEqual(2, result.switchesCount); Assert.AreEqual("a", result.switches[0].primaryName); Assert.AreEqual("be", result.switches[1].primaryName); }
public void PathsThenSwitches_MeansPaths() { var parser = new Parser(); var swA = new CommandSwitch("a"); var swBE = new CommandSwitch("be"); parser.AddSwitch(swA); parser.AddSwitch(swBE); var result = parser.Parse(new string[] { "path1", "-a", "--be", }); Assert.AreEqual(3, result.pathsCount); Assert.AreEqual("path1", result.paths[0]); Assert.AreEqual("-a", result.paths[1]); Assert.AreEqual("--be", result.paths[2]); }
public void SwitchesWithArguments_Many() { var parser = new Parser(); var swA = new CommandSwitch("a"); swA.AddParameter(Arity.Any, "ones"); parser.AddSwitch(swA); var result = parser.Parse(new string[] { "-a", "111", "222" }); Assert.AreEqual(0, result.pathsCount); Assert.AreEqual(1, result.switchesCount); Assert.AreEqual("a", result.switches[0].primaryName); Assert.AreEqual(2, result.switches[0].argsCount); Assert.AreEqual("111", result.switches[0].args[0]); Assert.AreEqual("222", result.switches[0].args[1]); }
public void PathsMixedWithSwitches_MeansPaths() { var parser = new Parser(); var swA = new CommandSwitch("a"); var swBE = new CommandSwitch("be"); parser.AddSwitch(swA); parser.AddSwitch(swBE); var result = parser.Parse(new string[] { "-a", "path1", "--be", }); Assert.AreEqual(2, result.pathsCount); Assert.AreEqual("path1", result.paths[0]); Assert.AreEqual("--be", result.paths[1]); Assert.AreEqual(1, result.switchesCount); Assert.AreEqual("a", result.switches[0].primaryName); }
public void SwitchesWithArguments_Many_InterruptedBySwitch() { var parser = new Parser(); var swA = new CommandSwitch("a"); var swBE = new CommandSwitch("be"); swA.AddParameter(Arity.Any, "ones"); swBE.AddParameter(Arity.NoneOrOne, "threes"); parser.AddSwitch(swA); parser.AddSwitch(swBE); var result = parser.Parse(new string[] { "-a", "111", "222", "--be=333" }); Assert.AreEqual(0, result.pathsCount); Assert.AreEqual(2, result.switchesCount); Assert.AreEqual("a", result.switches[0].primaryName); Assert.AreEqual(2, result.switches[0].argsCount); Assert.AreEqual("111", result.switches[0].args[0]); Assert.AreEqual("222", result.switches[0].args[1]); Assert.AreEqual("be", result.switches[1].primaryName); Assert.AreEqual("333", result.switches[1].args[0]); }
public void MakeSwitch_SingleCharString() { var sw = new CommandSwitch("A"); Assert.AreEqual("A", sw.primaryName); }
public void MakeSwitch_WithShortName_GetsLong() { var sw = new CommandSwitch("AAA", 'a'); Assert.AreEqual("AAA", sw.primaryName); }
private static async Task WriteSentenceAsync(string sentence, CommandSwitch commandSwitches) { if (commandSwitches.HasFlag(CommandSwitch.Tab)) { await Console.Out.WriteAsync('\t'); } if (commandSwitches.HasFlag(CommandSwitch.ExtendedSyntax)) { foreach (var colouredString in sentence.Atomize().ToColourizedStrings()) { if (colouredString.ControlChar > '\0') { switch (colouredString.ControlChar) { case 'a': ControlCharHelper.DoBeep(colouredString); break; } } else { if (colouredString.Colours.IsReset) { Console.ResetColor(); } else if (colouredString.Colours.IsSwap) { var temp = Console.ForegroundColor; Console.ForegroundColor = Console.BackgroundColor; Console.BackgroundColor = temp; } else { if (colouredString.Colours.Foreground >= 0) { Console.ForegroundColor = (ConsoleColor)colouredString.Colours.Foreground; } if (colouredString.Colours.Background >= 0) { Console.BackgroundColor = (ConsoleColor)colouredString.Colours.Background; } } await Console.Out.WriteAsync(colouredString.Text); } } } else if (commandSwitches.HasFlag(CommandSwitch.OnlyEscape)) { var inputLength = sentence.Length; var replacedChars = new StringBuilder(inputLength); for (var i = 0; i < inputLength; i++) { var @char = sentence[i]; switch (@char) { case '\\': char composed; switch (sentence[++i]) { case 'a': composed = '\a'; break; case 'b': composed = '\b'; break; case 'e': composed = '\x1b'; break; case 'f': composed = '\f'; break; case 'n': composed = '\n'; break; case 'v': composed = '\v'; break; default: throw new ArgumentException(@"Escape sequence \" + sentence[i] + " is not supported!", "sentence"); } replacedChars.Append(composed); break; default: replacedChars.Append(@char); break; } } await Console.Out.WriteAsync(replacedChars.ToString()); } else { await Console.Out.WriteAsync(sentence); } if (commandSwitches.HasFlag(CommandSwitch.NewLine)) { await Console.Out.WriteLineAsync(); } }
public QueueEventHandler(IQueueService queueService) { this.queueService = queueService; CommandSwitch.CaseWhen(Constants.GetQueue, GetQueue); }