darq 0.4.0+1
darq: ^0.4.0+1 copied to clipboard
The power of lazy-evaluated enumerables in your hands! (A port of functional LINQ from the .NET library.)
0.4.0+1 #
- Fixing a bug in the documentation
0.4.0 #
Enumerableand all related subclasses have been removed. The package has changed over to using static extension methods onIterable.- Related, the trailing "E" in method names as well as the utility factory
Ehave been removed.
- Related, the trailing "E" in method names as well as the utility factory
Enumerablefactory constructors have been converted into standalone factory classes (if not made redundant by existingIterableconstructors).Enumerable.empty->Iterable.emptyEnumerable.from-> redundantEnumerable.generate->Iterable.generateEnumerable.repeat->RepeatIterator
- A new factory class has been created:
RangeIterator- Generates an iterable whose elements represent a range of integral values.
- Some methods have been renamed so as to not conflict with existing
Iterablemethods of the same name.join->joinMap
- Some methods have had functionality tweaked so as to maintain a separate identity from existing
Iterablemethods.select: Selector argument now requires(T element, int index)as the parameters.selectMany: Selector argument now requires(T element, int index)as the parameters.
- Some methods have been removed as existing methods in
Iterablemake them fully redundant.castelementAtfirstlastsingletaketakeWhileskipskipWhiletoListtoSetwhere
- A new method has been added:
segment- Groups the iterable into segments of an indicated size. Can optionally include any partial chunks at the end of the iterable.
- Extension getters have also been added to
Stringto facilitate easy conversion toIterable<String>.iterable: Returns an iterable of the characters in the string.iterableRunes: Returns an iterable of the characters in the string while respecting rune boundaries.
0.3.1 #
- Typedefs have been converted from a shorthand form to the full form. This should help with some type inference issues.
0.3.0 #
- Unit tests have been added to ensure
Iterablebuilt-in functions behave as expected. - Default reducers for methods where a comparator is optional (such as
aggregatorE,sumE, andorderByE) have been extended to also supportDurationandBigInt. - Custom error types have been overhauled to utilize default Dart error types:
UnexpectedStateError,KeyExistsError, andIntegerOverflowErrornow extendStateErrorinstead ofError.ConversionErrornow extendsCastErrorinstead ofError.IncompatibleTypeErrornow extendsUnsupportedErrorinstead ofError.NullEnumerableError,EmptyEnumerableError, andElementNotFoundErrorhave been merged intoEnumerableErrorwhich extendsStateError.OperationErrorhas been removed. Code that threwOperationErrornow throwsStateErrorwith a descriptive message.
- Added subtype support for
ValueEnumerablefor specialized behavior when the sourceIterablesupports various actions. (Currently the only specialized subtype isListIteratorwhich enables short-circuiting forcountEandelementAtEmethods to call the list'slengthproperty and indexer, respectively.) - Changed
countEto call the underlying iterable'slengthproperty whenconditionis not specified. This should enable O(1) length calculations for default Dart collections that internally implementEfficientLengthIterable. - Changed
EqualityComparerto enable global setting of default comparers of new types. For example, for a custom typeFoo, the static methodEqualityComparer.addDefaultEqualityComparer<Foo>(comparer)will set the global default comparer forFooto the passedcomparervalues. Following this call, all calls to LINQ methods that take an optionalEqualityComparer<Foo>will default to using the previously registered comparer when acompareris not specified.
Known Issues:
joinEandgroupJoinEhave a problem with the type inference of the parameters, causing the types to default todynamic. When calling these methods while specifying anEqualityComparer, it may be necessary to explicitly state the type parameters as well as the types of parameters in any closure functions to get type inference to work properly.
0.2.0 #
- The naming convention of the enumerable methods has been changed so that they are suffixed by the letter "e" (such as
selectE,joinE,whereE). This is an attempt at a compromise between keeping the names of the methods consistent with their .NET origins while avoiding conflicts with existingIterablemethods. - Added two new factory methods to
Enumerable:fromStringandgenerator.fromStringconverts aStringinto anEnumerablethat iterates over each individual character, whilegeneratorallows an iterable to be created of the specified length using a given generator function. countIfEhas been merged withcountEso thatcountEnow has aConditionas an optional parameter. If theConditionis provided, the behavior is identical tocountIfE, and if not, the behavior is identical to the originalcountE.- Fixed an issue where several of the enumerable methods were not asserting on required parameters.
0.1.2 #
- Addressing pub description warnings.
0.1.1 #
- Addressing pub formatting warnings and issues.
0.1.0 #
- Initial release.