parse static method
Parse contract into ordered method pins. Throws
WorldManifestError (with the fix hint) when nothing parses — a
declared row without at least one parsable method cannot become a
touchpoint.
Implementation
static List<ContractMethod> parse(String contract) {
final methods = <ContractMethod>[];
for (final match in _method.allMatches(contract)) {
final params = match
.group(2)!
.split(',')
.map((p) => p.trim())
.where((p) => p.isNotEmpty)
.map((p) => p.split(':').first.trim())
.toList(growable: false);
methods.add(
ContractMethod(
name: match.group(1)!,
params: params,
returns: match.group(3)!,
),
);
}
if (methods.isEmpty) {
throw WorldManifestError(
'contract "$contract" has no parsable methods — expected '
'"name(params) -> Return, name2() -> void" '
'--> fix: declare the contract row as method signatures.',
);
}
return methods;
}