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