Пример #1
0
        /// <summary>
        /// Check if given <paramref name="name"/> is a valid matrix name
        /// <para>Throws <see cref="CompilerMessage.MAT_NAME_EMPTY"/> if <paramref name="throwOnBadName"/> is "true"</para>
        /// </summary>
        /// <param name="name">Name for a matrix</param>
        /// <param name="throwOnBadName">Wheter to throw if name is invalid</param>
        /// <returns>True if given <paramref name="name"/> is valid, false otherwise</returns>
        public static bool ValidMatrixName(string name,
                                           bool throwOnBadName = false)
        {
            name = name.Trim();
            Regex name_regex = new Regex(@"^\w*|[0-9]*$", RegexOptions.Compiled | RegexOptions.IgnoreCase);

            if (string.IsNullOrEmpty(name.Replace(" ", "")))
            {
                return(throwOnBadName ? throw new System.Exception(CompilerMessage.MAT_NAME_EMPTY) : false);
            }

            return(name.Length > (int)MatrisLimits.forName
                ? throwOnBadName ? throw new System.Exception(CompilerMessage.MAT_NAME_CHAR_LIMIT(name.Length)) : false
                : !"0123456789".Contains(name[0]) &&
                   (name_regex.Match(name).Groups[0].Value == name) ||
                   (throwOnBadName ? throw new System.Exception(CompilerMessage.MAT_NAME_INVALID) : false));
        }