예제 #1
0
			/// <summary>
			/// Self initializing constructor.
			/// </summary>
			/// <param name="aliasMask">Template String used like the String.Format(); method in c#.</param>
			/// <param name="titleCase">Should the Name be converted to Title Case?</param>
			/// <param name="autoNumberDuplicates">When true duplicate aliases are auto numbered.</param>
			/// <param name="preserveCustomAliases">When true, any alias not matching the given mask will be ignored</param>
			/// <param name="useShorthand">When true, the shorthand syntax is used</param>
			/// <param name="spaceHandler"> How should spaces be handled?</param>
			public Settings( string aliasMask = "{0}.{1}", bool titleCase = true, bool autoNumberDuplicates = true, bool preserveCustomAliases = true, bool useShorthand = false, SpaceHandling spaceHandler = SpaceHandling.Snake_Case )
			{
				AliasMask = aliasMask;
				AutoNumberDuplicates = autoNumberDuplicates;
				PreserveCustomAliases = preserveCustomAliases;
				SpaceHandler = spaceHandler;
				TitleCase = titleCase;
				UseShorthand = useShorthand;
			}
		public static bool GetLocallyUniqueItemName(Item item, string disallowed, SpaceHandling removeSpaces, CaseHandling forceLowercase, bool replaceDiacritics, out string uniqueName)
		{
			var newName = GetNewItemName(item.Name, disallowed, removeSpaces, forceLowercase, replaceDiacritics);
			var finalName = newName;

			var nameSuffix = 0;
			while (NameIsTakenBySibling(item, finalName))
			{
				nameSuffix++;
				finalName = newName + "-" + nameSuffix.ToString(CultureInfo.InvariantCulture);
			}

			uniqueName = finalName;
			return true;
		}
        public static bool GetLocallyUniqueItemName(Item item, string disallowed, SpaceHandling removeSpaces, CaseHandling forceLowercase, bool replaceDiacritics, out string uniqueName)
        {
            var newName   = GetNewItemName(item.Name, disallowed, removeSpaces, forceLowercase, replaceDiacritics);
            var finalName = newName;

            var nameSuffix = 0;

            while (NameIsTakenBySibling(item, finalName))
            {
                nameSuffix++;
                finalName = newName + "-" + nameSuffix.ToString(CultureInfo.InvariantCulture);
            }

            uniqueName = finalName;
            return(true);
        }
        /// <summary>
        /// Actual method where string manipulation takes place.
        /// </summary>
        /// <param name="oldName">The original name of the target Item.</param>
        /// <param name="disallowed">Regex string of characters that should be stripped from the name.</param>
        /// <param name="removeSpaces">Desired behavior for space replacement in the name.</param>
        /// <param name="forceLowercase">Desired behavior for mixed-case names.</param>
        /// <param name="replaceDiacritics">Desired behavior for handling of diacritics in text.</param>
        /// <returns>The modified string to use as the name.</returns>
        public static string GetNewItemName(string oldName, string disallowed, SpaceHandling removeSpaces, CaseHandling forceLowercase, bool replaceDiacritics)
        {
            var spaceReplacer = string.Empty;

            if (removeSpaces == SpaceHandling.UseDash)
            {
                spaceReplacer = "-";
            }

            var name = oldName.Replace(" ", spaceReplacer);

            name = Regex.Replace(name, disallowed, string.Empty);

            if (replaceDiacritics)
            {
                name = ReplaceDiacritics(name);
            }

            return(forceLowercase == CaseHandling.ForceLowercase ? name.ToLower(CultureInfo.InvariantCulture) : name);
        }
		/// <summary>
		/// Actual method where string manipulation takes place.
		/// </summary>
		/// <param name="oldName">The original name of the target Item.</param>
		/// <param name="disallowed">Regex string of characters that should be stripped from the name.</param>
		/// <param name="removeSpaces">Desired behavior for space replacement in the name.</param>
		/// <param name="forceLowercase">Desired behavior for mixed-case names.</param>
		/// <param name="replaceDiacritics">Desired behavior for handling of diacritics in text.</param>
		/// <returns>The modified string to use as the name.</returns>
		public static string GetNewItemName(string oldName, string disallowed, SpaceHandling removeSpaces, CaseHandling forceLowercase, bool replaceDiacritics)
		{
			var spaceReplacer = string.Empty;

			if (removeSpaces == SpaceHandling.UseDash)
			{
				spaceReplacer = "-";
			}

			var name = oldName.Replace(" ", spaceReplacer);
			name = Regex.Replace(name, disallowed, string.Empty);

			if (replaceDiacritics)
			{
				name = ReplaceDiacritics(name);
			}

			return forceLowercase == CaseHandling.ForceLowercase ? name.ToLower(CultureInfo.InvariantCulture) : name;
		}