Пример #1
0
 public AttributeInfo(string name, IValueInfo valueInfo, AttributeValidityEnum attributeValidity, string subTagName = null)
 {
     Name = name;
     ValueInfo = valueInfo ?? new StringValue();
     AttributeValidity = attributeValidity;
     SubTagName = subTagName;
 }
 public AttributeInfo(string name, IValueInfo valueInfo, AttributeValidityEnum attributeValidity, string subTagName = null)
 {
     Name              = name;
     ValueInfo         = valueInfo ?? new StringValue();
     AttributeValidity = attributeValidity;
     SubTagName        = subTagName;
 }
Пример #3
0
        public static string GetDescription(this IValueInfo valueInfo)
        {
            if (valueInfo != null)
            {
                return(valueInfo.Description);
            }

            return(null);
        }
Пример #4
0
        public static string GetName(this IValueInfo valueInfo)
        {
            if (valueInfo != null)
            {
                return(valueInfo.Name);
            }

            return(null);
        }
Пример #5
0
        /// <summary>
        /// 验证路径对应的目录是否存在。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="DirectoryNotFoundException">
        /// <paramref name="valueInfo"/> 的值对应的目录不存在。</exception>
        public static IValueInfo <string> IsExistingDirectory(
            this IValueInfo <string> valueInfo, string?message = null)
        {
            if (!Directory.Exists(valueInfo.Value))
            {
                ThrowHelper.ThrowDirectoryNotFoundException(message);
            }

            return(valueInfo);
        }
Пример #6
0
        /// <summary>
        /// 验证路径对应的文件是否存在。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="FileNotFoundException">
        /// <paramref name="valueInfo"/> 的值对应的文件不存在。</exception>
        public static IValueInfo <string> IsExistingFile(
            this IValueInfo <string> valueInfo, string?message = null)
        {
            if (!File.Exists(valueInfo.Value))
            {
                ThrowHelper.ThrowFileNotFoundException(valueInfo.Value, message);
            }

            return(valueInfo);
        }
Пример #7
0
        /// <summary>
        /// 验证集合中是否包含指定元素。
        /// </summary>
        /// <typeparam name="T">待验证的集合中的元素的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="value">集合中应该包含的元素。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值不包含 <paramref name="value"/>。</exception>
        public static IValueInfo <IEnumerable <T> > Contains <T>(
            this IValueInfo <IEnumerable <T> > valueInfo, T value, string?message = null)
        {
            if (!valueInfo.Value.Contains(value))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #8
0
        /// <summary>
        /// 验证字符串是否不包含指定字符串。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="value">不应包含的字符串。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值包含 <paramref name="value"/>。</exception>
        public static IValueInfo <string> NotContains(
            this IValueInfo <string> valueInfo, string value, string?message = null)
        {
            if (valueInfo.Value.Contains(value))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #9
0
        /// <summary>
        /// 验证对象是否不等于指定值。
        /// </summary>
        /// <typeparam name="T">待验证的对象的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="value">对象不应等于的值。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值等于 <paramref name="value"/>。</exception>
        public static IValueInfo <T> NotEqualsTo <T>(
            this IValueInfo <T> valueInfo, T value, string?message = null)
        {
            if (EqualityComparer <T> .Default.Equals(valueInfo.Value, value))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #10
0
        /// <summary>
        /// 验证对象是否包含在键的集合中。
        /// </summary>
        /// <typeparam name="T">待验证的对象的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="keyCollection">应包含当前对象的键的集合。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="KeyNotFoundException">
        /// <paramref name="valueInfo"/> 的值不在 <paramref name="keyCollection"/> 中。</exception>
        public static IValueInfo <T> IsInKeys <T>(
            this IValueInfo <T> valueInfo, IEnumerable <T> keyCollection, string?message = null)
        {
            if (!keyCollection.Contains(valueInfo.Value))
            {
                ThrowHelper.ThrowKeyNotFoundException(message);
            }

            return(valueInfo);
        }
Пример #11
0
        /// <summary>
        /// 验证字符串是否不以指定字符串开始。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="value">不应作为开始的字符串。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值以 <paramref name="value"/> 开始。</exception>
        public static IValueInfo <string> NotStartsWith(
            this IValueInfo <string> valueInfo, string value, string?message = null)
        {
            if (!valueInfo.Value.StartsWith(value))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #12
0
        /// <summary>
        /// 验证对象是否满足条件。
        /// </summary>
        /// <typeparam name="T">待验证的对象的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="predicate">对象应满足的条件。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="predicate"/> 返回 <see langword="false"/>。</exception>
        public static IValueInfo <T> MatchesCondition <T>(
            this IValueInfo <T> valueInfo, Predicate <T> predicate, string?message = null)
        {
            if (predicate(valueInfo.Value))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #13
0
        /// <summary>
        /// 验证集合中是否存在元素满足指定条件。
        /// </summary>
        /// <typeparam name="T">待验证的集合中的元素的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="predicate">集合中至少一个元素应该满足的条件。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException"><paramref name="valueInfo"/>
        /// 的值不存在满足 <paramref name="predicate"/> 条件的元素。</exception>
        public static IValueInfo <IEnumerable <T> > AnyMatches <T>(
            this IValueInfo <IEnumerable <T> > valueInfo, Predicate <T> predicate, string?message = null)
        {
            if (!valueInfo.Value.Any(item => predicate(item)))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #14
0
        /// <summary>
        /// 验证字符串的长度是否在指定范围内。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="minLength">字符串允许的最小长度。</param>
        /// <param name="maxLength">字符串允许的最大长度。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException"><paramref name="valueInfo"/> 的长度不在
        /// <paramref name="minLength"/> 和 <paramref name="maxLength"/> 之间。</exception>
        public static IValueInfo <string> LengthIsInRange(
            this IValueInfo <string> valueInfo, int minLength, int maxLength, string?message = null)
        {
            if ((valueInfo.Value.Length < minLength) || (valueInfo.Value.Length > maxLength))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message, new IndexOutOfRangeException());
            }

            return(valueInfo);
        }
Пример #15
0
        /// <summary>
        /// 验证对象是否满足条件。
        /// </summary>
        /// <typeparam name="T">待验证的对象的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="condition">对象应满足的条件。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="condition"/> 返回 <see langword="false"/>。</exception>
        public static IValueInfo <T> MatchesCondition <T>(
            this IValueInfo <T> valueInfo, bool condition, string?message = null)
        {
            if (condition)
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #16
0
        /// <summary>
        /// 验证字符串是否不匹配指定的正则表达式。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="regex">不应匹配的正则表达式。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值能够匹配 <paramref name="regex"/>。</exception>
        public static IValueInfo <string> IsNotMatch(
            this IValueInfo <string> valueInfo, Regex regex, string?message = null)
        {
            if (regex.IsMatch(valueInfo.Value))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #17
0
        /// <summary>
        /// 验证集合中元素的数量是否在指定范围内。
        /// </summary>
        /// <typeparam name="T">待验证的集合中的元素的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="minCount">集合允许的最小元素数量。</param>
        /// <param name="maxCount">集合允许的最大元素数量。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException"><paramref name="valueInfo"/> 的值的元素数量不在
        /// <paramref name="minCount"/> 和 <paramref name="maxCount"/> 之间。</exception>
        public static IValueInfo <IEnumerable <T> > CountIsInRange <T>(
            this IValueInfo <IEnumerable <T> > valueInfo, int minCount, int maxCount, string?message = null)
        {
            if ((valueInfo.Value.Count() < minCount) || (valueInfo.Value.Count() > maxCount))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message, new IndexOutOfRangeException());
            }

            return(valueInfo);
        }
Пример #18
0
        /// <summary>
        /// 验证集合是否不为空集合。
        /// </summary>
        /// <typeparam name="T">待验证的集合中的元素的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值为一个空集合。</exception>
        public static IValueInfo <IEnumerable <T> > IsNotEmpty <T>(
            this IValueInfo <IEnumerable <T> > valueInfo, string?message = null)
        {
            if (!valueInfo.Value.Any())
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #19
0
        /// <summary>
        /// 验证对象是否不等于 <see langword="null"/>。
        /// </summary>
        /// <typeparam name="T">待验证的对象的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="valueInfo"/> 的值等于 <see langword="null"/>。</exception>
        public static IValueInfo <T> NotEqualsToNull <T>(
            this IValueInfo <T> valueInfo, string?message = null)
        {
            if (object.Equals(valueInfo.Value, null))
            {
                ThrowHelper.ThrowArgumentNullException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #20
0
        /// <summary>
        /// 验证对象是否不包含在指定集合中。
        /// </summary>
        /// <typeparam name="T">待验证的对象的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="collection">不应包含当前对象的集合。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值在 <paramref name="collection"/> 中。</exception>
        public static IValueInfo <T> IsNotInCollection <T>(
            this IValueInfo <T> valueInfo, IEnumerable <T> collection, string?message = null)
        {
            if (!collection.Contains(valueInfo.Value))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #21
0
        /// <summary>
        /// 验证字符串是否不是由空白字符 (参见 <see cref="char.IsWhiteSpace(char)"/>) 组成。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值由空白字符组成。</exception>
        public static IValueInfo <string> IsNotWhiteSpace(
            this IValueInfo <string> valueInfo, string?message = null)
        {
            if (valueInfo.Value.All(char.IsWhiteSpace))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #22
0
        /// <summary>
        /// 验证字符串是否不是空字符串 <see cref="string.Empty"/>。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值等于 <see cref="string.Empty"/>。</exception>
        public static IValueInfo <string> IsNotNullOrEmpty(
            this IValueInfo <string> valueInfo, string?message = null)
        {
            if (valueInfo.Value.Length == 0)
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #23
0
        /// <summary>
        /// 验证对象是否不是默认值。
        /// </summary>
        /// <typeparam name="T">待验证的对象的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentOutOfRangeException">
        /// <paramref name="valueInfo"/> 的值为默认值。</exception>
        public static IValueInfo <T> IsNotDefault <T>(
            this IValueInfo <T> valueInfo, string?message = null)
            where T : struct
        {
            if (EqualityComparer <T> .Default.Equals(valueInfo.Value, default(T)))
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #24
0
        /// <summary>
        /// 验证整数是否在索引的有效范围内。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="startIndex">索引的开始值。</param>
        /// <param name="endIndex">索引的结束值。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="IndexOutOfRangeException"><paramref name="valueInfo"/> 的值不在
        /// <paramref name="startIndex"/> 和 <paramref name="endIndex"/> 之间。</exception>
        public static IValueInfo <int> IsInIndexRange(
            this IValueInfo <int> valueInfo, int startIndex, int endIndex, string?message = null)
        {
            if ((valueInfo.Value < startIndex) || (valueInfo.Value > endIndex))
            {
                ThrowHelper.ThrowArgumentOutOfRangeException(
                    valueInfo.Name, valueInfo.Value, message);
            }

            return(valueInfo);
        }
Пример #25
0
        /// <summary>
        /// 验证对象是否为指定类型的实例。
        /// </summary>
        /// <typeparam name="T">对象期望的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值不为 <typeparamref name="T"/> 类型的实例。</exception>
        public static IValueInfo <object> IsInstanceOf <T>(
            this IValueInfo <object> valueInfo, string?message = null)
        {
            if (valueInfo.Value is not T)
            {
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message,
                                                   new InvalidCastException());
            }

            return(valueInfo);
        }
Пример #26
0
        /// <summary>
        /// 验证对象是否为指定类型的实例。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="type">对象期望的类型。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值不为 <paramref name="type"/> 类型的实例。</exception>
        public static IValueInfo <object> IsInstanceOf(
            this IValueInfo <object> valueInfo, Type type, string?message = null)
        {
            if (!type.IsInstanceOfType(valueInfo.Value))
            {
                ThrowHelper.ThrowArgumentException(
                    valueInfo.Name, message, new InvalidCastException());
            }

            return(valueInfo);
        }
Пример #27
0
        /// <summary>
        /// 验证对象是否不为 <see langword="null"/>。
        /// </summary>
        /// <typeparam name="T">待验证的对象的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="valueInfo"/> 的值为 <see langword="null"/>。</exception>
        public static IValueInfo <T> IsNotNull <T>(
            this IValueInfo <T> valueInfo, string?message = null)
            where T : class
        {
            if (valueInfo.Value is null)
            {
                ThrowHelper.ThrowArgumentNullException(valueInfo.Name, message);
            }

            return(valueInfo);
        }
Пример #28
0
        /// <summary>
        /// 验证对象是否在指定范围内。
        /// </summary>
        /// <typeparam name="T">待验证的对象的类型。</typeparam>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="minValue">允许的最小值。</param>
        /// <param name="maxValue">允许的最大值。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentOutOfRangeException"><paramref name="valueInfo"/> 的值不在
        /// <paramref name="minValue"/> 和 <paramref name="maxValue"/> 之间。</exception>
        public static IValueInfo <T> IsInRange <T>(
            this IValueInfo <T> valueInfo, T minValue, T maxValue, string?message = null)
            where T : IComparable <T>
        {
            if ((valueInfo.Value.CompareTo(minValue) < 0) ||
                (valueInfo.Value.CompareTo(maxValue) > 0))
            {
                ThrowHelper.ThrowArgumentOutOfRangeException(
                    valueInfo.Name, valueInfo.Value, message);
            }

            return(valueInfo);
        }
Пример #29
0
        /// <summary>
        /// 验证路径是否合法。
        /// </summary>
        /// <param name="valueInfo">要验证的对象的值和名称。</param>
        /// <param name="message">自定义抛出异常的消息。</param>
        /// <returns><paramref name="valueInfo"/> 本身。</returns>
        /// <exception cref="ArgumentException">
        /// <paramref name="valueInfo"/> 的值不为一个合法路径。</exception>
        public static IValueInfo <string> IsValidPath(
            this IValueInfo <string> valueInfo, string?message = null)
        {
            try
            {
                Path.GetFullPath(valueInfo.Value);
            }
            catch (Exception e)
            {
                message ??= e.Message;
                ThrowHelper.ThrowArgumentException(valueInfo.Name, message, e);
            }

            return(valueInfo);
        }
Пример #30
0
        protected BaseValue(T value, IValueInfo info, ValueValidator <T> validator)
        {
            this.Info = info;

            // Set validator first since this.Value calls the validator.
            this.Validator = i =>
            {
                if (i != null && i.GetType().IsArray)
                {
                    throw new ArgumentException($"Use {typeof(BaseArrayValue<>)} for array types.");
                }
                return(validator == null ? true : validator(i));
            };

            this.Value = value;
        }
Пример #31
0
        public static string GetUnitLabel(this IValueInfo valueInfo, bool abreviation = true, bool plural = true)
        {
            if (valueInfo != null)
            {
                if (valueInfo.Unit != null)
                {
                    if (abreviation)
                    {
                        return(plural ? valueInfo.Unit.AbreviationPlural : valueInfo.Unit.AbreviationSingular);
                    }

                    return(plural ? valueInfo.Unit.NamePlural : valueInfo.Unit.NameSingular);
                }
            }

            return(null);
        }
Пример #32
0
        /// <summary>
        /// Creates a JSON field of the form:
        /// "field name": "field value"
        /// 
        /// This string is added to jsonFields.
        /// 
        /// If value is null or empty, nothing is added.
        /// </summary>
        /// <param name="jsonFields"></param>
        /// <param name="jsonFieldName">
        /// Name of the field, without quotes. Will not be escaped.
        /// </param>
        /// <param name="value">
        /// The unescaped value.
        /// </param>
        /// <param name="valueInfo">
        /// Used to validate the value, and to convert it to proper JavaScript.
        /// </param>
        internal static void AddJsonField(IList<string> jsonFields, string jsonFieldName, string value, IValueInfo valueInfo) 
        {
            // null - the string has not been set in the config
            // "" - the string has been set in the config to "" (a valid value)
            if (value == null) { return; }

            try
            {
                AddJsonField(jsonFields, jsonFieldName, valueInfo.ToJavaScript(value));
            }
            catch (Exception e)
            {
                throw new PropertyException(jsonFieldName, e);
            }
        }
Пример #33
0
        protected bool IsOnly(IValueInfo info, string what)
        {
            HashSet<string> testFor = new HashSet<string>(what.Split(','));

            foreach (string val in testFor)
            {
                if (!val.IsOneOf("","separator","attribute","alpha", "alphanumeric", "bound", "lower", "upper", "whitespace", "operator", "parenthesis","numericext","numeric"))
                {
                    throw new ArgumentException("Invalid parameter passed to IsOnly");
                }
            }

            bool valid=true;

            valid &= (testFor.Contains("alpha")) ? info.Alpha : !info.Alpha;
            valid &= testFor.Contains("alphanumeric") ? info.Alphanumeric : !info.Alphanumeric;
            valid &= testFor.Contains("numeric") ? info.Numeric : !info.Numeric;
            valid &= testFor.Contains("numericext") ? info.NumericExtended : !info.NumericExtended;
            valid &= testFor.Contains("lower") ? info.Lower : !info.Lower;
            valid &= testFor.Contains("upper") ? info.Upper : !info.Upper;
            valid &= testFor.Contains("whitespace") ? info.Whitespace : !info.Whitespace;
            valid &= testFor.Contains("operator") ? info.Operator : !info.Operator;

            if (info is ICharacterInfo)
            {
                var cInfo = (ICharacterInfo)info;
                valid &= testFor.Contains("parenthesis") ? cInfo.Parenthesis : !cInfo.Parenthesis;
                valid &= testFor.Contains("quote") ? cInfo.Quote : !cInfo.Quote;
                valid &= testFor.Contains("bound") ? cInfo.Bound : !cInfo.Bound;
                valid &= testFor.Contains("separator") ? cInfo.Separator : !cInfo.Separator;
            }
            if (info is IStringInfo)
            {
                var sInfo = (IStringInfo)info;
                valid &= testFor.Contains("attribute") ? sInfo.HtmlAttributeName : !sInfo.HtmlAttributeName;
            }

            return valid;
        }
Пример #34
0
 public Value(IEnumerable<string> textCollection, IValueInfo valueInfo)
 {
     TextCollection = textCollection;
     ValueInfo = valueInfo;
 }
Пример #35
0
 public Value(string text, IValueInfo valueInfo)
 {
     Text = text;
     ValueInfo = valueInfo;
 }
Пример #36
0
 // valueInfo will be applied to each individual string in value
 internal static void AddJsonField(IList<string> jsonFields, string jsonFieldName, IEnumerable<string> value, IValueInfo valueInfo)
 {
     try
     {
         // If an element in value is null, don't include it in the field. This can be used to create an empty array.
         AddJsonField(jsonFields, jsonFieldName, ToJavaScript(value.Where(v=>v != null).Select(v=>valueInfo.ToJavaScript(v))));
     }
     catch (Exception e)
     {
         throw new PropertyException(jsonFieldName, e);
     }
 }