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 effectiveFolderName = folderName ?? string.Empty;
|
||||
var originalValue = MaterializeTemplateValue(templateValue, allowRelativePath, defaultRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
||||
var measuredValue = MaterializeTemplateValueForLength(templateValue, allowRelativePath, defaultRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
||||
var currentRelativePath = GetCurrentRelativePath(effectiveSegments, defaultRelativePath);
|
||||
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 usesName = Regex.IsMatch(templateValue ?? string.Empty, @"{{\s*NAME\s*}}", RegexOptions.IgnoreCase);
|
||||
var strategy = string.Empty;
|
||||
@@ -105,11 +106,18 @@ namespace C4IT_IAM_Engine
|
||||
if (!changed)
|
||||
break;
|
||||
|
||||
originalValue = MaterializeTemplateValue(templateValue, allowRelativePath, defaultRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
||||
measuredValue = MaterializeTemplateValueForLength(templateValue, allowRelativePath, defaultRelativePath, effectiveSegments, effectiveFolderName, replacementTags);
|
||||
currentRelativePath = GetCurrentRelativePath(effectiveSegments, defaultRelativePath);
|
||||
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
|
||||
{
|
||||
SanitizedSegments = effectiveSegments,
|
||||
@@ -207,6 +215,14 @@ namespace C4IT_IAM_Engine
|
||||
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)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(templateValue))
|
||||
|
||||
Reference in New Issue
Block a user