Skip to content

Commit

Permalink
Merge pull request #3348 from ValentinVignal/riverpod-generator/Add-p…
Browse files Browse the repository at this point in the history
…rovider-prefix-to-config
  • Loading branch information
rrousselGit committed Feb 25, 2024
2 parents a415d15 + 88fb9d7 commit 42bfe81
Show file tree
Hide file tree
Showing 10 changed files with 112 additions and 56 deletions.
4 changes: 4 additions & 0 deletions packages/riverpod_generator/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## Unreleased minor

- Adds `provider_name_prefix` and `provider_family_name_prefix` to `build.yaml`. (thanks to @ValentinVignal)

## 2.3.11 - 2024-02-04

- `riverpod_analyzer_utils` upgraded to `0.5.1`
Expand Down
9 changes: 8 additions & 1 deletion packages/riverpod_generator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,17 @@ targets:
builders:
riverpod_generator:
options:
# Could be changed to "my", such that riverpod_generator
# would generate "myCountProvider" instead of "countProvider"
provider_name_prefix: "" # (default)
# Similar to provider_name_prefix, this is an option for renaming
# providers with parameters ("families").
# This takes precedence over provider_name_prefix.
provider_family_name_prefix: "" # (default)
# Could be changed to "Pod", such that riverpod_generator
# would generate "countPod" instead of "countProvider"
provider_name_suffix: "Provider" # (default)
# Similar to provider_name_sufix, this is an option for renaming
# Similar to provider_name_suffix, this is an option for renaming
# providers with parameters ("families").
# This takes precedence over provider_name_suffix.
provider_family_name_suffix: "Provider" # (default)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ targets:
builders:
riverpod_generator:
options:
provider_name_prefix: 'my'
provider_family_name_prefix: 'myFamily'
provider_name_suffix: 'Pod'
provider_family_name_suffix: 'ProviderFamily'
provider_family_name_suffix: 'ProviderFamily'
72 changes: 36 additions & 36 deletions packages/riverpod_generator/integration/build_yaml/lib/main.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,35 @@ void main() {
);

test('provider names', () {
expect(countPod.name, 'countPod');
expect(countFuturePod.name, 'countFuturePod');
expect(countStreamPod.name, 'countStreamPod');
expect(countNotifierPod.name, 'countNotifierPod');
expect(countAsyncNotifierPod.name, 'countAsyncNotifierPod');
expect(countStreamNotifierPod.name, 'countStreamNotifierPod');
expect(myCountPod.name, 'myCountPod');
expect(myCountFuturePod.name, 'myCountFuturePod');
expect(myCountStreamPod.name, 'myCountStreamPod');
expect(myCountNotifierPod.name, 'myCountNotifierPod');
expect(myCountAsyncNotifierPod.name, 'myCountAsyncNotifierPod');
expect(myCountStreamNotifierPod.name, 'myCountStreamNotifierPod');
});

test('provider family names', () {
expect(count2ProviderFamily.name, 'count2ProviderFamily');
expect(countFuture2ProviderFamily.name, 'countFuture2ProviderFamily');
expect(countStream2ProviderFamily.name, 'countStream2ProviderFamily');
expect(countNotifier2ProviderFamily.name, 'countNotifier2ProviderFamily');
expect(myFamilyCount2ProviderFamily.name, 'myFamilyCount2ProviderFamily');
expect(
countAsyncNotifier2ProviderFamily.name,
'countAsyncNotifier2ProviderFamily',
myFamilyCountFuture2ProviderFamily.name,
'myFamilyCountFuture2ProviderFamily',
);
expect(
countStreamNotifier2ProviderFamily.name,
'countStreamNotifier2ProviderFamily',
myFamilyCountStream2ProviderFamily.name,
'myFamilyCountStream2ProviderFamily',
);
expect(
myFamilyCountNotifier2ProviderFamily.name,
'myFamilyCountNotifier2ProviderFamily',
);
expect(
myFamilyCountAsyncNotifier2ProviderFamily.name,
'myFamilyCountAsyncNotifier2ProviderFamily',
);
expect(
myFamilyCountStreamNotifier2ProviderFamily.name,
'myFamilyCountStreamNotifier2ProviderFamily',
);
});
}
6 changes: 6 additions & 0 deletions packages/riverpod_generator/lib/src/models.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
class BuildYamlOptions {
BuildYamlOptions({
this.providerNamePrefix,
this.providerFamilyNamePrefix,
this.providerNameSuffix,
this.providerFamilyNameSuffix,
});

factory BuildYamlOptions.fromMap(Map<String, dynamic> map) {
return BuildYamlOptions(
providerNamePrefix: map['provider_name_prefix'] as String?,
providerFamilyNamePrefix: map['provider_family_name_prefix'] as String?,
providerNameSuffix: map['provider_name_suffix'] as String?,
providerFamilyNameSuffix: map['provider_family_name_suffix'] as String?,
);
}

final String? providerNamePrefix;
final String? providerFamilyNamePrefix;
final String? providerNameSuffix;
final String? providerFamilyNameSuffix;
}
Expand Down
10 changes: 8 additions & 2 deletions packages/riverpod_generator/lib/src/riverpod_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ String _hashFnIdentifier(String hashFnName) {
'null : $hashFnName';
}

const _defaultProviderNamePrefix = '';
const _defaultProviderNameSuffix = 'Provider';

/// May be thrown by generators during [Generator.generate].
Expand Down Expand Up @@ -94,6 +95,8 @@ class _RiverpodGeneratorVisitor extends RecursiveRiverpodAstVisitor {
final StringBuffer buffer;
final BuildYamlOptions options;

String get prefix => options.providerNamePrefix ?? _defaultProviderNamePrefix;
String get familyPrefix => options.providerFamilyNamePrefix ?? prefix;
String get suffix => options.providerNameSuffix ?? _defaultProviderNameSuffix;
String get familySuffix => options.providerFamilyNameSuffix ?? suffix;

Expand Down Expand Up @@ -140,7 +143,9 @@ class _SystemHash {
buffer.write(_hashFn(provider, hashFunctionName));

if (parameters.isEmpty) {
final providerName = '${provider.providerElement.name.lowerFirst}$suffix';
final rawProviderName = provider.providerElement.name;
final providerName =
'$prefix${prefix.isEmpty ? rawProviderName.lowerFirst : rawProviderName.titled}$suffix';
final notifierTypedefName = providerName.startsWith('_')
? '_\$${provider.providerElement.name.substring(1)}'
: '_\$${provider.providerElement.name}';
Expand All @@ -152,8 +157,9 @@ class _SystemHash {
hashFn: hashFn,
).run(buffer);
} else {
final rawProviderName = provider.providerElement.name;
final providerName =
'${provider.providerElement.name.lowerFirst}$familySuffix';
'$prefix${prefix.isEmpty ? rawProviderName.lowerFirst : rawProviderName.titled}$suffix';
final notifierTypedefName = providerName.startsWith('_')
? '_\$${provider.providerElement.name.substring(1)}'
: '_\$${provider.providerElement.name}';
Expand Down

0 comments on commit 42bfe81

Please sign in to comment.