Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,10 @@ public SiteDynamicRootOriginFinder(IEntityService entityService, IDomainService
return null;
}


IEnumerable<string> reversePath = entity.Path.Split(",").Reverse();
foreach (var contentIdString in reversePath)
string[] contentIdStrings = entity.Path.Split(',');
for (int i = contentIdStrings.Length - 1; i >= 0; i--)
{
var contentId = int.Parse(contentIdString, NumberStyles.Integer, CultureInfo.InvariantCulture);
var contentId = int.Parse(contentIdStrings[i], NumberStyles.Integer, CultureInfo.InvariantCulture);
IEnumerable<IDomain> domains = _domainService.GetAssignedDomains(contentId, true);
if (!domains.Any())
{
Expand Down
28 changes: 14 additions & 14 deletions src/Umbraco.Core/Extensions/StringExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,17 @@ static StringExtensions()
/// <returns></returns>
public static int[] GetIdsFromPathReversed(this string path)
{
var nodeIds = path.Split(Constants.CharArrays.Comma, StringSplitOptions.RemoveEmptyEntries)
.Select(x =>
int.TryParse(x, NumberStyles.Integer, CultureInfo.InvariantCulture, out var output)
? Attempt<int>.Succeed(output)
: Attempt<int>.Fail())
.Where(x => x.Success)
.Select(x => x.Result)
.Reverse()
.ToArray();
return nodeIds;
string[] pathSegments = path.Split(Constants.CharArrays.Comma, StringSplitOptions.RemoveEmptyEntries);
List<int> nodeIds = new(pathSegments.Length);
for (int i = pathSegments.Length - 1; i >= 0; i--)
{
if (int.TryParse(pathSegments[i], NumberStyles.Integer, CultureInfo.InvariantCulture, out int pathSegment))
{
nodeIds.Add(pathSegment);
}
}

return nodeIds.ToArray();
}

/// <summary>
Expand All @@ -79,7 +80,7 @@ public static int[] GetIdsFromPathReversed(this string path)
public static string StripFileExtension(this string fileName)
{
// filenames cannot contain line breaks
if (fileName.Contains(Environment.NewLine) || fileName.Contains("\r") || fileName.Contains("\n"))
if (fileName.Contains('\n') || fileName.Contains('\r'))
{
return fileName;
}
Expand Down Expand Up @@ -434,8 +435,7 @@ public static IList<string> ToDelimitedList(this string list, string delimiter =
{
var delimiters = new[] { delimiter };
return !list.IsNullOrWhiteSpace()
? list.Split(delimiters, StringSplitOptions.RemoveEmptyEntries)
.Select(i => i.Trim())
? list.Split(delimiters, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
.ToList()
: new List<string>();
}
Expand Down Expand Up @@ -617,7 +617,7 @@ public static bool InvariantEndsWith(this string compare, string compareTo) =>
compare.EndsWith(compareTo, StringComparison.InvariantCultureIgnoreCase);

public static bool InvariantContains(this string compare, string compareTo) =>
compare.IndexOf(compareTo, StringComparison.OrdinalIgnoreCase) >= 0;
compare.Contains(compareTo, StringComparison.OrdinalIgnoreCase);

public static bool InvariantContains(this IEnumerable<string> compare, string compareTo) =>
compare.Contains(compareTo, StringComparer.InvariantCultureIgnoreCase);
Expand Down
21 changes: 16 additions & 5 deletions src/Umbraco.Core/Extensions/TreeEntityExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,20 @@ namespace Umbraco.Cms.Core.Extensions;

public static class TreeEntityExtensions
{
public static int[] AncestorIds(this ITreeEntity entity) => entity.Path
.Split(Constants.CharArrays.Comma)
.Select(item => int.Parse(item, CultureInfo.InvariantCulture))
.Take(new Range(Index.FromStart(1), Index.FromEnd(1)))
.ToArray();
public static int[] AncestorIds(this ITreeEntity entity)
{
string[] commaSeparatedValues = entity.Path.Split(Constants.CharArrays.Comma);
if (commaSeparatedValues.Length < 2)
{
return [];
}

int[] ancestorIds = new int[commaSeparatedValues.Length - 2];
for (int i = 1; i <= commaSeparatedValues.Length - 2; i++)
{
ancestorIds[i - 1] = int.Parse(commaSeparatedValues[i], CultureInfo.InvariantCulture);
}

return ancestorIds;
}
}
4 changes: 2 additions & 2 deletions src/Umbraco.Core/Models/PropertyTagsExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -226,12 +226,12 @@ private static IEnumerable<string> GetTagsValue(this IProperty property, TagsSto
switch (storageType)
{
case TagsStorageType.Csv:
return value.Split(new[] { delimiter }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim());
return value.Split([delimiter], StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);

case TagsStorageType.Json:
try
{
return serializer.Deserialize<string[]>(value)?.Select(x => x.Trim()) ?? Enumerable.Empty<string>();
return serializer.Deserialize<string[]>(value)?.Select(x => x.Trim()) ?? [];
}
catch (Exception)
{
Expand Down
6 changes: 3 additions & 3 deletions src/Umbraco.Core/Services/LocalizedTextServiceExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public static string Localize(this ILocalizedTextService manager, string area, s
return null;
}

if (text.StartsWith("#") == false)
if (text.StartsWith('#') == false)
{
return text;
}
Expand All @@ -64,7 +64,7 @@ public static string Localize(this ILocalizedTextService manager, string area, s
return value;
}

if (text.IndexOf('_') == -1)
if (!text.Contains('_'))
{
return text;
}
Expand All @@ -77,7 +77,7 @@ public static string Localize(this ILocalizedTextService manager, string area, s
}

value = manager.Localize(areaAndKey[0], areaAndKey[1]);
return value.StartsWith("[") ? text : value;
return value.StartsWith('[') ? text : value;
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
using Moq;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core.Extensions;
using Umbraco.Cms.Core.Models.Entities;
using Range = System.Range;

namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Extensions;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -387,4 +387,12 @@ private static void TryIsFullPath(string path, bool expectedIsFull, bool expecte
Assert.AreNotEqual(path, Path.GetFullPath(path));
}
}

[TestCase("1,2,3,4,5", "5,4,3,2,1")]
[TestCase("1,2,x,4,5", "5,4,2,1")]
public void GetIdsFromPathReversed(string input, string expected)
{
var ids = input.GetIdsFromPathReversed();
Assert.AreEqual(expected, string.Join(",", ids));
}
}