using System.Collections.Generic; using System.Linq; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Configuration.UmbracoSettings; namespace Umbraco.Extensions { /// /// Get concatenated user and default character replacements /// taking into account /// public static class RequestHandlerSettingsExtension { public static IEnumerable GetCharReplacements(this RequestHandlerSettings requestHandlerSettings) { if (!requestHandlerSettings.EnableDefaultCharReplacements) { return requestHandlerSettings.UserDefinedCharCollection ?? Enumerable.Empty(); } if (requestHandlerSettings.UserDefinedCharCollection == null || !requestHandlerSettings.UserDefinedCharCollection.Any()) { return RequestHandlerSettings.DefaultCharCollection; } foreach (CharItem defaultReplacement in RequestHandlerSettings.DefaultCharCollection) { foreach (CharItem userReplacement in requestHandlerSettings.UserDefinedCharCollection) { if (userReplacement.Char == defaultReplacement.Char) { defaultReplacement.Replacement = userReplacement.Replacement; } } } IEnumerable mergedCollections = RequestHandlerSettings.DefaultCharCollection.Union( requestHandlerSettings.UserDefinedCharCollection, new CharacterReplacementEqualityComparer()); return mergedCollections; } } }