ktsu.Extensions 1.3.2-pre.22

Prefix Reserved
This is a prerelease version of ktsu.Extensions.
There is a newer version of this package available.
See the version list below for details.
dotnet add package ktsu.Extensions --version 1.3.2-pre.22
                    
NuGet\Install-Package ktsu.Extensions -Version 1.3.2-pre.22
                    
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="ktsu.Extensions" Version="1.3.2-pre.22" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ktsu.Extensions" Version="1.3.2-pre.22" />
                    
Directory.Packages.props
<PackageReference Include="ktsu.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 ktsu.Extensions --version 1.3.2-pre.22
                    
#r "nuget: ktsu.Extensions, 1.3.2-pre.22"
                    
#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.
#addin nuget:?package=ktsu.Extensions&version=1.3.2-pre.22&prerelease
                    
Install ktsu.Extensions as a Cake Addin
#tool nuget:?package=ktsu.Extensions&version=1.3.2-pre.22&prerelease
                    
Install ktsu.Extensions as a Cake Tool

ktsu.Extensions

A utility library of extension methods designed to enhance the functionality of collections, enumerables, dictionaries, strings, and reflection in .NET. This library provides utilities for explicit shallow and deep cloning, batch operations, and advanced string manipulations, making it easier to work with common data structures and types.

Features

  • Enumerable Extensions

    • WithIndex: Enumerates over an enumerable with the index of the item.
    • ToCollection: Converts an enumerable to a collection.
    • ForEach: Applies an action to each element of an enumerable.
    • DeepClone: Creates a deep clone of a collection of items.
    • ShallowClone: Creates a shallow clone of a collection of items.
    • AnyNull: Checks if the enumerable contains any null items.
    • WriteItemsToConsole: Writes the items of the enumerable to the console, skipping null items.
    • ToStringEnumerable: Converts an enumerable to an enumerable of strings, handling null items according to the specified behavior.
    • Join: Joins the items of the enumerable into a single string using the specified separator.
  • Collection Extensions

    • AddMany: Adds items from an enumerable to a collection.
    • AnyNull: Checks if the collection contains any null items.
    • ToStringCollection: Converts a collection to a collection of strings, handling null items according to the specified behavior.
    • WriteItemsToConsole: Writes the items of the collection to the console, skipping null items.
  • Dictionary Extensions

    • GetOrCreate: Gets the value associated with the specified key or creates a new value if the key does not exist.
    • AddOrReplace: Adds a new value or replaces the existing value for the specified key.
    • DeepClone: Creates a deep clone of a dictionary.
    • ShallowClone: Creates a shallow clone of a dictionary.
  • String Extensions

    • As<TDest>: Converts a weak string to a strong string of the specified type, or converts between strong string types.
    • StartsWithOrdinal: Compares two strings using ordinal comparison to check if the string starts with the specified value.
    • EndsWithOrdinal: Compares two strings using ordinal comparison to check if the string ends with the specified value.
    • ContainsOrdinal: Compares two strings using ordinal comparison to check if the string contains the specified value.
    • RemoveSuffix: Removes the specified suffix from the current string.
    • RemovePrefix: Removes the specified prefix from the current string.
    • ReplaceOrdinal: Replaces all occurrences of a string with another string using ordinal comparison.
    • DetermineLineEndings: Determines the line ending style of the specified string.
    • NormalizeLineEndings: Normalizes the line endings in the specified string to the specified style.
  • Reflection Extensions

    • TryFindMethod: Tries to find a method with the specified name and binding flags in the given type.

Installation

To install the library, use the following NuGet command:

dotnet add package ktsu.Extensions

Contributing

Contributions are welcome! Please open an issue or submit a pull request on GitHub.

License

This project is licensed under the MIT License.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (8)

Showing the top 5 NuGet packages that depend on ktsu.Extensions:

Package Downloads
ktsu.StrongPaths

A library that provides strong typing for common filesystem paths providing compile time feedback and runtime validation.

ktsu.ToStringJsonConverter

A JSON converter for System.Text.Json that handles ToString and Parse methods for value types.

ktsu.ImGuiStyler

A library for expressively styling ImGui.NET interfaces.

ktsu.ImGuiWidgets

A library of custom widgets using ImGui.NET and utilities to enhance ImGui-based applications.

ktsu.ImGuiPopups

A library for custom popups using ImGui.NET.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.5.5 59 5/18/2025
1.5.4 38 5/18/2025
1.5.4-pre.15 31 5/17/2025
1.5.4-pre.14 111 5/16/2025
1.5.4-pre.13 179 5/15/2025
1.5.4-pre.12 181 5/14/2025
1.5.4-pre.11 184 5/13/2025
1.5.4-pre.10 212 5/12/2025
1.5.4-pre.9 149 5/11/2025
1.5.4-pre.8 95 5/10/2025
1.5.4-pre.7 31 5/9/2025
1.5.4-pre.6 104 5/8/2025
1.5.4-pre.5 111 5/7/2025
1.5.4-pre.4 102 5/6/2025
1.5.4-pre.3 109 5/5/2025
1.5.4-pre.2 107 5/4/2025
1.5.4-pre.1 107 5/4/2025
1.5.3 387 5/4/2025
1.5.3-pre.1 41 4/26/2025
1.5.2 440 4/25/2025
1.5.2-pre.1 105 4/4/2025
1.5.1 626 3/30/2025
1.5.0 1,434 3/30/2025
1.4.1 95 3/29/2025
1.4.1-pre.3 62 3/29/2025
1.4.1-pre.2 445 3/25/2025
1.4.1-pre.1 65 2/19/2025
1.4.0 3,251 2/18/2025
1.3.3-pre.5 63 2/17/2025
1.3.3-pre.4 64 2/11/2025
1.3.3-pre.3 72 2/6/2025
1.3.3-pre.2 59 2/5/2025
1.3.3-pre.1 60 2/5/2025
1.3.2 3,695 1/2/2025
1.3.2-pre.27 58 2/4/2025
1.3.2-pre.26 57 2/3/2025
1.3.2-pre.25 64 2/2/2025
1.3.2-pre.24 53 1/31/2025
1.3.2-pre.23 54 1/29/2025
1.3.2-pre.22 56 1/27/2025
1.3.2-pre.21 50 1/26/2025
1.3.2-pre.20 49 1/24/2025
1.3.2-pre.19 58 1/22/2025
1.3.2-pre.18 54 1/20/2025
1.3.2-pre.17 46 1/18/2025
1.3.2-pre.16 45 1/16/2025
1.3.2-pre.15 34 1/14/2025
1.3.2-pre.14 47 1/13/2025
1.3.2-pre.13 51 1/11/2025
1.3.2-pre.12 44 1/10/2025
1.3.2-pre.11 56 1/10/2025
1.3.2-pre.10 44 1/8/2025
1.3.2-pre.9 56 1/7/2025
1.3.2-pre.8 60 1/6/2025
1.3.2-pre.7 73 1/4/2025
1.3.2-pre.6 59 1/3/2025
1.3.2-pre.5 61 1/3/2025
1.3.2-pre.4 64 1/3/2025
1.3.2-pre.3 73 1/1/2025
1.3.2-pre.2 79 12/31/2024
1.3.2-pre.1 61 12/29/2024
1.3.1 2,976 12/28/2024
1.3.0 87 12/28/2024
1.2.16-pre.3 52 12/28/2024
1.2.16-pre.2 55 12/27/2024
1.2.16-pre.1 57 12/27/2024
1.2.15-pre.1 56 12/27/2024
1.2.14 901 12/26/2024
1.2.13 92 12/26/2024
1.2.12 90 12/26/2024
1.2.11 89 12/26/2024
1.2.10 89 12/26/2024
1.2.10-pre.1 55 12/27/2024
1.2.9 97 12/26/2024
1.2.8 2,592 12/26/2024
1.2.7 1,818 12/24/2024
1.2.6 490 12/23/2024
1.2.5 87 12/23/2024
1.2.4 441 12/22/2024
1.2.3 106 12/22/2024
1.2.2 141 12/22/2024
1.2.1 152 12/22/2024
1.2.0 629 12/19/2024
1.1.0 90 12/19/2024
1.0.37 537 12/13/2024
1.0.36 668 12/5/2024
1.0.35 340 12/4/2024
1.0.34 453 12/2/2024
1.0.33 90 12/2/2024
1.0.32 294 12/2/2024
1.0.31 422 12/1/2024
1.0.30 226 12/1/2024
1.0.29 91 12/1/2024
1.0.28 158 11/30/2024
1.0.27 274 11/28/2024
1.0.26 307 11/26/2024
1.0.25 1,104 11/14/2024
1.0.24 318 11/13/2024
1.0.23 815 11/2/2024
1.0.22 369 11/1/2024
1.0.21 1,056 10/16/2024
1.0.20 686 10/5/2024
1.0.19 229 10/4/2024
1.0.18 776 9/21/2024
1.0.17 279 9/19/2024
1.0.16 102 9/19/2024
1.0.15 278 9/19/2024
1.0.14 205 9/19/2024
1.0.13 210 9/19/2024
1.0.12 132 9/18/2024
1.0.11 112 9/18/2024
1.0.10 172 9/18/2024
1.0.9 634 9/18/2024
1.0.8 452 9/14/2024
1.0.7 130 9/14/2024

## v1.3.2 (patch)

Changes since v1.3.1:

- Add automation scripts for metadata management and versioning ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.3.1 (patch)

Changes since v1.3.0:

- Refactor LineEndingStyle enumeration to standalone ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.3.0 (minor)

Changes since v1.2.0:

- Add line ending methods and tests, update README ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor test method names and update LICENSE ([@matt-edmondson](https://github.com/matt-edmondson))
- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.2.15-pre.1 (patch)

Changes since v1.2.14:

- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.2.10 (patch)

Changes since v1.2.9:

- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.2.8 (patch)

Changes since v1.2.7:

- Refactor test method names and update LICENSE ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.2.0 (minor)

Changes since v1.1.0:

- Add comprehensive unit tests for Join method ([@matt-edmondson](https://github.com/matt-edmondson))
- Add Join extension methods to EnumerableExtensions ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README.md to document new Join extension method ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.1.0 (minor)

Changes since v1.0.0:

- Add a locket overload of ForEach ([@matt-edmondson](https://github.com/matt-edmondson))
- Add AddOrReplace method to DictionaryExtensions ([@matt-edmondson](https://github.com/matt-edmondson))
- Add an overload to ToCollection that takes an object to acquire a lock on while enumerating ([@matt-edmondson](https://github.com/matt-edmondson))
- Add collection handling and conversion extensions ([@matt-edmondson](https://github.com/matt-edmondson))
- Add CollectionExtensions with AddMany method ([@matt-edmondson](https://github.com/matt-edmondson))
- Add DeepClone enumerable extension ([@matt-edmondson](https://github.com/matt-edmondson))
- Add DeepClone for dictionaries ([@matt-edmondson](https://github.com/matt-edmondson))
- Add new tests and refactor extension methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Add new unit tests ([@matt-edmondson](https://github.com/matt-edmondson))
- Add ShallowClone to enumerables and dictionaries ([@matt-edmondson](https://github.com/matt-edmondson))
- Add string.As<StrongStrong>() ([@matt-edmondson](https://github.com/matt-edmondson))
- Add support for GetOrCreate on concurrent dictionaries ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix Dictionary return types ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate ktsu.io to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))
- Minor code style changes ([@matt-edmondson](https://github.com/matt-edmondson))
- Update DESCRIPTION and overhaul README.md ([@matt-edmondson](https://github.com/matt-edmondson))
- Update package references and add ILCompiler dependency ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.0.31 (patch)

Changes since v1.0.30:

- Update package references and add ILCompiler dependency ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.0.30 (patch)

Changes since v1.0.29:

- Add new tests and refactor extension methods ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.0.29 (patch)

Changes since v1.0.28:

- Add collection handling and conversion extensions ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.0.14 (patch)

Changes since v1.0.13:

- Add string.As<StrongStrong>() ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.0.8 (patch)

Changes since 1.0.7:

- Migrate ktsu.io to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.0.0 (major)

Changes since 0.0.0.0:

- Add an overload of GetOrCreate for dictionaries that takes a supplied default value ([@matt-edmondson](https://github.com/matt-edmondson))
- Add DictionaryExtensions.GetOrCreate() ([@matt-edmondson](https://github.com/matt-edmondson))
- Add EnumerableExtensions hoisted from ImGuiApp ([@matt-edmondson](https://github.com/matt-edmondson))
- Add ForEach to enumerable extensions ([@matt-edmondson](https://github.com/matt-edmondson))
- Add github package support ([@matt-edmondson](https://github.com/matt-edmondson))
- Add IEnumerable.ToCollection ([@matt-edmondson](https://github.com/matt-edmondson))
- Add ReplaceOrdinal for strings ([@matt-edmondson](https://github.com/matt-edmondson))
- Add String extensions for StrongStrings ([@matt-edmondson](https://github.com/matt-edmondson))
- Added RemoveSuffix and RemovePrefix ([@matt-edmondson](https://github.com/matt-edmondson))
- Assign dependabot PRs to matt ([@matt-edmondson](https://github.com/matt-edmondson))
- Avoid double upload of symbols package ([@matt-edmondson](https://github.com/matt-edmondson))
- Create dependabot-merge.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Create VERSION ([@matt-edmondson](https://github.com/matt-edmondson))
- Dont try to push packages when building pull requests ([@matt-edmondson](https://github.com/matt-edmondson))
- Enable dependabot and sourcelink ([@matt-edmondson](https://github.com/matt-edmondson))
- Initial commit ([@matt-edmondson](https://github.com/matt-edmondson))
- Make Dictionary.GetOrCreate not return a nullable ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate from .project.props to Directory.Build.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Read from AUTHORS file during build ([@matt-edmondson](https://github.com/matt-edmondson))
- Read from VERSION when building ([@matt-edmondson](https://github.com/matt-edmondson))
- Read PackageDescription from DESCRIPTION file ([@matt-edmondson](https://github.com/matt-edmondson))
- Update .project.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Update build config ([@matt-edmondson](https://github.com/matt-edmondson))
- Update build scripts ([@matt-edmondson](https://github.com/matt-edmondson))
- Update descriptions and readme ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.targets ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update LICENSE ([@matt-edmondson](https://github.com/matt-edmondson))
- Update nuget.config ([@matt-edmondson](https://github.com/matt-edmondson))
- Update readme ([@matt-edmondson](https://github.com/matt-edmondson))
- v1.0.0-alpha.8 ([@matt-edmondson](https://github.com/matt-edmondson))