generatePromptSpecs function
Generates prompt spec constants for each prompt.
Implementation
String generatePromptSpecs(List<Map<String, dynamic>> prompts) {
final specs = prompts
.map((p) {
final name = p['name'] as String;
final title = p['title'] as String?;
final description = p['description'] as String;
final arguments = p['arguments'] as List<Map<String, dynamic>>;
final argsList = arguments
.map((arg) {
final argName = arg['name'] as String;
final argTitle = arg['title'] as String?;
final argDesc = arg['description'] as String?;
final argRequired = arg['required'] as bool;
var argStr =
'PromptArgument(name: \'$argName\', required: $argRequired)';
if (argTitle != null || argDesc != null) {
final titlePart = argTitle != null
? 'title: \'${escapeDartString(argTitle)}\''
: '';
final descPart = argDesc != null
? 'description: \'${escapeDartString(argDesc)}\''
: '';
argStr =
'PromptArgument(name: \'$argName\', $titlePart, $descPart, required: $argRequired)';
}
return argStr;
})
.join(',\n ');
var promptStr =
'static final _prompt${name}Spec = Prompt(name: \'$name\', description: \'${escapeDartString(description)}\'';
if (title != null) {
promptStr =
'static final _prompt${name}Spec = Prompt(name: \'$name\', title: \'${escapeDartString(title)}\', description: \'${escapeDartString(description)}\'';
}
if (arguments.isNotEmpty) {
promptStr +=
',\n arguments: [\n $argsList,\n ]';
}
promptStr += ');';
return promptStr;
})
.join('\n\n');
return specs;
}