Rephidock.GeneralUtilities 1.3.0

dotnet add package Rephidock.GeneralUtilities --version 1.3.0
NuGet\Install-Package Rephidock.GeneralUtilities -Version 1.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="1.3.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Rephidock.GeneralUtilities --version 1.3.0
#r "nuget: Rephidock.GeneralUtilities, 1.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=1.3.0

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

GeneralUtilities

GitHub Licence Badge

A package with general utilities that may be useful.

Contents

Arithmetic

Method Summary
(extension) int.TrueMod[1][2] Performs a modulo operation (% is remainder)
(extension) int.Wrap[1][2] Wraps value into given range
(extension) int.DigitalRoot[1][2] Calculates digital root (repeated digit sum)
(extension) int.GetFactors[2] Returns all factors of an integer
(extension) float.DegToRad[1] Converts angle in degrees to radians
(extension) float.RadToDeg[1] Converts angle in radians to degrees
(extension) BigInteger.Sqrt Returns a square root of BigInteger
MoreMath.Lerp Linearly interpolates between 2 values
BigIntMath.Lerp Same as above but for BigInteger
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

Use RadixMath to perform operations with digits with arbitrary base, represented as arrays of digit values:

Method Summary
(extension) int.ToDigits[1][2] Converts a value to an array of digits
RadixMath.FromDigits Converts an array of digits to a value
BigIntMath.FromDigits Same as below
RadixMath.CountAllAscending Enumerates all numbers with a given places count

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) char[].JoinString A fluent way to call string constructor
(extension) T[].SplitIntoSegments "Splits" array into ArraySegment<T>s
(extension) Type.IsSubclassOrSelfOf Checks if a type is base type or subclass of it
(extension) MethodInfo.IsOverride Checks if a method is an override

This package also implements some methods that were added in .NET7 as extensions for .NET6

Extension Method for .NET6 Summary
IList<T>.AsReadOnly Constructs a ReadOnlyCollection<T>
IDictionary<TKey, TValue>.AsReadOnly Constructs a ReadOnlyDictionary<T>

.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 method 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 an 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

[1]: Extension also exists for other numeric types. [2]: Extension also exists for BigInteger.

* - Extension methods are static methods and can be used as such.

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 51 5/18/2024
1.2.0 87 4/17/2024
1.1.0 177 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

- Added MethodInfo.IsOverride extension method