//*-----------------------------------------------------------------------* //*-----------------------------------------------------------------------* //* RemoveBraces * //*-----------------------------------------------------------------------* /// <summary> /// Remove the specified types of braces from the caller's expression. /// </summary> /// <param name="expression"> /// Expression to inspect. /// </param> /// <param name="brace"> /// Type of brace set to remove. /// </param> /// <returns> /// The caller's expression with the specified types of braces removed. /// </returns> public static string RemoveBraces(string expression, BraceEnumType brace) { string result = ""; if (expression?.Length > 0 && brace != BraceEnumType.None) { result = expression; if ((brace & BraceEnumType.Apostrophe) > 0) { result = result.Replace("'", ""); } if ((brace & BraceEnumType.Curly) > 0) { result = result.Replace("{", "").Replace("}", ""); } if ((brace & BraceEnumType.Parenthesis) > 0) { result = result.Replace("(", "").Replace(")", ""); } if ((brace & BraceEnumType.Quote) > 0) { result = result.Replace("\"", ""); } if ((brace & BraceEnumType.Square) > 0) { result = result.Replace("[", "").Replace("]", ""); } } return(result); }
//*-----------------------------------------------------------------------* //*-----------------------------------------------------------------------* //* IsBraced * //*-----------------------------------------------------------------------* /// <summary> /// Return a value indicating whether the caller's phrase in enclosed /// within one of the specified brace types. /// </summary> /// <param name="value"> /// Value to inspect. /// </param> /// <param name="brace"> /// Brace types to check. /// </param> /// <returns> /// A value indicating whether the caller's phrase is fully enclosed /// within one of the specified brace types. /// </returns> public static bool IsBraced(string value, BraceEnumType brace) { bool result = false; if (value?.Length > 1 && brace != BraceEnumType.None) { if ((brace & BraceEnumType.Apostrophe) != 0) { result = (value.StartsWith("'") && value.EndsWith("'")); } if (!result && (brace & BraceEnumType.Curly) != 0) { result = (value.StartsWith("{") && value.EndsWith("}")); } if (!result && (brace & BraceEnumType.Parenthesis) != 0) { result = (value.StartsWith("(") && value.EndsWith(")")); } if (!result && (brace & BraceEnumType.Quote) != 0) { result = (value.StartsWith("\"") && value.EndsWith("\"")); } if (!result && (brace & BraceEnumType.Square) != 0) { result = (value.StartsWith("[") && value.EndsWith("]")); } } return(result); }
//*-----------------------------------------------------------------------* //*-----------------------------------------------------------------------* //* GetBraceType * //*-----------------------------------------------------------------------* /// <summary> /// Return the type of bracing currently surrounding the caller's value. /// </summary> /// <param name="value"> /// The enclosed variable. /// </param> /// <returns> /// Type of brace, if any, surrounding the caller's string. /// </returns> public static BraceEnumType GetBraceType(string value) { BraceEnumType result = BraceEnumType.None; if (value?.Length > 1) { if (value.StartsWith("'") && value.EndsWith("'")) { result = BraceEnumType.Apostrophe; } else if (value.StartsWith("{") && value.EndsWith("}")) { result = BraceEnumType.Curly; } else if (value.StartsWith("(") && value.EndsWith(")")) { result = BraceEnumType.Parenthesis; } else if (value.StartsWith("\"") && value.EndsWith("\"")) { result = BraceEnumType.Quote; } else if (value.StartsWith("[") && value.EndsWith("]")) { result = BraceEnumType.Square; } } return(result); }
//*-----------------------------------------------------------------------* //*-----------------------------------------------------------------------* //* HasBraces * //*-----------------------------------------------------------------------* /// <summary> /// Return a value indicating whether the caller's phrase includes /// one or more of the specified brace types. /// </summary> /// <param name="value"> /// Value to inspect. /// </param> /// <param name="brace"> /// Brace types to check. /// </param> /// <returns> /// A value indicating whether the phrase includes one or more of the /// specified brace types. /// </returns> public static bool HasBraces(string value, BraceEnumType brace) { bool result = false; if (value?.Length > 1 && brace != BraceEnumType.None) { if ((brace & BraceEnumType.Apostrophe) != 0) { result |= (value.IndexOf("'") > -1); } if (!result && (brace & BraceEnumType.Curly) != 0) { result |= (value.IndexOf("{") > -1 && value.IndexOf("}") > -1); } if (!result && (brace & BraceEnumType.Parenthesis) != 0) { result |= (value.IndexOf("(") > -1 && value.IndexOf(")") > -1); } if (!result && (brace & BraceEnumType.Quote) != 0) { result |= (value.IndexOf("\"") > -1); } if (!result && (brace & BraceEnumType.Square) != 0) { result |= (value.IndexOf("[") > -1 && value.IndexOf("]") > -1); } } return(result); }
//*-----------------------------------------------------------------------* //*-----------------------------------------------------------------------* //* GetBraceItemPattern * //*-----------------------------------------------------------------------* /// <summary> /// Return a regular expression item list pattern that allows the user to /// specify which brace types are allowed. /// </summary> /// <param name="keyName"> /// Name of the group key for which matches will be retrieved. /// </param> /// <param name="brace"> /// Composite brace specification of one or more types. /// </param> /// <param name="prefix"> /// Optional regular expression pattern prefix. /// </param> /// <param name="suffix"> /// Optional regular expression pattern suffix. /// </param> /// <returns> /// Regular expression pattern used for enumerating through /// braced values. /// </returns> public static string GetBraceItemPattern(string keyName, BraceEnumType brace, string prefix = "", string suffix = "") { StringBuilder result = new StringBuilder(); if (keyName?.Length > 0 && brace != BraceEnumType.None) { if ((brace & BraceEnumType.Apostrophe) != 0) { if (result.Length > 0) { result.Append("|"); } result.Append("('(?<"); result.Append(keyName); result.Append(">.*)')"); } if ((brace & BraceEnumType.Curly) != 0) { if (result.Length > 0) { result.Append("|"); } result.Append(@"(\{(?<"); result.Append(keyName); result.Append(@">.*)\})"); } if ((brace & BraceEnumType.Parenthesis) != 0) { if (result.Length > 0) { result.Append("|"); } result.Append(@"(\((?<"); result.Append(keyName); result.Append(@">.*)\))"); } if ((brace & BraceEnumType.Quote) != 0) { if (result.Length > 0) { result.Append("|"); } result.Append("(\\\"(?<"); result.Append(keyName); result.Append(">.*)\\\")"); } if ((brace & BraceEnumType.Square) != 0) { if (result.Length > 0) { result.Append("|"); } result.Append(@"(\[(?<"); result.Append(keyName); result.Append(@">.*)\])"); } if (result.Length > 0) { if (prefix?.Length > 0) { result.Insert(0, prefix); } result.Insert(0, @"^\s*"); if (suffix?.Length > 0) { result.Append(suffix); } result.Append(@"\s*$"); } } return(result.ToString()); }