diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 1bd64c1..973b787 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -37,7 +37,7 @@ jobs:
- name: setup dotnet
uses: actions/setup-dotnet@v5
with:
- dotnet-version: 8
+ dotnet-version: 10
- name: restore
run: dotnet restore
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index c773c07..acc6e55 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -33,7 +33,7 @@ jobs:
- name: setup dotnet
uses: actions/setup-dotnet@v5
with:
- dotnet-version: 8
+ dotnet-version: 10
- name: restore
run: dotnet restore
diff --git a/Kavod.Vba.Compression.sln b/Kavod.Vba.Compression.sln
deleted file mode 100644
index 16ae967..0000000
--- a/Kavod.Vba.Compression.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.28010.2026
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kavod.Vba.Compression", "src\Kavod.Vba.Compression\Kavod.Vba.Compression.csproj", "{E1DA4414-FAFE-4BE6-A380-BFE7AE1B98FF}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kavod.Vba.Compression.Tests", "src\Kavod.Vba.Compression.Tests\Kavod.Vba.Compression.Tests.csproj", "{59AADB4B-0D8D-4A62-8369-6B38C6B835A4}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {E1DA4414-FAFE-4BE6-A380-BFE7AE1B98FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E1DA4414-FAFE-4BE6-A380-BFE7AE1B98FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E1DA4414-FAFE-4BE6-A380-BFE7AE1B98FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E1DA4414-FAFE-4BE6-A380-BFE7AE1B98FF}.Release|Any CPU.Build.0 = Release|Any CPU
- {59AADB4B-0D8D-4A62-8369-6B38C6B835A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {59AADB4B-0D8D-4A62-8369-6B38C6B835A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {59AADB4B-0D8D-4A62-8369-6B38C6B835A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {59AADB4B-0D8D-4A62-8369-6B38C6B835A4}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {B654E8D8-8DF4-4111-995C-F224E49CDA0C}
- EndGlobalSection
-EndGlobal
diff --git a/Kavod.Vba.Compression.sln.DotSettings b/Kavod.Vba.Compression.sln.DotSettings
deleted file mode 100644
index 80f0b37..0000000
--- a/Kavod.Vba.Compression.sln.DotSettings
+++ /dev/null
@@ -1,4 +0,0 @@
-
- WARNING
- Required
- True
\ No newline at end of file
diff --git a/Kavod.Vba.Compression.slnx b/Kavod.Vba.Compression.slnx
new file mode 100644
index 0000000..8d2513c
--- /dev/null
+++ b/Kavod.Vba.Compression.slnx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index c4a638c..e9087c2 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -1,9 +1,9 @@
- 2.0.0
- netstandard2.0;net8.0
- 12.0
+ 3.0.0
+ net10.0
+ 14.0
diff --git a/src/Kavod.Vba.Compression.Tests/Kavod.Vba.Compression.Tests.csproj b/src/Kavod.Vba.Compression.Tests/Kavod.Vba.Compression.Tests.csproj
index 609db92..fc105da 100644
--- a/src/Kavod.Vba.Compression.Tests/Kavod.Vba.Compression.Tests.csproj
+++ b/src/Kavod.Vba.Compression.Tests/Kavod.Vba.Compression.Tests.csproj
@@ -1,8 +1,7 @@
- net48;net8.0
- net8.0
+ net10.0
false
diff --git a/src/Kavod.Vba.Compression/CompressedChunk.cs b/src/Kavod.Vba.Compression/CompressedChunk.cs
index 8e33591..cfe2ae2 100644
--- a/src/Kavod.Vba.Compression/CompressedChunk.cs
+++ b/src/Kavod.Vba.Compression/CompressedChunk.cs
@@ -16,10 +16,7 @@ internal class CompressedChunk
{
internal CompressedChunk(DecompressedChunk decompressedChunk)
{
- if (decompressedChunk == null)
- {
- throw new ArgumentNullException(nameof(decompressedChunk));
- }
+ ArgumentNullException.ThrowIfNull(decompressedChunk);
ChunkData = new CompressedChunkData(decompressedChunk);
if (ChunkData.Size >= Globals.MaxBytesPerChunk)
@@ -31,10 +28,7 @@ internal CompressedChunk(DecompressedChunk decompressedChunk)
internal CompressedChunk(BinaryReader dataReader)
{
- if (dataReader == null)
- {
- throw new ArgumentNullException(nameof(dataReader));
- }
+ ArgumentNullException.ThrowIfNull(dataReader);
Header = new CompressedChunkHeader(dataReader);
if (Header.IsCompressed)
diff --git a/src/Kavod.Vba.Compression/CompressedChunkData.cs b/src/Kavod.Vba.Compression/CompressedChunkData.cs
index f738093..e80a0dc 100644
--- a/src/Kavod.Vba.Compression/CompressedChunkData.cs
+++ b/src/Kavod.Vba.Compression/CompressedChunkData.cs
@@ -18,10 +18,7 @@ internal class CompressedChunkData : IChunkData
internal CompressedChunkData(DecompressedChunk chunk)
{
- if (chunk == null)
- {
- throw new ArgumentNullException(nameof(chunk));
- }
+ ArgumentNullException.ThrowIfNull(chunk);
var tokens = Tokenizer.TokenizeUncompressedData(chunk.Data);
_tokensequences.AddRange(tokens.ToTokenSequences());
@@ -31,15 +28,13 @@ internal CompressedChunkData(BinaryReader dataReader, UInt16 compressedChunkData
{
var data = dataReader.ReadBytes(compressedChunkDataSize);
- using (var reader = new BinaryReader(new MemoryStream(data)))
+ using var reader = new BinaryReader(new MemoryStream(data));
+ var position = 0;
+ while (reader.BaseStream.Position < reader.BaseStream.Length)
{
- var position = 0;
- while (reader.BaseStream.Position < reader.BaseStream.Length)
- {
- var sequence = TokenSequence.GetFromCompressedData(reader, position);
- _tokensequences.Add(sequence);
- position += (int)sequence.Tokens.Sum(t => t.Length);
- }
+ var sequence = TokenSequence.GetFromCompressedData(reader, position);
+ _tokensequences.Add(sequence);
+ position += (int)sequence.Tokens.Sum(t => t.Length);
}
}
diff --git a/src/Kavod.Vba.Compression/CompressedContainer.cs b/src/Kavod.Vba.Compression/CompressedContainer.cs
index ed7edbc..28ac74f 100644
--- a/src/Kavod.Vba.Compression/CompressedContainer.cs
+++ b/src/Kavod.Vba.Compression/CompressedContainer.cs
@@ -18,7 +18,7 @@ internal class CompressedContainer
{
private const byte SignatureByteSig = 0x1;
- private readonly List _compressedChunks = new List();
+ private readonly List _compressedChunks = [];
internal CompressedContainer(byte[] compressedData)
{
@@ -47,21 +47,17 @@ internal CompressedContainer(DecompressedBuffer buffer)
internal byte[] SerializeData()
{
- using (var writer = new BinaryWriter(new MemoryStream()))
- {
- writer.Write(SignatureByteSig);
-
- foreach (var chunk in CompressedChunks)
- {
- writer.Write(chunk.SerializeData());
- }
+ using var writer = new BinaryWriter(new MemoryStream());
+ writer.Write(SignatureByteSig);
- using (var reader = new BinaryReader(writer.BaseStream))
- {
- reader.BaseStream.Position = 0;
- return reader.ReadBytes((int) reader.BaseStream.Length);
- }
+ foreach (var chunk in CompressedChunks)
+ {
+ writer.Write(chunk.SerializeData());
}
+
+ using var reader = new BinaryReader(writer.BaseStream);
+ reader.BaseStream.Position = 0;
+ return reader.ReadBytes((int)reader.BaseStream.Length);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Kavod.Vba.Compression/DecompressedBuffer.cs b/src/Kavod.Vba.Compression/DecompressedBuffer.cs
index 426b999..685213d 100644
--- a/src/Kavod.Vba.Compression/DecompressedBuffer.cs
+++ b/src/Kavod.Vba.Compression/DecompressedBuffer.cs
@@ -12,13 +12,11 @@ internal class DecompressedBuffer
{
internal DecompressedBuffer(byte[] uncompressedData)
{
- using (var reader = new BinaryReader(new MemoryStream(uncompressedData)))
+ using var reader = new BinaryReader(new MemoryStream(uncompressedData));
+ while (reader.BaseStream.Position < reader.BaseStream.Length)
{
- while (reader.BaseStream.Position < reader.BaseStream.Length)
- {
- var chunk = new DecompressedChunk(reader);
- DecompressedChunks.Add(chunk);
- }
+ var chunk = new DecompressedChunk(reader);
+ DecompressedChunks.Add(chunk);
}
}
@@ -36,20 +34,16 @@ internal byte[] Data
{
get
{
- using (var writer = new BinaryWriter(new MemoryStream()))
+ using var writer = new BinaryWriter(new MemoryStream());
+ foreach (var chunk in DecompressedChunks)
{
- foreach (var chunk in DecompressedChunks)
- {
- writer.Write(chunk.Data);
- }
+ writer.Write(chunk.Data);
+ }
- using (var reader = new BinaryReader(writer.BaseStream))
- {
- reader.BaseStream.Position = 0;
+ using var reader = new BinaryReader(writer.BaseStream);
+ reader.BaseStream.Position = 0;
- return reader.ReadBytes((int) reader.BaseStream.Length);
- }
- }
+ return reader.ReadBytes((int)reader.BaseStream.Length);
}
}
}
diff --git a/src/Kavod.Vba.Compression/DecompressedChunk.cs b/src/Kavod.Vba.Compression/DecompressedChunk.cs
index 4585683..d2f6870 100644
--- a/src/Kavod.Vba.Compression/DecompressedChunk.cs
+++ b/src/Kavod.Vba.Compression/DecompressedChunk.cs
@@ -16,20 +16,18 @@ internal DecompressedChunk(CompressedChunk compressedChunk)
if (compressedChunk.Header.IsCompressed)
{
// Loop through all the data, get TokenSequences and decompress them.
- using (var writer = new BinaryWriter(new MemoryStream()))
+ using var writer = new BinaryWriter(new MemoryStream());
+ var tokens = ((CompressedChunkData)compressedChunk.ChunkData).TokenSequences;
+ foreach (var sequence in tokens)
{
- var tokens = ((CompressedChunkData)compressedChunk.ChunkData).TokenSequences;
- foreach (var sequence in tokens)
- {
- sequence.Tokens.DecompressTokenSequence(writer);
- }
+ sequence.Tokens.DecompressTokenSequence(writer);
+ }
- var stream = (MemoryStream)writer.BaseStream;
- var decompressedData = stream.GetBuffer();
- Array.Resize(ref decompressedData, (int)stream.Length);
+ var stream = (MemoryStream)writer.BaseStream;
+ var decompressedData = stream.GetBuffer();
+ Array.Resize(ref decompressedData, (int)stream.Length);
- Data = decompressedData;
- }
+ Data = decompressedData;
}
else
{
diff --git a/src/Kavod.Vba.Compression/LiteralToken.cs b/src/Kavod.Vba.Compression/LiteralToken.cs
index 2cbf717..8dbf076 100644
--- a/src/Kavod.Vba.Compression/LiteralToken.cs
+++ b/src/Kavod.Vba.Compression/LiteralToken.cs
@@ -20,7 +20,7 @@ internal LiteralToken(BinaryReader dataReader)
internal LiteralToken(byte data)
{
- _data = new [] { data };
+ _data = [data];
}
public void DecompressToken(BinaryWriter writer)
diff --git a/src/Kavod.Vba.Compression/README.md b/src/Kavod.Vba.Compression/README.md
index 493ffe0..6b71d93 100644
--- a/src/Kavod.Vba.Compression/README.md
+++ b/src/Kavod.Vba.Compression/README.md
@@ -19,7 +19,7 @@ var compressedBytes = VbaCompression.Compress(contentBytes);
### Requirements
-Library works with .NET Framework 4.6.2 and 4.8, and .NET 8 runtimes.
+Library targets the .NET 10 runtime.
### Legal
diff --git a/src/Kavod.Vba.Compression/Tokenizer.cs b/src/Kavod.Vba.Compression/Tokenizer.cs
index 1f1a628..4a195b9 100644
--- a/src/Kavod.Vba.Compression/Tokenizer.cs
+++ b/src/Kavod.Vba.Compression/Tokenizer.cs
@@ -108,7 +108,7 @@ private static IEnumerable AllPossibleCopyTokens(byte[] uncompressedD
}
}
- private static IEnumerable NormalizeCopyTokens(IEnumerable copyTokens)
+ private static List NormalizeCopyTokens(IEnumerable copyTokens)
{
var remainingTokens = RemoveRedundantTokens(copyTokens).ToList();
@@ -162,10 +162,7 @@ private static IEnumerable RemoveOverlappingTokens(IEnumerable GetOverlappingNodes(Node node)
{
- if (node == null)
- {
- throw new ArgumentNullException(nameof(node));
- }
+ ArgumentNullException.ThrowIfNull(node);
var firstNode = node;
@@ -208,10 +202,7 @@ private static IEnumerable GetOverlappingNodes(Node node)
private static Node GetNextNonOverlappingNode(Node node)
{
- if (node == null)
- {
- throw new ArgumentNullException(nameof(node));
- }
+ ArgumentNullException.ThrowIfNull(node);
var firstNode = node;
@@ -322,10 +313,7 @@ private class Node : IEnumerable
{
public Node(CopyToken value, Node nextNode)
{
- if (value == null)
- {
- throw new ArgumentNullException(nameof(value));
- }
+ ArgumentNullException.ThrowIfNull(value);
Value = value;
NextNode = nextNode;