Esempio n. 1
0
        //*-----------------------------------------------------------------------*

        //*-----------------------------------------------------------------------*
        //*	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);
        }
Esempio n. 2
0
        //*-----------------------------------------------------------------------*

        //*-----------------------------------------------------------------------*
        //*	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);
        }
Esempio n. 3
0
        //*-----------------------------------------------------------------------*

        //*-----------------------------------------------------------------------*
        //*	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);
        }
Esempio n. 4
0
        //*-----------------------------------------------------------------------*

        //*-----------------------------------------------------------------------*
        //*	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);
        }
Esempio n. 5
0
        //*-----------------------------------------------------------------------*

        //*-----------------------------------------------------------------------*
        //*	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());
        }