Skip to content

Commit ffb925d

Browse files
authored
Merge pull request #41 from netglade/feat/mapIndex-map-where
Add mapIndexed2 and where on map type extension
2 parents c55b853 + 7885407 commit ffb925d

File tree

4 files changed

+26
-1
lines changed

4 files changed

+26
-1
lines changed

packages/netglade_utils/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11

2+
## 2.2.0
3+
- Add `mapIndexed2` - replacement for built-in mapIndexed which uses sync*
4+
- Add `where` extension on Map type - returning new map instance.
5+
26
## 2.1.0
37
- Add `byNameOrDefault` and `byNameOrNull` Enum's extensions.
48
- Add `normalizeUrl` and `rtrim` String's extensions.

packages/netglade_utils/lib/src/extensions/iterable_extensions.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ extension IterableExtensions<T> on Iterable<T> {
1313

1414
return result.values;
1515
}
16+
17+
/// Maps into [K] with index.
18+
///
19+
/// Faster than mapIndexed `sync*`.
20+
// ignore: prefer-typedefs-for-callbacks, ok to have it inline, avoid-positional-record-field-access
21+
Iterable<K> mapIndexed2<K>(K Function(int index, T value) map) => indexed.map((entry) => map(entry.$1, entry.$2));
1622
}
1723

1824
extension IterableIterableExtension<T> on Iterable<Iterable<T>> {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
extension MapExtensions<KEY, VALUE> on Map<KEY, VALUE> {
2+
/// Immutable where on maps.
3+
// ignore: prefer-typedefs-for-callbacks, ok to have it inline.
4+
Map<KEY2, VALUE2> where<KEY2, VALUE2>(bool Function(KEY key, VALUE value) test) {
5+
final result = <KEY2, VALUE2>{};
6+
7+
for (final entry in entries) {
8+
if (test(entry.key, entry.value)) {
9+
result[entry.key as KEY2] = entry.value as VALUE2;
10+
}
11+
}
12+
13+
return result;
14+
}
15+
}

packages/netglade_utils/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: netglade_utils
2-
version: 2.1.0
2+
version: 2.2.0
33
description: Dart utils used internally at netglade.
44
repository: https://github.com/netglade/flutter_core/tree/main/packages/netglade_utils
55
issue_tracker: https://github.com/netglade/flutter_core/issues

0 commit comments

Comments
 (0)