using System.Linq; using System.Text.RegularExpressions; using Base.Utils; namespace Base{ public sealed class Command{ private static readonly Regex RegexBalancedBrackets = new Regex(RegexUtils.Balance(@"\[", @"\]"), RegexOptions.Compiled); private static readonly Regex RegexBalancedParentheses = new Regex(RegexUtils.Balance(@"\(", @"\)"), RegexOptions.Compiled); public string Text { get; private set; } public string PotentialAppName{ get{ int firstSpace = Text.IndexOf(' '); if (firstSpace == -1){ return null; } string firstToken = Text.Substring(0, firstSpace); if (!firstToken.All(char.IsLetter)){ return null; } return firstToken; } } public bool IsSingleToken{ get{ return Text.IndexOf(' ') == -1; } } public Command(string text){ this.Text = text; } public Command ReplaceBrackets(MatchEvaluator evaluator){ return new Command(RegexBalancedParentheses.Replace(RegexBalancedBrackets.Replace(Text, evaluator), evaluator)); } } }