Sep 0.1.0-preview.4

This is a prerelease version of Sep.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Sep --version 0.1.0-preview.4                
NuGet\Install-Package Sep -Version 0.1.0-preview.4                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Sep" Version="0.1.0-preview.4" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sep --version 0.1.0-preview.4                
#r "nuget: Sep, 0.1.0-preview.4"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Sep as a Cake Addin
#addin nuget:?package=Sep&version=0.1.0-preview.4&prerelease

// Install Sep as a Cake Tool
#tool nuget:?package=Sep&version=0.1.0-preview.4&prerelease                

Sep

Modern, minimal, fast, zero allocation¹, reading and writing of separated values (csv, tsv etc.). Trimmable and AOT friendly.

¹ After creation and first few rows both for reading/parsing and writing/formatting.

var text = """
           A;B;C;D;E;F
           Sep;🚀;1;1.2;0.1;0.5
           CSV;✅;2;2.2;0.2;1.5
           """;

using var reader = Sep.Reader().FromText(text);  // Infers separator 'Sep' from header
using var writer = reader.Sep.Writer().ToText(); // Writer defined from reader 'Sep'
                                                 // Use .FromFile(...)/ToFile(...) for files
var idx = reader.Header.IndexOf("B");
var nms = new[] { "E", "F" };

foreach (var readRow in reader)           // Read one row at a time
{
    var a = readRow["A"].Span;            // Column as ReadOnlySpan<char>
    var b = readRow[idx].ToString();      // Column to string (allocates new string per call)
    var c = readRow["C"].Parse<int>();    // Parse any T : ISpanParsable<T>
    var d = readRow["D"].Parse<float>();  // Parse float/double fast via csFastFloat
    var s = readRow[nms].Parse<double>(); // Parse multiple columns as Span<T>
                                          // - Sep handles array allocation and reuse
    foreach (ref var v in s) { v *= 10; }

    using var writeRow = writer.NewRow(); // Start new row. Row written on Dispose.
    writeRow["A"].Set(a);                 // Set by ReadOnlySpan<char>
    writeRow["B"].Set(b);                 // Set by string
    writeRow["C"].Set($"{c * 2}");        // Set via InterpolatedStringHandler, no allocs
    writeRow["D"].Format(d / 2);          // Format any T : ISpanFormattable
    writeRow[nms].Format(s);              // Format multiple columns directly
}

var expected = """
               A;B;C;D;E;F
               Sep;🚀;2;0.6;1;5
               CSV;✅;4;1.1;2;15
               """;
Assert.AreEqual(expected, writer.ToString());

// Above example code is for demonstration purposes only.
// Short names and repeated constants are only for demonstration.
Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Sep:

Package Downloads
WoW2.Backbone.Data.Transportation.Cars

Global manufactured cars static data and data providers

GitHub repositories (3)

Showing the top 3 popular GitHub repositories that depend on Sep:

Repository Stars
DataDog/dd-trace-dotnet
.NET Client Library for Datadog APM
joakimskoog/AnApiOfIceAndFire
An API of Ice And Fire is the world's greatest source for quantified and structured data from the universe of Ice and Fire (as well as the HBO series Game of Thrones).
JasonBock/Rocks
A mocking library based on the Compiler APIs (Roslyn + Mocks)
Version Downloads Last updated
0.5.5 20,057 10/8/2024
0.5.4 12,415 9/20/2024
0.5.3 80,473 7/11/2024
0.5.2 1,128,724 4/21/2024
0.5.1 156 4/20/2024
0.5.0 4,298 4/15/2024
0.4.6 2,592 4/4/2024
0.4.5 2,200 3/28/2024
0.4.4 868 3/20/2024
0.4.3 1,317 3/10/2024
0.4.2 318 3/8/2024
0.4.1 126 3/8/2024
0.4.0 18,798 1/1/2024
0.4.0-preview.1 115 12/23/2023
0.3.0 910,950 11/18/2023
0.2.7 5,080 10/12/2023
0.2.6 495 9/27/2023
0.2.5 293 9/14/2023
0.2.4 269 9/8/2023
0.2.3 296 9/5/2023
0.2.2 475,375 8/10/2023
0.2.1 180 8/10/2023
0.2.0 980 8/7/2023
0.2.0-preview.3 122 7/29/2023
0.1.0 832 5/30/2023
0.1.0-rc.1 106 5/26/2023
0.1.0-preview.8 86 5/26/2023
0.1.0-preview.7 114 5/8/2023
0.1.0-preview.6 106 4/24/2023
0.1.0-preview.5 115 3/19/2023
0.1.0-preview.4 118 12/31/2022
0.1.0-preview.3 118 12/4/2022
0.1.0-preview.2 141 3/21/2022
0.1.0-preview.1 148 1/28/2022