Rephidock.GeneralUtilities
1.2.0
See the version list below for details.
dotnet add package Rephidock.GeneralUtilities --version 1.2.0
NuGet\Install-Package Rephidock.GeneralUtilities -Version 1.2.0
<PackageReference Include="Rephidock.GeneralUtilities" Version="1.2.0" />
<PackageVersion Include="Rephidock.GeneralUtilities" Version="1.2.0" />
<PackageReference Include="Rephidock.GeneralUtilities" />
paket add Rephidock.GeneralUtilities --version 1.2.0
#r "nuget: Rephidock.GeneralUtilities, 1.2.0"
#:package Rephidock.GeneralUtilities@1.2.0
#addin nuget:?package=Rephidock.GeneralUtilities&version=1.2.0
#tool nuget:?package=Rephidock.GeneralUtilities&version=1.2.0
GeneralUtilities
A package with general utilities that may be useful.
Contents
Arithmetic
| Method | Summary |
|---|---|
(extension) int.TrueMod[1] |
Performs a modulo operation (% is remainder) |
(extension) int.Wrap[1] |
Wraps value into given range |
(extension) int.DigitalRoot[1] |
Calculates digital root (repeated digit sum) |
(extension) int.GetFactors |
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 |
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 |
Some methods also exist for BigInteger:
| Method | Summary |
|---|---|
(extension) BigInteger.Sqrt |
Returns a square root of BigInteger |
(extension) BigInteger.TrueMod |
Same as above |
(extension) BigInteger.Wrap |
Same as above |
(extension) BigInteger.DigitalRoot |
Same as above |
(extension) BigInteger.GetFactors |
Same as above |
(extension) BigInteger.ToDigits |
Same as below |
BigIntMath.FromDigits |
Same as below |
BigIntMath.Lerp |
Same as above |
Arbitrary Base Representation
Use RadixMath to perform operations with digits with arbitrary base, represented as arrays of digit values:
| Method | Summary |
|---|---|
(extension) int.ToDigits[1] |
Converts a value to an array of digits |
RadixMath.FromDigits |
Converts an array of digits to a value |
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 |
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 and index map |
The following methods also exist and are extensions on collection interfaces to allow fluent syntax:
IReadOnlyList<T>.PickRandomis equivalent toRandom.GetItemIReadOnlyCollection<T>.PickMultipleDifferentis equivalent toRandom.GetDifferentItemsIList<T>.Shuffleis equivalent toRandom.ShuffleIList<T>.ShuffleRemapis equivalent toRandom.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.
* - Extension methods are static methods and can be used as such.
| Product | Versions 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. net9.0 was computed. 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. |
-
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
Basic callback-based user-controlled animations and coroutines. |
GitHub repositories
This package is not used by any popular GitHub repositories.
- Potentially lowered BigIntMath.Lerp precision loss for big values
- Added GeneralEnumerableExtensions.SplitIntoSegments for "splitting" array into ArraySegments
- Added ColorMath.AlphaBlend overload that works on (r,g,b,a) tuples of floats.
- Added IDictionary<TKey, TValue>.AsReadOnly and IList<T>.AsReadOnly extension for net6