renderParamValidation function

String renderParamValidation(
  1. Map<String, dynamic> p
)

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');
}