renderParamValidation function
Generates validation code for a parameter if it has validation constraints.
Implementation
String renderParamValidation(Map<String, dynamic> p) {
final paramName = p['name'] as String;
final isOptional = p['isOptional'] == true;
final metadata = p['parameterMetadata'] as Map<String, dynamic>?;
if (metadata == null) return '';
final validations = <String>[];
if (metadata.containsKey('maxLength')) {
final maxLength = metadata['maxLength'] as int;
if (isOptional) {
validations.add(
' if ($paramName != null && $paramName.length > $maxLength) {\n'
' return CallToolResult(\n'
" content: [TextContent(text: 'Parameter $paramName exceeds maximum length of $maxLength characters.')],\n"
' isError: true,\n'
' );\n'
' }',
);
} else {
validations.add(
' if ($paramName.length > $maxLength) {\n'
' return CallToolResult(\n'
" content: [TextContent(text: 'Parameter $paramName exceeds maximum length of $maxLength characters.')],\n"
' isError: true,\n'
' );\n'
' }',
);
}
}
if (metadata.containsKey('pattern')) {
final pattern = metadata['pattern'] as String;
if (isOptional) {
validations.add(
' if ($paramName != null && !RegExp(r\'$pattern\').hasMatch($paramName)) {\n'
' return CallToolResult(\n'
" content: [TextContent(text: 'Parameter $paramName does not match required pattern.')],\n"
' isError: true,\n'
' );\n'
' }',
);
} else {
validations.add(
' if (!RegExp(r\'$pattern\').hasMatch($paramName)) {\n'
' return CallToolResult(\n'
" content: [TextContent(text: 'Parameter $paramName does not match required pattern.')],\n"
' isError: true,\n'
' );\n'
' }',
);
}
}
return validations.isEmpty ? '' : validations.join('\n');
}