parseFunction static method
Parse a human-readable signature like
"function transfer(address to, uint256 amount) returns (bool)".
Implementation
static SolFunction parseFunction(String sig) {
final trimmed = sig.trim();
final withoutPrefix = trimmed.startsWith('function ')
? trimmed.substring(9).trim()
: trimmed;
final parenStart = withoutPrefix.indexOf('(');
final name = withoutPrefix.substring(0, parenStart).trim();
final inputEnd = _findMatchingParen(withoutPrefix, parenStart);
final inputStr = withoutPrefix.substring(parenStart + 1, inputEnd);
var outputStr = '';
final returnsIdx = withoutPrefix.indexOf('returns', inputEnd);
if (returnsIdx >= 0) {
final outStart = withoutPrefix.indexOf('(', returnsIdx);
final outEnd = _findMatchingParen(withoutPrefix, outStart);
outputStr = withoutPrefix.substring(outStart + 1, outEnd);
}
final (inputTypes, inputNames) = _parseParams(inputStr);
final (outputTypes, outputNames) = _parseParams(outputStr);
return SolFunction(
name: name,
inputs: inputTypes,
inputNames: inputNames,
outputs: outputTypes,
outputNames: outputNames,
);
}