VOOZH about

URL: https://www.nuget.org/packages/CaseDotNet.Extensions/

⇱ NuGet Gallery | CaseDotNet.Extensions 0.2.46




CaseDotNet.Extensions 0.2.46

dotnet add package CaseDotNet.Extensions --version 0.2.46
 
 
NuGet\Install-Package CaseDotNet.Extensions -Version 0.2.46
 
 
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="CaseDotNet.Extensions" Version="0.2.46" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CaseDotNet.Extensions" Version="0.2.46" />
 
Directory.Packages.props
<PackageReference Include="CaseDotNet.Extensions" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CaseDotNet.Extensions --version 0.2.46
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: CaseDotNet.Extensions, 0.2.46"
 
 
#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.
#:package CaseDotNet.Extensions@0.2.46
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CaseDotNet.Extensions&version=0.2.46
 
Install as a Cake Addin
#tool nuget:?package=CaseDotNet.Extensions&version=0.2.46
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

String manipulation library built with intention to make naming conventions conversion easy

Motivation

Suddenly, suffering from urgent need of easy and performant way to convert strings from arbitrary naming convention to camelCase, I went out searching around NuGet and found out that there are not many options available in .NET (actually one), which would be public, and not part of some parent project. I see that as a huge overlook, considering amount of such packages for other languages (JS, for example), so I decided it would be quite useful to write something which will be reliable and extensible, so here it is.

Note that library is still in development and is lacking some planned functionality (see TODO) or may contain bugs, feel free to report them in the issues section

Features

  • Built-in support for all common naming conventions:
  • Easily extensible:
    • Modular design - combine different types of parsers, word emitters, concatenators, etc. to build the converter you need
    • Modules are dead simple to implement
  • Performant:
    • Default modules' implementation aims to be as much GC-friendly as possible
    • No Regex usage, tokenization done by simple condition-based lexers choosing leftmost overlapped sequence (smallest possible token size is chosen)
  • Zero dependencies:
    • Keeping your application size as low as possible by avoiding third party library bloat
  • Portable:
    • Targets NetStandard2.0, allowing references from .NET Core 2.0 or greater and .NET Framework 4.6.1 or greater
    • Targets NetStandard2.1, allowing references from .NET Core 3.0 or greater

Warning

Default Case.NET.Parsing.Parser implementation is not thread-safe in netstandard2.0 build while it is in netstandard2.1. Thus it's recommended to have a Parser instance for each thread, if your project is targeting .NET Framework, or .NET Core 2.0-2.2

For the same reason Parser.Universal is a property, returning new instance every call in netstandard2.0, while it is a static field in netstandard2.1

Usage

NuGet package is listed under name of CaseDotNet since Case.NET was reserved

Installation

Install-Package CaseDotNet -Version 0.3.0

Include namespace

using Case.NET

Using built-in converters

Class Case.NET.CaseConverter contains static fields with built-in converters under corresponding names:

static void Main(string[] args) {
 CasedString converted = CaseConverter.CamelCase.ConvertCase("not_camel_case");

 Console.WriteLine((string)converted); // notCamelCase
}

Currently supported conventions (as target)

  • camelCase
  • PascalCase
  • snake_case
  • CONSTANT_CASE
  • kebab-case
  • Train-Case

TODO

Target conventions to support

  • Capital Case
  • dot.case
  • Namespace.Case
  • no case
  • path/case (With optional backslash \ as delimiter)
  • Sentence case
  • Title Case
  • Swap case (Change case of every character) Swap CasesWAP cASE
  • FeNcE CaSe
  • SPonGE CasE
  • reVERse spONge cASe
  • RanDOM CAse

Misc

  • Improve unit test coverage
  • Better build/release flow on CI
  • Docs
Product Versions Compatible and additional computed target framework versions.
.NET net5.0 net5.0 was computed.  net5.0-windows net5.0-windows was computed.  net6.0 net6.0 was computed.  net6.0-android net6.0-android was computed.  net6.0-ios net6.0-ios was computed.  net6.0-maccatalyst net6.0-maccatalyst was computed.  net6.0-macos net6.0-macos was computed.  net6.0-tvos net6.0-tvos was computed.  net6.0-windows net6.0-windows was computed.  net7.0 net7.0 was computed.  net7.0-android net7.0-android was computed.  net7.0-ios net7.0-ios was computed.  net7.0-maccatalyst net7.0-maccatalyst was computed.  net7.0-macos net7.0-macos was computed.  net7.0-tvos net7.0-tvos was computed.  net7.0-windows net7.0-windows was computed.  net8.0 net8.0 was computed.  net8.0-android net8.0-android was computed.  net8.0-browser net8.0-browser was computed.  net8.0-ios net8.0-ios was computed.  net8.0-maccatalyst net8.0-maccatalyst was computed.  net8.0-macos net8.0-macos was computed.  net8.0-tvos net8.0-tvos was computed.  net8.0-windows net8.0-windows was computed.  net9.0 net9.0 was computed.  net9.0-android net9.0-android was computed.  net9.0-browser net9.0-browser was computed.  net9.0-ios net9.0-ios was computed.  net9.0-maccatalyst net9.0-maccatalyst was computed.  net9.0-macos net9.0-macos was computed.  net9.0-tvos net9.0-tvos was computed.  net9.0-windows net9.0-windows was computed.  net10.0 net10.0 was computed.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows net10.0-windows was computed. 
.NET Core netcoreapp2.0 netcoreapp2.0 was computed.  netcoreapp2.1 netcoreapp2.1 was computed.  netcoreapp2.2 netcoreapp2.2 was computed.  netcoreapp3.0 netcoreapp3.0 was computed.  netcoreapp3.1 netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 netstandard2.0 is compatible.  netstandard2.1 netstandard2.1 is compatible. 
.NET Framework net461 net461 was computed.  net462 net462 was computed.  net463 net463 was computed.  net47 net47 was computed.  net471 net471 was computed.  net472 net472 was computed.  net48 net48 was computed.  net481 net481 was computed. 
MonoAndroid monoandroid monoandroid was computed. 
MonoMac monomac monomac was computed. 
MonoTouch monotouch monotouch was computed. 
Tizen tizen40 tizen40 was computed.  tizen60 tizen60 was computed. 
Xamarin.iOS xamarinios xamarinios was computed. 
Xamarin.Mac xamarinmac xamarinmac was computed. 
Xamarin.TVOS xamarintvos xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos xamarinwatchos 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 CaseDotNet.Extensions:

Package Downloads
SunamoDevCode

Another code mainly for working with C# in all ways. Will be in future merged with SunamoCode and SunamoCSharp.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.46 2,378 3/4/2022
0.1.39 619 3/4/2022

See README.md for full info