From c79652d2fdac66f77fbbee04175db034fcbee9b2 Mon Sep 17 00:00:00 2001 From: Haven1433 Date: Mon, 29 Aug 2022 20:49:59 -0500 Subject: [PATCH] don't copy text for splitter segments these have no data and are purely for modeling --- src/HexManiac.Core/Models/Runs/ArrayRun.cs | 10 ++++++---- src/HexManiac.Tests/TableTests.cs | 11 +++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/HexManiac.Core/Models/Runs/ArrayRun.cs b/src/HexManiac.Core/Models/Runs/ArrayRun.cs index 3664f8f4..90d176d7 100644 --- a/src/HexManiac.Core/Models/Runs/ArrayRun.cs +++ b/src/HexManiac.Core/Models/Runs/ArrayRun.cs @@ -122,10 +122,12 @@ namespace HavenSoft.HexManiac.Core.Models.Runs { text.Append($"{ViewPort.CommentStart}{names[i]}{ViewPort.CommentStart}, "); } - text.Append(segment.ToText(data, offset, deep).Trim()); - if (j + 1 < self.ElementContent.Count) text.Append(", "); - offset += segment.Length; - length -= segment.Length; + if (segment.Length > 0) { + text.Append(segment.ToText(data, offset, deep).Trim()); + if (j + 1 < self.ElementContent.Count) text.Append(", "); + offset += segment.Length; + length -= segment.Length; + } } if (i + 1 < self.ElementCount) text.Append(Environment.NewLine); offsets = new ArrayOffset(i + 1, 0, offset, 0); diff --git a/src/HexManiac.Tests/TableTests.cs b/src/HexManiac.Tests/TableTests.cs index ef776551..e9592dae 100644 --- a/src/HexManiac.Tests/TableTests.cs +++ b/src/HexManiac.Tests/TableTests.cs @@ -1115,6 +1115,17 @@ namespace HavenSoft.HexManiac.Tests { Assert.Equal(3, Model[0x20]); } + [Fact] + public void TableWithSplitterSegment_Copy_SplitterSegmentNotCopied() { + ViewPort.Edit("^table[a:: b:: | c:: d::]3 "); + ViewPort.SelectionStart = new(4, 1); + ViewPort.SelectionEnd = new(11, 1); + + ViewPort.Copy.Execute(FileSystem); + + Assert.Equal("0, 0,", FileSystem.CopyText.value.Trim()); + } + private void ArrangeTrainerPokemonTeamData(byte structType, byte pokemonCount, int trainerCount) { CreateTextTable(HardcodeTablesModel.PokemonNameTable, 0x180, "ABCDEFGHIJKLMNOP".Select(c => c.ToString()).ToArray()); CreateTextTable(HardcodeTablesModel.MoveNamesTable, 0x1B0, "qrstuvwxyz".Select(c => c.ToString()).ToArray());