Skip to content

Releases: Nixill/CSharp.Nixill

v0.9.2 - NumberUtils.NNMod

04 Dec 07:32
Compare
Choose a tag to compare
  • Add NumberUtils.NNMod, which performs a modul between two numbers but forces the result to be non-negative (by adding the divisor if it's negative).

v0.9.1 - EnumerableUtils.Of(params)

07 Nov 04:51
Compare
Choose a tag to compare

Adds a params T[] items overload to EnumerableUtils.Of to allow enumerating multiple args.

v0.9.0

05 Oct 23:42
Compare
Choose a tag to compare

NOT BACKWARDS COMPATIBLE

  • Update to target net6.0
  • Fixes problems with side searching on AVLTrees (which would have given issues with Lower and Higher when searching from an existing key)

IGrid and its subclasses

  • The two-int indexer now picks row first.
  • IList parameters (including the constructor and new-data methods) have been replaced with IEnumerable.
  • Added extra overloads for AddColumn, InsertColumn, AddRow, and InsertRow (the latter two use row instead of column in parameter names), replacing the IEnumerable<U> parameter with...
    • T columnItem - creates a new column or row containing copies of that item
    • Func<T> columnItemFunc - creates a new column or row with items initialized by the func
    • Func<int, T> columnItemFunc - creates a new column or row with items initialized by the func (the int parameter is the row or column number)
  • GetEnumerator() and GetColumnEnumerator() now return IEnumerator<IEnumerable<T>>.
  • Added RemoveColumnAt(int) and RemoveRowAt(int) methods.

GridReference

  • Removed condition that GridReferences point to non-negative rows and columns

OffsetGrid

An entire new class, a grid that can have negative coordinates. Inherits IGrid<T>.

CompareUtils

Cleaned up some dumb code that like, how was that supposed to work?

EnumerableUtils

New class with the following methods:

  • Of<T>(T item) - An Enumerable that only contains the one item provided
  • Repeat<T>(Func<T> func, int count) - Repeatedly run a function and enumerate its results
  • RepeatInfinite<T>(Func<T> func) - Repeatedly run a function forever
  • RepeatInfinite<T>(T item) - Returns a single item forever

And the following extension methods:

  • Do<T>(this IEnumerable<T> list, Action<T> act) - Performs an action for every item in the list
  • Do<T>(this IEnumerable<T> list, Action<int, T> act) - The above but also uses the item's index
  • MaxMany<T>(this IEnumerable<T> list) (if T is comparable) - Returns all items that evaluate to the maximum value
  • MaxMany<T>(this IEnumerable<T> list, IComparaer<T> comp) - Returns all items that evaluate to the maximum value
  • MaxManyBy<T>(this IEnumerable<T> list) (if T is comparable) - Returns all items that have the maximum of a property
  • MaxManyBy<T>(this IEnumerable<T> list, IComparaer<T> comp) - Returns all items that have the maximum of a property
  • MinMany<T>(this IEnumerable<T> list) (if T is comparable) - Returns all items that evaluate to the minimum value
  • MinMany<T>(this IEnumerable<T> list, IComparaer<T> comp) - Returns all items that evaluate to the minimum value
  • MinManyBy<T>(this IEnumerable<T> list) (if T is comparable) - Returns all items that have the minimum of a property
  • MinManyBy<T>(this IEnumerable<T> list, IComparaer<T> comp) - Returns all items that have the minimum of a property
  • Product<TLeft, TRight, TResult>(this IEnumerable<TLeft> left, IEnumerable<TRight> right, Func<TLeft, TRight, TResult> func) - Selects an item from every combination of items from two lists
  • Product<TLeft, TRight>(this IEnumerable<TLeft> left, IEnumerable<TRight> right) - Selects every combination of items from two lists

NumberUtils

  • Clarify an error message in IntToChar(int)
  • Correct some documentation comments on LeadingZeroStringToInt(string, int)

RegexUtils

  • TryGroup methods

v0.8.6 - INavigable wrappers

13 Jun 10:03
Compare
Choose a tag to compare

This release adds AsReadOnly extension methods to INavigableDictionary and INavigableSet.

v0.8.5 - Dictionary searching-around methods

13 Jun 09:12
Compare
Choose a tag to compare

This release adds KeysAround(K) and EntriesAround(K) methods to AVLTreeDictionary<K, V>.

v0.8.4 - Read-only navigable interfaces

04 Jun 07:27
Compare
Choose a tag to compare

This release adds the interfaces IReadOnlyNavigableSet<T> and IReadOnlyNavigableDictionary<K, V>, which have the same methods to implement as the non-readonly interfaces but inherit from read-only interfaces.

v0.8.3 - Library rename hotfix

25 May 18:39
Compare
Choose a tag to compare

The library is now called Nixill.

v0.8.2 - Library renamed

25 May 18:30
Compare
Choose a tag to compare

The library has been renamed to simply Nixill. No changes have been made to the library itself.

v0.8.1 - Take 2 at uploading to nuget

21 May 06:25
Compare
Choose a tag to compare

No changes to codebase since v0.8.0; however, I need to try again at actually uploading.

v0.8.0 - AVLTreeSet and AVLTreeDictionary, DictionaryGenerator

21 May 06:20
Compare
Choose a tag to compare

Changes since 0.7.3

  • GitHub Packages is no longer used for publishing, please check out the package in the NuGet Gallery.
  • Created AVLTreeDictionary<K, V>, an implementation of INavigableDictionary<K, V> (which extends IDictionary<K, V>) backed by an AVL Tree (in fact specifically by an AVLTreeSet<KeyValuePair<K, V>>).
  • Created AVLTreeSet<T>, an implementation of INavigableSet<T> (which extends ISet<T>) backed by an AVL Tree.
  • Created DictionaryGenerator<K, V>, an implementation of IDictionary<K, V> that can wrap around any existing or new dictionary rather than extending Dictionary<K, V>. Replaces GeneratorDictionary<K, V> which is now Obsolete.
  • Added DefaultGenerator<K, V> which generates values as default(V).
  • Added EmptyConstructorGenerator<K, V> which generates values as new V().