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;
}
}
}