Fix for line description being lost when reading disabled blocks
This commit is contained in:
parent
9fcb609a51
commit
56e163e3e0
|
@ -323,7 +323,34 @@ namespace Filtration.Tests.Translators
|
||||||
Assert.AreEqual(3, firstBlock.BlockItems.Count);
|
Assert.AreEqual(3, firstBlock.BlockItems.Count);
|
||||||
Assert.AreEqual(5, secondBlock.BlockItems.Count);
|
Assert.AreEqual(5, secondBlock.BlockItems.Count);
|
||||||
Assert.AreEqual(3, thirdBlock.BlockItems.Count);
|
Assert.AreEqual(3, thirdBlock.BlockItems.Count);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterScript_DisabledBlock_BlockDescriptionNotLost()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputScript = "Show" + Environment.NewLine +
|
||||||
|
" ItemLevel > 2" + Environment.NewLine +
|
||||||
|
" SetTextColor 255 40 0" + Environment.NewLine +
|
||||||
|
Environment.NewLine +
|
||||||
|
"#Disabled Block Start" + Environment.NewLine +
|
||||||
|
"# This is a disabled block" + Environment.NewLine +
|
||||||
|
"#Show" + Environment.NewLine +
|
||||||
|
"# ItemLevel > 2" + Environment.NewLine +
|
||||||
|
"#Disabled Block End";
|
||||||
|
|
||||||
|
|
||||||
|
var blockTranslator = new ItemFilterBlockTranslator(_testUtility.MockBlockGroupHierarchyBuilder.Object);
|
||||||
|
var translator = new ItemFilterScriptTranslator(blockTranslator,
|
||||||
|
_testUtility.MockBlockGroupHierarchyBuilder.Object);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = translator.TranslateStringToItemFilterScript(testInputScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(2, result.ItemFilterBlocks.Count);
|
||||||
|
var secondBlock = result.ItemFilterBlocks.Skip(1).First();
|
||||||
|
Assert.AreEqual("This is a disabled block", secondBlock.Description);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ItemFilterScriptTranslatorTestUtility
|
private class ItemFilterScriptTranslatorTestUtility
|
||||||
|
|
|
@ -50,7 +50,7 @@ using System.Windows;
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.7.*")]
|
[assembly: AssemblyVersion("0.6.*")]
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("Filtration.Tests")]
|
[assembly: InternalsVisibleTo("Filtration.Tests")]
|
||||||
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
|
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
|
|
@ -32,6 +32,7 @@ namespace Filtration.Translators
|
||||||
public string PreprocessDisabledBlocks(string inputString)
|
public string PreprocessDisabledBlocks(string inputString)
|
||||||
{
|
{
|
||||||
bool inDisabledBlock = false;
|
bool inDisabledBlock = false;
|
||||||
|
var showHideFound = false;
|
||||||
|
|
||||||
var lines = Regex.Split(inputString, "\r\n|\r|\n").ToList();
|
var lines = Regex.Split(inputString, "\r\n|\r|\n").ToList();
|
||||||
var linesToRemove = new List<int>();
|
var linesToRemove = new List<int>();
|
||||||
|
@ -49,6 +50,7 @@ namespace Filtration.Translators
|
||||||
if (lines[i].StartsWith("#Disabled Block End"))
|
if (lines[i].StartsWith("#Disabled Block End"))
|
||||||
{
|
{
|
||||||
inDisabledBlock = false;
|
inDisabledBlock = false;
|
||||||
|
showHideFound = false;
|
||||||
linesToRemove.Add(i);
|
linesToRemove.Add(i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -56,13 +58,24 @@ namespace Filtration.Translators
|
||||||
lines[i] = lines[i].TrimStart('#');
|
lines[i] = lines[i].TrimStart('#');
|
||||||
var spaceOrEndOfLinePos = lines[i].IndexOf(" ", StringComparison.Ordinal) > 0 ? lines[i].IndexOf(" ", StringComparison.Ordinal) : lines[i].Length;
|
var spaceOrEndOfLinePos = lines[i].IndexOf(" ", StringComparison.Ordinal) > 0 ? lines[i].IndexOf(" ", StringComparison.Ordinal) : lines[i].Length;
|
||||||
var lineOption = lines[i].Substring(0, spaceOrEndOfLinePos);
|
var lineOption = lines[i].Substring(0, spaceOrEndOfLinePos);
|
||||||
|
|
||||||
|
// If we haven't found a Show or Hide line yet, then this is probably the block comment.
|
||||||
|
// Put its # back on and skip to the next line.
|
||||||
|
if (lineOption != "Show" && lineOption != "Hide" && showHideFound == false)
|
||||||
|
{
|
||||||
|
lines[i] = "#" + lines[i];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (lineOption == "Show")
|
if (lineOption == "Show")
|
||||||
{
|
{
|
||||||
lines[i] = lines[i].Replace("Show", "ShowDisabled");
|
lines[i] = lines[i].Replace("Show", "ShowDisabled");
|
||||||
|
showHideFound = true;
|
||||||
}
|
}
|
||||||
else if (lineOption == "Hide")
|
else if (lineOption == "Hide")
|
||||||
{
|
{
|
||||||
lines[i] = lines[i].Replace("Hide", "HideDisabled");
|
lines[i] = lines[i].Replace("Hide", "HideDisabled");
|
||||||
|
showHideFound = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue