Change log

tag v40000
root <root@db06.curselive.local>
2011-01-14 16:57:37 +0000

Tagging as v40000


    - Updating TOC to 40000
    - Add BidirectionalDictionary, which acts like a regular dictionary only it represents a one-to-one relationshipp between keys and values rather than potentially a many-to-one
    - Forgot to add Queue.lua to the lib.xml
    - Add Queue as a Collection type. It has :Enqueue, :Dequeue, and :Peek. Dequeues are fast and nil-safe, and shrinking only happens when actually necessary, as the internal structure of the table isn't needed to be pristine.
    - Add Stack as another collection type. Has the standard :Push, :Pop, and :Peek methods we've all come to love
    - Make :ToTable() accept an argument for whether to convert to a "list"-like table or a "set"-like table.
    - Remove improper globals, making them upvalues instead
    - Add List.prototype:PickAndRemoveRandom() Set.prototype:PickAndRemoveRandom() and Dictionary.prototype:PickAndRemoveRandom()
    - Add Enumerable.prototype:PickRandom() and Enumerable.prototype:PickRandomOrDefault(default)
    - Make the :GroupBy methods' key_selector and the like accept the index of the element in the sequence
    - Add List.prototype:ShuffleInPlace()
    - Fix some docs and properly update the minor version
    - Add Set.FromSequenceOrItem(sequence_or_item)
    - Add Dictionary.prototype:ToKeyValuePairs() which returns an Enumerable of KeyValuePairs, which are lightweight proxy objects that store two items.
    - Make List.prototype:Sort() accept nil as a comparer
    - Add List.prototype:Sort(comparer) and OrderedEnumerable.prototype:GetComparer()
    - Add read-only capabilities to Set and Dictionary as well. Up the minor version to 2, forgot about that before.
    - Add List.prototype:ConvertToReadOnly() and List.prototype:IsReadOnly() make :GroupBy use it when generating the Groupings, just for safety's sake.
    - Add List.prototype:ReverseInPlace()
    - Make Grouping more efficient by routing all methods called on it directly onto List, which has more efficient methods than the standard Enumerable for most things.
    - Add :Iterate() to Enumerable, which creates a lua iterator that can be used in for loops. Can improperly leave garbage around if the for loop is not fully iterated through.
    - Add :Clone() methods to List, Set, and Dictionary
    - Make it so that if you wrap a table more than once, it'll use the same wrapper rather than making a new one.
    - Add Dictionary.prototype:Merge(other) which merges the other dict onto the self dict
    - Add Replace methods to List, so that items in the list can be replaced one or more at a time.
    - Add dict:Keys() and dict:Values()
    - Add contracts to List, Set, and Dictionary to assure what elements are going to be in those collections. e.g. If you want to force that a List has only positive integers, that's possible and will error if trying to put in a string or anything that doesn't follow the contract provided
    - Add support for passing C#-like lambdas instead of full lua functions, e.g. "x => x*x" will transparently convert to function(x) return x*x end
    - Remove old suo file
    - Do not include LibStub in lib.xml since it is included in the TOC
    - Fix .pkgmeta issue
    - Initial commit of LibLinq-1.0, a collection management library similar to .NET's System.Linq


Uploaded on
Jan 14, 2011
Game version
  • 4.0.3a
54.1 KiB