Use AbiEncoder for methodAbiToFunctionSignature
This commit is contained in:
		@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { AbiEncoder } from '@0x/utils';
 | 
				
			||||||
import { DataItem, MethodAbi } from 'ethereum-types';
 | 
					import { DataItem, MethodAbi } from 'ethereum-types';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// tslint:disable-next-line:completed-docs
 | 
					// tslint:disable-next-line:completed-docs
 | 
				
			||||||
@@ -29,24 +30,11 @@ export function formatABIDataItem(abi: DataItem, value: any, formatter: (type: s
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function dataItemsToABIString(dataItems: DataItem[]): string {
 | 
					 | 
				
			||||||
    const trailingArrayRegex = /\[\d*\]$/;
 | 
					 | 
				
			||||||
    const types = dataItems.map(item => {
 | 
					 | 
				
			||||||
        if (item.components) {
 | 
					 | 
				
			||||||
            const componentsABIString = `(${dataItemsToABIString(item.components)})`;
 | 
					 | 
				
			||||||
            const trailingArray = item.type.match(trailingArrayRegex);
 | 
					 | 
				
			||||||
            return trailingArray !== null ? componentsABIString.concat(trailingArray[0]) : componentsABIString;
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            return item.type;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    return `${types.join(',')}`;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Takes a MethodAbi and returns a function signature for ABI encoding/decoding
 | 
					 * Takes a MethodAbi and returns a function signature for ABI encoding/decoding
 | 
				
			||||||
 * @return a function signature as a string, e.g. 'functionName(uint256, bytes[])'
 | 
					 * @return a function signature as a string, e.g. 'functionName(uint256, bytes[])'
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export function methodAbiToFunctionSignature(methodAbi: MethodAbi): string {
 | 
					export function methodAbiToFunctionSignature(methodAbi: MethodAbi): string {
 | 
				
			||||||
    const inputs = dataItemsToABIString(methodAbi.inputs);
 | 
					    const method = AbiEncoder.createMethod(methodAbi.name, methodAbi.inputs);
 | 
				
			||||||
    return `${methodAbi.name}(${inputs})`;
 | 
					    return method.getSignature();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user