Nemesis.TextParsers 2.6.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package Nemesis.TextParsers --version 2.6.2                
NuGet\Install-Package Nemesis.TextParsers -Version 2.6.2                
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="Nemesis.TextParsers" Version="2.6.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Nemesis.TextParsers --version 2.6.2                
#r "nuget: Nemesis.TextParsers, 2.6.2"                
#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 Nemesis.TextParsers as a Cake Addin
#addin nuget:?package=Nemesis.TextParsers&version=2.6.2

// Install Nemesis.TextParsers as a Cake Tool
#tool nuget:?package=Nemesis.TextParsers&version=2.6.2                

Contains various parser optimized for speed and no allocation
     This package was built from the source at https://github.com/nemesissoft/Nemesis.TextParsers/tree/5f10bceacd3d347c29aea8b77393c1b0828bf9a2

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 is compatible. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 is compatible.  net462 was computed.  net463 was computed.  net47 is compatible.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Nemesis.TextParsers:

Package Downloads
Nemesis.Demos

Set of utils for showing coding and language/framework features in form of live demos This package was built from the source at https://github.com/nemesissoft/Nemesis.Demos/tree/dcb94c7943b7275519e5994167a812cba983e01d

Nemesis.TextParsers.DependencyInjection

Contains helper methods useful to setup DependencyInjection using Microsoft.Extensions.DependencyInjection This package was built from the source at https://github.com/nemesissoft/Nemesis.TextParsers/tree/e0a38ccb3e4232df89c2e1737b5316fe91462790

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.9.15 197 8/9/2024
2.9.6 146 8/8/2024
2.9.2 232 1/3/2024
2.9.1 127 1/1/2024
2.8.2 148 12/19/2023
2.7.2 279 7/16/2023
2.7.1 167 7/14/2023
2.7.0 154 7/14/2023
2.6.3 487 5/30/2022
2.6.2 427 3/1/2021
2.6.1 360 2/25/2021
2.6.0 383 2/25/2021
2.5.0 409 12/31/2020
2.4.0 426 11/30/2020
2.3.0 429 11/16/2020
2.2.1 538 5/15/2020
2.2.0 431 5/14/2020
2.1.2 446 5/12/2020
2.1.1 500 5/1/2020
2.1.0 464 4/28/2020
2.0.4 468 4/26/2020
2.0.2 483 4/21/2020
2.0.1 486 4/17/2020
2.0.0-alpha 352 4/15/2020
1.5.1 465 3/29/2020
1.5.0 505 3/28/2020
1.4.1 525 3/23/2020
1.3.2 495 3/19/2020
1.3.0 497 3/16/2020
1.2.0 559 3/15/2020
1.1.3 579 3/14/2020
1.1.2 550 2/27/2020
1.1.1 492 2/26/2020
1.1.0 548 2/26/2020
1.0.6 565 2/25/2020
1.0.4 439 2/25/2020
1.0.3 563 2/18/2020
1.0.2 552 11/8/2019
1.0.1 508 11/6/2019
1.0.0 513 9/25/2019
0.11.50 522 9/25/2019
0.11.47 505 9/25/2019
0.11.46 518 9/23/2019
0.11.42 557 9/18/2019
0.11.41 518 9/18/2019
0.11.40 511 9/18/2019
0.11.39 575 9/18/2019
0.11.38 536 9/18/2019
0.11.37 517 9/18/2019
0.11.36 534 9/17/2019
0.11.35 535 9/17/2019
0.11.34 535 9/17/2019
0.11.33 545 9/17/2019
0.9.32 538 9/17/2019
0.9.31 527 9/11/2019
0.9.30 545 9/9/2019
0.9.29 524 9/6/2019
0.9.28 543 8/3/2019
0.9.27 561 8/3/2019
0.9.26 522 8/1/2019
0.9.25 561 7/21/2019
0.9.24 550 7/19/2019
0.9.22 558 6/14/2019
0.9.21 541 6/13/2019
0.9.20 592 6/9/2019
0.9.19 616 6/7/2019
0.9.18 596 6/5/2019
0.9.15 554 5/29/2019
0.9.14 605 5/29/2019
0.9.13 587 5/28/2019
0.9.12 585 5/27/2019
0.9.10 601 5/21/2019
0.9.8 574 5/7/2019
0.9.7 596 5/5/2019
0.9.6 578 5/5/2019
0.9.5 558 5/5/2019
0.0.0-alpha.0.335 79 1/1/2024

Release v2.6.2
Add code gen package

Add code generation package that automatically generates necessary transformers
## C# 9.0 Code generation
With introduction of new code-gen engine, you can opt to have your transformer generated automatically without any imperative code.
```csharp
//1. use specially provided (via code-gen) Auto.AutoDeconstructable attribute
[Auto.AutoDeconstructable]
//2. provide deconstructable aspect options or leave this attribute out - default options will be engaged
[DeconstructableSettings('_', '∅', '%', '〈', '〉')]
readonly partial /*3. partial modifier is VERY important - you need this cause generated code is placed in different file*/ struct StructPoint3d
{
   public double X { get; }
   public double Y { get; }
   public double Z { get; }

   //4. specify constructor and matching deconstructor
   public StructPoint3d(double x, double y, double z) { X = x; Y = y; Z = z; }

   public void Deconstruct(out double x, out double y, out double z) { x = X; y = Y; z = Z; }
}

//5. sit back, relax and enjoy - code-gen will do the job for you :-)
```

This in turn might generate the following (parts of code ommited for brevity)
```csharp
using /* ... */;
[Transformer(typeof(StructPoint3dTransformer))]
readonly partial struct StructPoint3d { }

sealed class StructPoint3dTransformer : TransformerBase<StructPoint3d>
{
   private readonly ITransformer<double> _transformer_x = TextTransformer.Default.GetTransformer<double>();
   /* specify remaining transformers... */
   private const int ARITY = 3;
   private readonly TupleHelper _helper = new TupleHelper('_', '∅', '%', '〈', '〉');

   protected override StructPoint3d ParseCore(in ReadOnlySpan<char> input)
   {
       var enumerator = _helper.ParseStart(input, ARITY);
       var t1 = _helper.ParseElement(ref enumerator, _transformer_x);        
       /* parse Y and Z... */
       _helper.ParseEnd(ref enumerator, ARITY);
       return new StructPoint3d(t1, t2, t3);
   }

   public override string Format(StructPoint3d element)
   {
       Span<char> initialBuffer = stackalloc char[32];
       var accumulator = new ValueSequenceBuilder<char>(initialBuffer);
       try
       {
            _helper.StartFormat(ref accumulator);
            var (x, y, z) = element;
           _helper.FormatElement(_transformer_x, x, ref accumulator);
           /* format Y and Z... */
           _helper.EndFormat(ref accumulator);
           return accumulator.AsSpan().ToString();
       }
       finally { accumulator.Dispose(); }
   }
}
```
### Code gen diagnositcs
Various diagnositcs exist to guide end user in creation of proper types that can be consumed by automatic generation. They might for example:
1. check if types decorated with Auto* attributes are declared partial (prerequisite for additive code generation)
2. validate settings passed via declarative syntax
3. validate internal structure of type (i.e. check if constructor has matching Deconstruct method)
4. check if external dependencies are included