From: Ardis Lu Date: Sun, 20 Aug 2023 03:57:48 +0000 (-0700) Subject: Automatically map Solidity to ABI types X-Git-Url: https://git.ardis.lu/?a=commitdiff_plain;h=9095ee65414f80e206477abbf89934558180a577;p=4-byte-gen Automatically map Solidity to ABI types --- diff --git a/index.html b/index.html index 36f40ee..813f82f 100644 --- a/index.html +++ b/index.html @@ -458,8 +458,24 @@ const { name, parameters } = functionRegex.exec(fn).groups; // Drop parameter names and extraneous whitespace, if there are any - // E.g. "uint256 abc, uint256, bool test" --> "uint256,uint256,bool" - const parametersTypes = parameters.split(',').map(param => param.trim().split(' ')[0]).join(','); + // E.g. "uint abc, uint256, bool test" --> ['uint', 'uint256', 'bool'] + const parametersArray = parameters.split(',').map(param => param.trim().split(' ')[0]); + + // Convert types from Solidity to ABI (e.g., 'uint' --> 'uint256') + // Reference: https://docs.soliditylang.org/en/latest/abi-spec.html#types + for (const [index, param] of parametersArray.entries()) { + switch (param) { + case 'int': parametersArray[index] = 'int256'; break; + case 'uint': parametersArray[index] = 'uint256'; break; + case 'fixed': parametersArray[index] = 'fixed128x18'; break; + case 'ufixed': parametersArray[index] = 'ufixed128x18'; break; + case 'contract': parametersArray[index] = 'address'; break; + case 'enum': parametersArray[index] = 'uint8'; break; + case 'struct': parametersArray[index] = 'tuple'; break; + } + } + + const parametersTypes = parametersArray.join(','); return { name, parametersTypes }; }