Skip to content

Commit c55b853

Browse files
authored
Merge pull request #40 from netglade/feat/more-extensions
Add a few new useful extensions
2 parents 52b112c + b9e9fb9 commit c55b853

File tree

8 files changed

+62
-4
lines changed

8 files changed

+62
-4
lines changed

packages/netglade_flutter_utils/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ documentation: https://github.com/netglade/flutter_core/tree/main/packages/netgl
88

99
environment:
1010
sdk: ^3.0.0
11-
flutter: '>=3.0.0'
11+
flutter: ">=3.0.0"
1212

1313
dependencies:
1414
flutter:
@@ -19,7 +19,7 @@ dev_dependencies:
1919
flutter_test:
2020
sdk: flutter
2121
mocktail: ^1.0.0
22-
netglade_analysis: ^8.0.0
22+
netglade_analysis: ^10.0.0
2323
test: ^1.24.6
2424

2525
flutter:

packages/netglade_utils/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
2+
## 2.1.0
3+
- Add `byNameOrDefault` and `byNameOrNull` Enum's extensions.
4+
- Add `normalizeUrl` and `rtrim` String's extensions.
5+
- Add `flattenedList` on Iterable of Iterables extension.
6+
17
## 2.0.0
28
- Remove `isBlank`, `isNotBlank` from `String?` extension.
39

packages/netglade_utils/analysis_options.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,9 @@ include: package:netglade_analysis/lints.yaml
33
dart_code_metrics:
44
extends:
55
- package:netglade_analysis/dcm.yaml
6+
rules:
7+
avoid-duplicate-collection-elements:
8+
exclude:
9+
- test/**
610
pubspec-rules:
711
prefer-publish-to-none: false
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
extension EnumExtensions<T extends Enum> on Iterable<T> {
2+
/// Finds the enum value in this list with name [name].
3+
///
4+
/// Goes through this collection looking for an enum with
5+
/// name [name], as reported by [EnumName.name].
6+
/// Returns the first value with the given name. Such a value must be found.
7+
T byNameOrDefault(String name, {required T defaultValue}) {
8+
try {
9+
return byName(name);
10+
// ignore: avoid_catching_errors, byName throws it
11+
} on ArgumentError catch (_) {
12+
return defaultValue;
13+
}
14+
}
15+
16+
T? byNameOrNull(String name) {
17+
try {
18+
return byName(name);
19+
// ignore: avoid_catching_errors, byName throws it
20+
} on ArgumentError catch (_) {
21+
return null;
22+
}
23+
}
24+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export 'date_time_extensions.dart';
2+
export 'enum_extensions.dart';
23
export 'future_extensions.dart';
34
export 'iterable_extensions.dart';
45
export 'object_extensions.dart';

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,7 @@ extension IterableExtensions<T> on Iterable<T> {
1414
return result.values;
1515
}
1616
}
17+
18+
extension IterableIterableExtension<T> on Iterable<Iterable<T>> {
19+
List<T> get flattenedList => [for (final elements in this) ...elements];
20+
}

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,25 @@ extension StringExtensions on String {
3232
String? ifBlank([String? defaultValue]) {
3333
return isBlank ? defaultValue : this;
3434
}
35+
36+
/// Normalize supposedly string containing URL
37+
///
38+
/// Appends https:// when does not start with.
39+
/// Trims any trailing '/' chars.
40+
String normalizeUrl() {
41+
final value = trim();
42+
43+
if (value.startsWith(RegExp(r'http[s]?:\/\/'))) return value.rtrim('/');
44+
45+
return 'https://$value'.rtrim('/');
46+
}
47+
48+
/// Removes any trailing char from [chars].
49+
String rtrim(String chars) {
50+
final pattern = RegExp('[$chars]+\$');
51+
52+
return replaceAll(pattern, '');
53+
}
3554
}
3655

3756
extension NullableStringExtensions on String? {

packages/netglade_utils/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: netglade_utils
2-
version: 2.0.0
2+
version: 2.1.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
@@ -17,5 +17,5 @@ dependencies:
1717
mocktail: ^1.0.0
1818

1919
dev_dependencies:
20-
netglade_analysis: ^8.0.0
20+
netglade_analysis: ^10.0.0
2121
test: ^1.24.6

0 commit comments

Comments
 (0)