Fix relative path shortening loop
This commit is contained in:
@@ -78,8 +78,9 @@ namespace C4IT_IAM_Engine
|
|||||||
{
|
{
|
||||||
var effectiveSegments = (sanitizedSegments ?? Array.Empty<string>()).Where(i => i != null).ToArray();
|
var effectiveSegments = (sanitizedSegments ?? Array.Empty<string>()).Where(i => i != null).ToArray();
|
||||||
var effectiveFolderName = folderName ?? string.Empty;
|
var effectiveFolderName = folderName ?? string.Empty;
|
||||||
var originalValue = MaterializeTemplateValue(templateValue, allowRelativePath, defaultRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
var currentRelativePath = GetCurrentRelativePath(effectiveSegments, defaultRelativePath);
|
||||||
var measuredValue = MaterializeTemplateValueForLength(templateValue, allowRelativePath, defaultRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
var originalValue = MaterializeTemplateValue(templateValue, allowRelativePath, currentRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
||||||
|
var measuredValue = MaterializeTemplateValueForLength(templateValue, allowRelativePath, currentRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
||||||
var usesRelativePath = allowRelativePath && Regex.IsMatch(templateValue ?? string.Empty, @"{{\s*RELATIVEPATH", RegexOptions.IgnoreCase);
|
var usesRelativePath = allowRelativePath && Regex.IsMatch(templateValue ?? string.Empty, @"{{\s*RELATIVEPATH", RegexOptions.IgnoreCase);
|
||||||
var usesName = Regex.IsMatch(templateValue ?? string.Empty, @"{{\s*NAME\s*}}", RegexOptions.IgnoreCase);
|
var usesName = Regex.IsMatch(templateValue ?? string.Empty, @"{{\s*NAME\s*}}", RegexOptions.IgnoreCase);
|
||||||
var strategy = string.Empty;
|
var strategy = string.Empty;
|
||||||
@@ -105,11 +106,18 @@ namespace C4IT_IAM_Engine
|
|||||||
if (!changed)
|
if (!changed)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
originalValue = MaterializeTemplateValue(templateValue, allowRelativePath, defaultRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
currentRelativePath = GetCurrentRelativePath(effectiveSegments, defaultRelativePath);
|
||||||
measuredValue = MaterializeTemplateValueForLength(templateValue, allowRelativePath, defaultRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
originalValue = MaterializeTemplateValue(templateValue, allowRelativePath, currentRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
||||||
|
measuredValue = MaterializeTemplateValueForLength(templateValue, allowRelativePath, currentRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
||||||
}
|
}
|
||||||
|
|
||||||
var initialValue = MaterializeTemplateValue(templateValue, allowRelativePath, defaultRelativePath, sanitizedSegments, folderName, replacementTags);
|
var initialValue = MaterializeTemplateValue(
|
||||||
|
templateValue,
|
||||||
|
allowRelativePath,
|
||||||
|
GetCurrentRelativePath(sanitizedSegments, defaultRelativePath),
|
||||||
|
sanitizedSegments,
|
||||||
|
folderName,
|
||||||
|
replacementTags);
|
||||||
var result = new BoundedTemplateContext
|
var result = new BoundedTemplateContext
|
||||||
{
|
{
|
||||||
SanitizedSegments = effectiveSegments,
|
SanitizedSegments = effectiveSegments,
|
||||||
@@ -207,6 +215,14 @@ namespace C4IT_IAM_Engine
|
|||||||
return NormalizeLoopPlaceholderLength(templateValue).Length;
|
return NormalizeLoopPlaceholderLength(templateValue).Length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string GetCurrentRelativePath(string[] sanitizedSegments, string fallbackRelativePath)
|
||||||
|
{
|
||||||
|
if (sanitizedSegments != null && sanitizedSegments.Length > 0)
|
||||||
|
return string.Join("_", sanitizedSegments);
|
||||||
|
|
||||||
|
return fallbackRelativePath ?? string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
private static int GetLoopReservationLength(string templateValue)
|
private static int GetLoopReservationLength(string templateValue)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(templateValue))
|
if (string.IsNullOrWhiteSpace(templateValue))
|
||||||
|
|||||||
Reference in New Issue
Block a user