Rephidock.GeneralUtilities 0.3.0

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

// Install Rephidock.GeneralUtilities as a Cake Tool
#tool nuget:?package=Rephidock.GeneralUtilities&version=0.3.0

GeneralUtilities

GitHub Licence Badge

A package with general utilities that may be useful.

Contents

Arithmetic

Extension Methods Summary
(extension) int.TrueMod[1] Performs a modulo operation (% is remainder)
(extension) int.Wrap[1] Wraps value into given range
(extension) float.DegToRad[1] Converts angle in degrees to radians
(extension) float.RadToDeg[1] Converts angle in radians to degrees
MoreMath.Lerp Linearly interpolates between 2 values
MoreMath.ReverseLerp Inverse of Lerp (returns lerp amount form value)
MoreMath.TabShift Returns column position of a character after tab
MoreMath.AngleDifference Calculates the shortest distance between 2 angles

[1]: Extension also exists for other numeric types

Other

Class Summary
(static) EnumConverter<TEnum,TInt> A generic enum ↔ integer converter
Method Summary
(extension) T.Yield<T> Wraps anything in a IEnumerable<T>
(extension) IEnumerable<T>.JoinString A fluent way to call string.Join
(extension) Type.IsSubcalssOrSelfOf Checks if a type is base type or subclass of it

.Randomness namespace

The .Randomness namespace relates to System.Random

Class Summary
ShuffleIndexMap The index map of a shuffle (to track where items ended up)
Extension methods Summary
Random.NextUInt31 Returns a random int in range of [0, int.MaxValue]
Random.Chance Returns true with %-chance
Random.GetItem Returns a random item from a list or span
Random.GetDifferentItems Returns multiple different random items from a collection
Random.Shuffle Shuffles given items in-place
Random.ShuffleRemap Shuffles given items in-place and returns and index map

The following methods also exist and are extensions on collection interfaces to allow fluent syntax:

  • IReadOnlyList<T>.PickRandom is equivalent to Random.GetItem
  • IReadOnlyCollection<T>.PickMultipleDifferent is equivalent to Random.GetDifferentItems
  • IList<T>.Shuffle is equivalent to Random.Shuffle
  • IList<T>.ShuffleRemap is equivalent to Random.ShuffleRemap

.Color namespace

The .Color namespace relates to System.Drawing.Color

Method Summary
(extension) Color.WithAlpha Returns source Color with given alpha
(extension) Color.Transparent Returns source Color with alpha of 0
ColorMath.LerpColor Linearly interpolates between 2 colors
ColorMath.AlphaBlend Blend 2 colors with alpha-1-minus-alpha blending
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Rephidock.GeneralUtilities:

Package Downloads
Rephidock.AtomicAnimations

Classes for simple animations that accept delegates

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.3.0 50 5/18/2024
1.2.0 87 4/17/2024
1.1.0 160 3/26/2024
1.0.0 96 2/23/2024
0.3.0 81 2/17/2024
0.2.0 93 2/12/2024
0.1.1 91 2/1/2024
0.1.0 79 1/31/2024

- (breaking) Moved RandomnessExtensions to .Randomness namespace
     - Added (extension) Random.Chance
     - Added (extensions) Random.Shuffle(IList<T>) and equivalent IList<T>.Shuffle
     - Added ShuffleIndexMap and (extensions) Random.ShuffleRemap with equivalent IList<T>.ShuffleRemap
     - Added (extensions) Random.GetItem<T> and equivalent IReadOnlyList<T>.PickRandom, also exists for ReadOnlySpan
     - Added (extensions) Random.GetDifferentItems<T> and equivalent IReadOnlyCollection<T>.PickMultipleDifferent
     - Added MoreMath method overloads for long and BigInteger