public void ParseEmptyString() { Assert.AreEqual(ConsoleString.Empty, new ConsoleString()); Assert.AreEqual(ConsoleString.Empty, ConsoleString.Parse(string.Empty, true)); Assert.AreEqual(ConsoleString.Empty, ConsoleString.Parse(string.Empty, false)); Assert.AreEqual(ConsoleString.Empty, new ConsoleString(new[] { new ConsoleStringSegment(string.Empty) })); }
public void ParseStringFlatten() { Assert.AreEqual(ConsoleString.Parse("test1test2"), new ConsoleString(new[] { new ConsoleStringSegment("test1"), new ConsoleStringSegment("test2") })); Assert.AreEqual(ConsoleString.Parse("[red:test1test2]"), ConsoleString.Parse("[red:test1][red:test2]")); Assert.AreEqual(ConsoleString.Parse("[blue:test1][red:test2]test3"), ConsoleString.Parse("[blue:test1][red:test2]test3")); Assert.AreEqual(ConsoleString.Parse("[blue:test1][red:test2test3]test4"), ConsoleString.Parse("[blue:test1][red:test2][red:test3]test4")); }
private ConsoleString UpdateAssistiveText() { List <CommandLineAction> candidates; if (tb.Value.Length > 0) { var command = tb.Value.Split(" ".ToConsoleString()).FirstOrDefault(); command = command ?? ConsoleString.Empty; candidates = def.Actions.Where(a => a.DefaultAlias.StartsWith(command.StringValue, StringComparison.OrdinalIgnoreCase)).ToList(); if (candidates.Count == 0) { return($"\nNo actions start with {tb.Value.ToString()}".ToRed()); } } else { candidates = def.Actions; } List <ConsoleCharacter> buffer = new List <ConsoleCharacter>(); buffer.AddRange("\n".ToConsoleString()); foreach (var candidate in candidates) { buffer.AddRange(candidate.DefaultAlias.ToLower().ToCyan()); buffer.AddRange(" - ".ToGray()); buffer.AddRange(ConsoleString.Parse(candidate.Description)); buffer.AddRange("\n".ToConsoleString()); if (candidates.Count == 1) { foreach (var arg in candidate.Arguments) { buffer.AddRange(" -".ToConsoleString() + arg.DefaultAlias.ToWhite()); buffer.AddRange(arg.IsRequired ? " * ".ToRed() : " - ".ToConsoleString()); if (string.IsNullOrEmpty(arg.Description) == false) { buffer.AddRange(ConsoleString.Parse(arg.Description)); } buffer.AddRange("\n".ToConsoleString()); if (arg.IsEnum) { foreach (var enumString in arg.EnumValuesAndDescriptions) { buffer.AddRange((" " + enumString + "\n").ToConsoleString()); } } } } buffer.AddRange("\n".ToConsoleString()); } return(new ConsoleString(buffer)); }
public void TestConsoleStringEncodingBasic() { var inputString = "A".ToRed() + "BC".ToWhite(bg: ConsoleColor.Red) + "DE".ToBlue() + "FG".ToConsoleString(); var serialized = inputString.Serialize(); var readBack = ConsoleString.Parse(serialized); Assert.AreEqual(inputString, readBack); var serializedImplicitDefaults = inputString.Serialize(true); var readBackImplicitDefaults = ConsoleString.Parse(serialized); Assert.AreEqual(inputString, readBackImplicitDefaults); }
public void TestConsoleStringEncodingEdgeCases() { var parsed = ConsoleString.Parse("[B=Blue][Red]Adam"); Assert.AreEqual(new ConsoleString("Adam", ConsoleColor.Red, ConsoleColor.Blue), parsed); parsed = ConsoleString.Parse("[ B = Blue ][ Red ]Adam"); Assert.AreEqual(new ConsoleString("Adam", ConsoleColor.Red, ConsoleColor.Blue), parsed); parsed = ConsoleString.Parse(@"\[Adam\]"); Assert.AreEqual(new ConsoleString("[Adam]"), parsed); parsed = ConsoleString.Parse(@"\[Adam]"); Assert.AreEqual(new ConsoleString("[Adam]"), parsed); var original = "[Adam]"; var s = original.ToConsoleString().Serialize(); var back = ConsoleString.Parse(s); Assert.AreEqual(original, back.StringValue); }
public void GetIndex() { Assert.AreEqual(ConsoleString.Parse("t"), ConsoleString.Parse("test1")[0]); Assert.AreEqual(ConsoleString.Parse("e"), ConsoleString.Parse("test1")[1]); Assert.AreEqual(ConsoleString.Parse("1"), ConsoleString.Parse("test1")[^ 1]);
public void ParseNoColor() { Assert.AreEqual(ConsoleString.Empty, ConsoleString.Parse("[:]")); Assert.AreEqual(ConsoleString.Parse("test1"), ConsoleString.Parse("[:test1]")); Assert.AreEqual(ConsoleString.Parse("test1"), ConsoleString.Parse("[ :test1]")); }
/// <summary> /// Determines whether the specified string includes coloring syntax. /// </summary> /// <param name="input">The string that should be examined.</param> /// <returns><c>true</c>, if <paramref name="input"/> contains any "[Color:Text]" strings; otherwise, <c>false</c>.</returns> public static bool HasColors(string input) { return(ConsoleString.Parse(input, false).HasColors); }
/// <summary> /// Removes color-coding information from a string. /// The string "[Color:Text]" will print Text to the console using the default color as the foreground color. /// </summary> /// <param name="input">The string from which color information should be removed.</param> /// <returns>A new string, without any color information.</returns> public static string ClearColors(string input) { return(ConsoleString.Parse(input, true).ClearColors().Content); }
private void InitCommandBar() { var divider = ConsoleString.Parse("[B=White] "); buttonStack = commandBar.Add(new StackPanel() { X = 1, Margin = 1, Height = 1, Orientation = Orientation.Horizontal, AutoSize = true }).CenterVertically(); var newCommand = buttonStack.Add(new Button() { Text = "New".ToWhite(), Shortcut = new KeyboardShortcut(ConsoleKey.N, ConsoleModifiers.Alt) }); newCommand.Pressed.SubscribeForLifetime(NewCommandImpl, newCommand); var openCommand = buttonStack.Add(new Button() { Text = "Open".ToWhite(), Shortcut = new KeyboardShortcut(ConsoleKey.O, ConsoleModifiers.Alt) }); openCommand.Pressed.SubscribeForLifetime(OpenCommandImpl, openCommand); var saveCommand = buttonStack.Add(new Button() { Text = "Save".ToWhite(), Shortcut = new KeyboardShortcut(ConsoleKey.S, ConsoleModifiers.Alt) }); saveCommand.Pressed.SubscribeForLifetime(SaveCommandImpl, saveCommand); var saveAsCommand = buttonStack.Add(new Button() { Text = "Save as".ToWhite() }); saveAsCommand.Pressed.SubscribeForLifetime(SaveAsCommandImpl, saveAsCommand); var undoCommand = buttonStack.Add(new Button() { Text = "Undo".ToWhite(), Shortcut = new KeyboardShortcut(ConsoleKey.Z, ConsoleModifiers.Alt) }); undoCommand.Pressed.SubscribeForLifetime(UndoCommandImpl, undoCommand); var redoCommand = buttonStack.Add(new Button() { Text = "Redo".ToWhite(), Shortcut = new KeyboardShortcut(ConsoleKey.Y, ConsoleModifiers.Alt) }); redoCommand.Pressed.SubscribeForLifetime(RedoCommandImpl, redoCommand); buttonStack.Add(new Label() { Text = divider }); var frameUpCommand = buttonStack.Add(new Button() { Text = "Previous Frame".ToWhite(), Shortcut = new KeyboardShortcut(ConsoleKey.PageUp) }); frameUpCommand.Pressed.SubscribeForLifetime(FrameUpCommandImpl, frameUpCommand); var frameDownCommand = buttonStack.Add(new Button() { Text = "Next Frame".ToWhite(), Shortcut = new KeyboardShortcut(ConsoleKey.PageDown) }); frameDownCommand.Pressed.SubscribeForLifetime(FrameDownCommandImpl, frameDownCommand); var duplicateCommand = buttonStack.Add(new Button() { Text = "Duplicate Frame".ToWhite(), Shortcut = new KeyboardShortcut(ConsoleKey.D, ConsoleModifiers.Alt) }); duplicateCommand.Pressed.SubscribeForLifetime(DuplicateFrameCommandImpl, frameUpCommand); buttonStack.Add(new Label() { Text = divider }); foreach (var editorButton in editor.CreateStandardButtons()) { buttonStack.Add(editorButton); } }
protected virtual ConsoleString Parse(string content) => ConsoleString.Parse(content);