public virtual string ToUnicodeCategoryString(RegexUnicodeCategoryNode unicodeCategoryNode) { if (!IsUnicodeCategorySupported) { throw new UnicodeCategoryNotSupportedException(RegexLanguage); } if (unicodeCategoryNode == null) { throw new ArgumentNullException(nameof(unicodeCategoryNode)); } var sb = new StringBuilder(); if (!unicodeCategoryNode.Negative) { sb.Append(ToTokenString(RegexToken.UnicodeCategoryOpen)) .Append(unicodeCategoryNode.Pattern) .Append(ToTokenString(RegexToken.UnicodeCategoryClose)); } else { sb.Append(ToTokenString(RegexToken.NegativeUnicodeCategoryOpen)) .Append(unicodeCategoryNode.Pattern) .Append(ToTokenString(RegexToken.NegativeUnicodeCategoryClose)); } return(AddQuantifier(sb.ToString(), unicodeCategoryNode.Minimum, unicodeCategoryNode.Maximum, unicodeCategoryNode.RegexQuantifierOption)); }
/// <summary> /// Add an existing <see cref="RegexUnicodeCategoryNode"/> to the generator. /// <seealso cref="RegexUnicodeCategoryNode"/> /// </summary> /// <param name="unicodeCategory"><see cref="RegexUnicodeCategoryNode"/> to be added.</param> /// <returns><see cref="RegexGenerator"/></returns> /// <exception cref="UnicodeCategoryNotSupportedException">Unicode category is not supported by <see cref="RegexLanguage"/>.</exception> public RegexGenerator AddUnicodeCategory(RegexUnicodeCategoryNode unicodeCategory) { if (!IsUnicodeCategorySupported) { throw new UnicodeCategoryNotSupportedException(RegexLanguage); } return(Add(unicodeCategory)); }
/// <summary> /// Create and add <see cref="RegexUnicodeCategoryNode"/> to the generator. /// <seealso cref="RegexUnicodeCategoryNode(string, bool, int?, int?, RegexQuantifierOption)"/> /// <seealso cref="AddUnicodeCategory(RegexUnicodeCategoryNode)"/> /// </summary> /// <param name="unicodeDesignation">Unicode designation or named block.</param> /// <param name="negative">Optional value to determine if negate the category.</param> /// <param name="min">Optional minimum number of occurance.</param> /// <param name="max">Optional maximum number of occurance.</param> /// <param name="quantifierOption">Optional quantifier option.</param> /// <returns><see cref="RegexGenerator"/></returns> /// <exception cref="UnicodeCategoryNotSupportedException">Unicode category is not supported by <see cref="RegexLanguage"/>.</exception> public RegexGenerator AddUnicodeCategory(string unicodeDesignation, bool negative = false, int?min = null, int?max = null, RegexQuantifierOption quantifierOption = RegexQuantifierOption.Greedy) { var unicodeCategoryNode = new RegexUnicodeCategoryNode(unicodeDesignation, negative, min, max, quantifierOption); return(AddUnicodeCategory(unicodeCategoryNode)); }