more 3.10.0 more: ^3.10.0 copied to clipboard
More Dart — Literally. Collecting, iterating, caching, mathematics, matching, ordering, and formatting easily.
Changelog #
3.10.0 #
- Add a growable
BitList
, make it behave more likeList<bool>
. - Optimize
BitList
operations:fill
,count
, andindices
. - Change return type of generic
throwFunction
toNever
. - Add graph algorithms and data structures.
- Add
Map.withDefault
providing a default value for non-existing keys. - Add support to generate permutations with a specified length, as well as extensions to generate the previous and next permutation.
3.9.0 #
- Various extension to work with bits.
- Add iterator over
BitList.indices
that are true or false. - Add experimental
RTree
implementation. - Various optimizations and improvements to mathematical functions.
- Generalize the prime sieve implementation and add support for more efficient primality check and factorization.
- More efficient implementation of
repeat
for a single element. - Make
Iterable.groupBy
andIterable.indexed
return instances ofMapEntry
for easier interoperability withMap
. - Fix various edge cases with
Range
iterables. - Fix
Iterable.combinations
for empty iterables. - Add
List
extensionstakeTo
,skipTo
,takeLast
,takeLastTo
,skipLast
, andskipLastTo
. - Add
Iterable
extensioncount
andpowerSet
. - Deprecate
Iterable.cycle
in favor ofIterable.repeat
. - Deprecated
naturalComparator
in favor ofnaturalCompare
andnaturalComparable<T>
. - Deprecate the iterable package, and integrate the extensions into the collection package.
3.8.0 #
- Add
String
extensionstake
,takeTo
,skip
,skipTo
,takeLast
,takeLastTo
,skipLast
, andskipLastTo
. - Create a new
temporal
package unifying allDateTime
andDuration
related extensions:- Moved
DateTime.periodical
andDateTime.truncate
to the new page, deprecated the old code. - Add various convenience accessors to
DateTime
:isLeapYear
,daysInYear
,daysInMonth
,weeksInYear
,quarter
,weekYear
,weekNumber
,dayOfYear
, andhour12
. - Add ability to convert
Duration
objects to one or more (fractional)TimeUnit
s.
- Moved
- Countless improvements and extensions to the
printer
package:- Add
DateTimePrinter
to print date and time objects. - Add
OrdinalNumberPrinter
to print ordinal numbers: 1st, 2nd, 3rd, 4th, ... - Add
Printer.switcher
to use different printers based on conditions. - Add
Printer.where
to condition the printing on the printed object. - Add
Printer
support fortake
,skip
,takeLast
andskipLast
. - Add
Printer
support fortruncateRight
,truncateLeft
, andtruncateCenter
to also operate on word and sentence boundaries. Include the ellipsis in the width constraint. - Deprecated
Printer.map
, and replace with more common and intention revealingPrinter.onResultOf
.
- Add
- Implement the functionality of
Ordering
as static extensions methods onComparator
functions:- Add
Comparator.binarySearchLower
andComparator.binarySearchUpper
to return a lower/upper insertion index. - Add
Comparator.largest
andComparator.smallest
to return the top/bottom-k elements. - Deprecate the
Ordering
class and package.
- Add
- Create
Interval
to encapsulate bounded/unbounded and open/closed intervals across arbitraryComparable
objects.- Add the ability to measure the length of
Interval<int>.toIntLength()
andInterval<num>.toDoubleLength()
. - Add ability to convert
Interval<DateTime>
to aDuration
.
- Add the ability to measure the length of
- Added
SortedList
collection type. - Add
CompareOperators
mixin to provide operators given acompareTo
method.
3.7.0 #
- Add
closeTo
extension to all numbers. - Make
Fraction
support non-finite numbers.
3.6.0 #
- Dart 2.17 requirement.
- Add a max-heap collection type.
- Add predicates for the ordering type.
- Add interval data structure with open, closed, and infinite endpoints.
3.5.0 #
- Dart 2.16 requirement.
- Avoid dynamic calls.
- Better print strings across the library.
3.4.0 #
- Remove deprecated
hashAll
andhash1
,hash2
,hash3
, ... methods. - Add
ObjectPrinter.addValue
for more dynamic object printing. - Add
ToStringPrinter
mixin for simpler use ofObjectPrinter
. - Add
Stream.window
along the existingIterable.window
extension (thanks to https://github.com/pihentagy). - Various cleanups and better test coverage.
3.3.0 #
- Dart 2.14 requirement.
- Added
indent
/dedent
andwrap
/unwrap
toString
. - Deprecated
hashAll
andhash1
,hash2
,hash3
, ... methods, since this is now supported through the core library onObject
.
3.2.0 #
- Make
Printer
significantly faster by reusing a singleStringBuffer
instance where possible. - Make
Printer
strongly typed, which unfortunately comes with some required API changes:- Number printers do no longer support
BigInt
. - Number printers are directly instantiated, instead of using a factory on Printer.
- Number printers do no longer support
- Improved the
Printer
library in various ways:- Renamed
undefined
to the more intention revealingifNull
. - Added
ifEmpty
to print something specific for emptyIterables
. - Added
map
andcast
printers for more flexible printing. - Add initial version of the
ObjectPrinter
.
- Renamed
3.1.0 #
- Dart 2.13 requirement.
- Add
Optional
andEither
type. - Add
TypeMap
that maps Dart types to an instance. - Add various kinds of function types and function factories: callback function types, constant functions, empty functions, identity functions, mapping function types, predicate function types, and throwing functions.
- Add
String.convertFirstCharacters()
andString.convertLastCharacters()
. - Add
String.toUpperCaseFirstCharacter()
andString.toLowerCaseFirstCharacter()
.
3.0.0 #
- Dart 2.12 requirement and null-safety.
- Use
package:clock
andpackage:fake_async
across the board. - Add
BigIntRange
and optimize iteration ofIntegerRange
. - Optimize the implementation of
ExpiryCache
. - Fix
maxAge
of theStream.buffer
operator. - Add
Fraction.sign
andComplex.sign
. - Add
IterablePrinter
to print lists. - Relax the type constraints on
Ordering.natural
. CharMatcher
is now aPattern
.- Introduce
package:more/feature.dart
to provide information about the runtime environment. - Add
Trie
(prefix tree) collection type. - Add
Ordering.percentile
. - Add
Iterable.toMap
,Iterable.atRandom
,Iterable.min
,Iterable.max
andIterable.percentile
. - Optimize
Range
object creation and error reporting, and addIterable.indices
. - Add converters
toBiMap
,toListMultimap
, andtoSetMultimap
. - Add
String.removePrefix
andString.removeSuffix
. - Add
List.rotate
andQueue.rotate
.
2.8.0 #
- Dart 2.9 compatibility and requirement (in preparation of null-safety).
- Remove
Iterable.concat()
in favor ofIterable.flatten()
. - Split
Iterable.zip()
intoInterable.zip()
,Iterable.zipPartial()
andIterable.zipPartialWith()
. - Fix a bug in
Ordering.nullsFirst
andOrdering.nullsLast
. - Fix a race condition in cache value resolution.
- Fix a rounding bug of numeric formats with precision 0.
- Add human number printer (1 kilo, 1 mega, ...).
- Add a map function to
Tuple
classes.
2.7.0 #
- Add
separatedBy
,flatMap
andflatten
function onIterable
. - Cleanup
printer
package and improve documentation.
2.6.0 #
- Add
repeat
function onIterable
. - Improved documentation.
2.5.0 #
- Printer package correctly trims, pads and separates unicode strings now.
- Updated class documentation regarding UTF-16 representation vs unicode strings.
2.4.0 #
- Add in-place logical operators to
BitList
. - Optimize
CharMatcher
with lookup tables. - Improved documentation.
2.3.0 #
- Add
ListMultimap
andSetMultimap
. - Mark
CharMatcher
,Cache
andOrdering
as immutable. - Improve documentation, which still included pre Dart 2.0 examples.
- Add extension methods to convert
Comparator
toOrdering
.
2.2.0 #
- Made
truncateToPeriod
andperiodical
extension methods ofDateTime
. - Add extension methods to convert
- a
Map<K, V>
to aBiMap<K, V>
, - an
Iterable<bool>
to aBitList
, and - an
Iterable<T>
to aMultiset<T>
.
- a
2.1.0 #
- Cleanup
Tuple
class to be more readable and better typed.
2.0.0 #
- Dart 2.7 compatibility and requirement.
- Cleaned up deprecated code.
- Iterables
- Converted most helpers to extension methods.
- Removed
fold
andfib
, as they are not generally useful. - Moved
digits
topackage:more/math
.
- Collections
- Add extension method to
int
anddouble
to create ranges, i.e.0.to(20)
. - Move the string lists to
String.toList()
extension method.
- Add extension method to
- Math
- Move all numerical operators to
num
,ìnt
and/orBigInt
(new).
- Move all numerical operators to
1.18.0 #
- Dart 2.4 compatibility and requirement.
- Add a tuple data type.
1.17.0 #
- Dart 2.3 compatibility and requirement.
- Various code improvements and optimizations.
1.16.0 #
- Dart 2.2 compatibility and requirement.
1.15.0 #
- Deprecated
package:more/int_math
package, and moved all not-deprecated code topackage:more/math.dart
. - Add 'polyfills' for hyperbolic functions to the math package.
- Add functionality for combining hash codes.
1.14.0 #
- Quaternion numbers.
1.13.0 #
- Rename
Range.stop
toRange.end
to be consistent with Dart naming conventions. - Rename
partition
tochunked
to be more consistent with Dart nomenclature. - Add the
zip
iterable.
1.12.0 #
- Add the number package.
- Move
Fraction
class into this package. - Add support for
Complex
numbers.
- Move
- Add the
groupBy
iterable.
1.11.0 #
- Add the printer package.
1.10.0 #
- Drop Dart 1.0 compatibility.
1.9.0 #
- Dart 2.0 strong-mode compatibility required the following breaking changes:
- Replace callers of
range()
with eitherIntegerRange()
orDoubleRange()
. - Removed padding argument from
partition()
. To migrate replace broken calls-sites withpartitionWithPadding()
.
- Replace callers of
1.8.1 #
- Removed empty(), emptyIterator(), emptyIterable() since these are part of the core library now.
- Add periodic iterable tools (monthly, weekly, daily, hourly, ...).
1.8.0 #
- Ordering.reversed, Ordering.nullsFirst, Ordering.nullsLast, and Ordering.lexicographical are now properties for consistency with the Iterable protocol.
- Various optimization and improvements on the Range class.
1.7.2 #
- Cleanup after micro library migration.
- Move to the latest Dart provided mixins.
1.7.1 #
- Cleanup after micro library migration.
- Address linter warnings.
- Better test coverage.
1.7.0 #
- Migrate to micro libraries.
- Add caching library.
1.6.0 #
- Use generic method syntax.
1.5.3 #
- Fix pubspec SDK constraints.
1.5.2 #
- Fix linter warnings.
- Improve documentation.
1.5.1 #
- Strong compiler compliant.
1.5.0 #
- Fix various typos and linter issues.
- Reformat documentation.
1.4.0 #
- Migrate to Travis.