parse method
Parses workflow file contents.
Implementation
WorkflowDefinition parse(
String content, {
String path = defaultWorkflowPath,
}) {
if (!content.startsWith('---')) {
return WorkflowDefinition(
config: const <String, dynamic>{},
promptTemplate: content.trim(),
path: path,
);
}
final lines = content.split(RegExp(r'\r?\n'));
var closingIndex = -1;
for (var i = 1; i < lines.length; i++) {
if (lines[i].trim() == '---') {
closingIndex = i;
break;
}
}
if (closingIndex == -1) {
throw const WorkflowException(
WorkflowFailureCode.workflowParseError,
'Workflow front matter is missing a closing delimiter.',
);
}
final frontMatter = lines.sublist(1, closingIndex).join('\n');
final promptBody = lines.sublist(closingIndex + 1).join('\n').trim();
final config = _parseFrontMatter(frontMatter);
return WorkflowDefinition(
config: config,
promptTemplate: promptBody,
path: path,
);
}