validateFeatureName static method
Validates feature name format.
Ensures feature names follow proper naming conventions and don't conflict with reserved words.
Parameters:
name: Feature name to validate
Returns: ValidationResult with the normalized name or error details
Example:
final result = ArgumentValidator.validateFeatureName('user_profile');
if (result.isValid) {
print('Valid feature name: ${result.value}');
} else {
print('Invalid feature name: ${result.error}');
}
Implementation
static ValidationResult<String> validateFeatureName(String? name) {
if (name == null || name.isEmpty) {
return ValidationResult.error(
'Feature name is required',
suggestion: 'Provide a feature name as an argument',
examples: ['morpheme feature user_profile'],
);
}
if (!RegExp(r'^[a-z][a-z0-9_]*$').hasMatch(name)) {
return ValidationResult.error(
'Feature name must use snake_case format',
suggestion: 'Use lowercase letters, numbers, and underscores only',
examples: ['user_profile', 'shopping_cart', 'payment_system'],
);
}
// Reserved feature names
const reservedNames = ['core', 'shared', 'common', 'base'];
if (reservedNames.contains(name.toLowerCase())) {
return ValidationResult.error(
'Feature name "$name" is reserved',
suggestion: 'Choose a different feature name that is not reserved',
examples: ['user_$name', '${name}_feature', 'custom_$name'],
);
}
return ValidationResult.success(name.toLowerCase());
}