From a1a007408efb121f2a4af93bfb8416ef1cf3d53c Mon Sep 17 00:00:00 2001 From: Ardis Lu Date: Sun, 19 Mar 2023 00:06:25 -0700 Subject: [PATCH] Refactor to eliminate recursion --- index.html | 44 +++++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/index.html b/index.html index 0be9681..7fb2316 100644 --- a/index.html +++ b/index.html @@ -77,37 +77,31 @@ return { name, parametersTypes }; } - function calculateOptimizedName(name, parametersTypes, minimum) { - let counter = 0; - function generate(name, parametersTypes) { - const functionName = `${name}_${counter.toString(36)}(${parametersTypes})`; - counter++; - - const hash = validate(functionName); - if (!hash) { - return generate(name, parametersTypes); + function validate(functionName, minimum) { + const byteArray = keccak256(encoder.encode(functionName)).slice(0, 4); + for (let i = 0; i < minimum; i++) { + if (byteArray[i] === 0) { + if (i + 1 === minimum) { + const hash = `0x${[...byteArray].map(b => b.toString(16).padStart(2, '0')).join('')}`; + return hash; + } } else { - return { functionName, hash }; + return false; } } + } - function validate(functionName) { - const byteArray = keccak256(encoder.encode(functionName)).slice(0, 4); - for (let i = 0; i < minimum; i++) { - if (byteArray[i] === 0) { - if (i + 1 === minimum) { - const hash = `0x${[...byteArray].map(b => b.toString(16).padStart(2, '0')).join('')}`; - return hash; - } - } - else { - return false; - } - } + function calculateOptimizedName(name, parametersTypes, minimum) { + let counter = 0; + let functionName = `${name}_${counter}(${parametersTypes})`; + let hash = validate(functionName, minimum); + while (!hash) { + counter++; + functionName = `${name}_${counter.toString(36)}(${parametersTypes})`; + hash = validate(functionName, minimum); } - - return generate(name, parametersTypes); + return { functionName, hash }; } document.querySelector('form').addEventListener('submit', e => { -- 2.47.3