merge v10 to v11

This commit is contained in:
Bjarke Berg
2022-08-18 14:38:28 +02:00
4076 changed files with 320268 additions and 303657 deletions

View File

@@ -1,76 +1,62 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.Extensions.Configuration;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.Configuration.UmbracoSettings;
namespace Umbraco.Extensions
namespace Umbraco.Extensions;
/// <summary>
/// Get concatenated user and default character replacements
/// taking into account <see cref="RequestHandlerSettings.EnableDefaultCharReplacements" />
/// </summary>
public static class RequestHandlerSettingsExtension
{
/// <summary>
/// Get concatenated user and default character replacements
/// taking into account <see cref="RequestHandlerSettings.EnableDefaultCharReplacements"/>
/// Get concatenated user and default character replacements
/// taking into account <see cref="RequestHandlerSettings.EnableDefaultCharReplacements" />
/// </summary>
public static class RequestHandlerSettingsExtension
public static IEnumerable<CharItem> GetCharReplacements(this RequestHandlerSettings requestHandlerSettings)
{
/// <summary>
/// Get concatenated user and default character replacements
/// taking into account <see cref="RequestHandlerSettings.EnableDefaultCharReplacements"/>
/// </summary>
public static IEnumerable<CharItem> GetCharReplacements(this RequestHandlerSettings requestHandlerSettings)
if (requestHandlerSettings.EnableDefaultCharReplacements is false)
{
if (requestHandlerSettings.EnableDefaultCharReplacements is false)
{
return requestHandlerSettings.UserDefinedCharCollection ?? Enumerable.Empty<CharItem>();
}
if (requestHandlerSettings.UserDefinedCharCollection == null || requestHandlerSettings.UserDefinedCharCollection.Any() is false)
{
return RequestHandlerSettings.DefaultCharCollection;
}
return MergeUnique(requestHandlerSettings.UserDefinedCharCollection, RequestHandlerSettings.DefaultCharCollection);
return requestHandlerSettings.UserDefinedCharCollection ?? Enumerable.Empty<CharItem>();
}
private static IEnumerable<CharItem> GetReplacements(IConfiguration configuration, string key)
if (requestHandlerSettings.UserDefinedCharCollection == null ||
requestHandlerSettings.UserDefinedCharCollection.Any() is false)
{
var replacements = new List<CharItem>();
IEnumerable<IConfigurationSection> config = configuration.GetSection(key).GetChildren();
foreach (IConfigurationSection section in config)
{
var @char = section.GetValue<string>(nameof(CharItem.Char));
var replacement = section.GetValue<string>(nameof(CharItem.Replacement));
replacements.Add(new CharItem { Char = @char, Replacement = replacement });
}
return replacements;
return RequestHandlerSettings.DefaultCharCollection;
}
/// <summary>
/// Merges two IEnumerable of CharItem without any duplicates, items in priorityReplacements will override those in alternativeReplacements
/// </summary>
private static IEnumerable<CharItem> MergeUnique(
IEnumerable<CharItem> priorityReplacements,
IEnumerable<CharItem> alternativeReplacements)
{
var priorityReplacementsList = priorityReplacements.ToList();
var alternativeReplacementsList = alternativeReplacements.ToList();
return MergeUnique(
requestHandlerSettings.UserDefinedCharCollection,
RequestHandlerSettings.DefaultCharCollection);
}
foreach (CharItem alternativeReplacement in alternativeReplacementsList)
/// <summary>
/// Merges two IEnumerable of CharItem without any duplicates, items in priorityReplacements will override those in
/// alternativeReplacements
/// </summary>
private static IEnumerable<CharItem> MergeUnique(
IEnumerable<CharItem> priorityReplacements,
IEnumerable<CharItem> alternativeReplacements)
{
var priorityReplacementsList = priorityReplacements.ToList();
var alternativeReplacementsList = alternativeReplacements.ToList();
foreach (CharItem alternativeReplacement in alternativeReplacementsList)
{
foreach (CharItem priorityReplacement in priorityReplacementsList)
{
foreach (CharItem priorityReplacement in priorityReplacementsList)
if (priorityReplacement.Char == alternativeReplacement.Char)
{
if (priorityReplacement.Char == alternativeReplacement.Char)
{
alternativeReplacement.Replacement = priorityReplacement.Replacement;
}
alternativeReplacement.Replacement = priorityReplacement.Replacement;
}
}
return priorityReplacementsList.Union<CharItem>(
alternativeReplacementsList,
new CharacterReplacementEqualityComparer());
}
return priorityReplacementsList.Union<CharItem>(
alternativeReplacementsList,
new CharacterReplacementEqualityComparer());
}
}