diff options
author | Greg Hysen <greg.hysen@gmail.com> | 2018-12-20 05:01:22 +0800 |
---|---|---|
committer | Greg Hysen <greg.hysen@gmail.com> | 2019-01-15 02:49:44 +0800 |
commit | e9a82905e35041d36c4c9be75e11c0399ee96b89 (patch) | |
tree | bd49ab279ae96fb0248b252e55399f3ce50c4793 /packages/utils/src/abi_encoder/evm_data_types/array.ts | |
parent | f8684d6a776724d0172c30126a7277885ed4e966 (diff) | |
download | dexon-sol-tools-e9a82905e35041d36c4c9be75e11c0399ee96b89.tar dexon-sol-tools-e9a82905e35041d36c4c9be75e11c0399ee96b89.tar.gz dexon-sol-tools-e9a82905e35041d36c4c9be75e11c0399ee96b89.tar.bz2 dexon-sol-tools-e9a82905e35041d36c4c9be75e11c0399ee96b89.tar.lz dexon-sol-tools-e9a82905e35041d36c4c9be75e11c0399ee96b89.tar.xz dexon-sol-tools-e9a82905e35041d36c4c9be75e11c0399ee96b89.tar.zst dexon-sol-tools-e9a82905e35041d36c4c9be75e11c0399ee96b89.zip |
Abi Encoder tests fixed + added a signature parser for cases where MethodAbi/DataItems are not readily available
Diffstat (limited to 'packages/utils/src/abi_encoder/evm_data_types/array.ts')
-rw-r--r-- | packages/utils/src/abi_encoder/evm_data_types/array.ts | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/packages/utils/src/abi_encoder/evm_data_types/array.ts b/packages/utils/src/abi_encoder/evm_data_types/array.ts index 7595cb667..8b71dc913 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/array.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/array.ts @@ -38,22 +38,30 @@ export class ArrayDataType extends AbstractSetDataType { this._arraySignature = this._computeSignature(); } - public getSignature(): string { - return this._arraySignature; + public getSignatureType(): string { + return this._computeSignature(false); } - private _computeSignature(): string { + public getSignature(detailed?: boolean): string { + if (_.isEmpty(this.getDataItem().name) || !detailed) return this.getSignatureType(); + const name = this.getDataItem().name; + const shortName = name.indexOf('.') > 0 ? name.substr(name.lastIndexOf('.') + 1) : name; + const detailedSignature = `${shortName} ${this._computeSignature(detailed)}`; + return detailedSignature; + } + + private _computeSignature(detailed?: boolean): string { // Compute signature for a single array element const elementDataItem: DataItem = { type: this._elementType, - name: 'N/A', + name: '', }; const elementComponents = this.getDataItem().components; if (!_.isUndefined(elementComponents)) { elementDataItem.components = elementComponents; } const elementDataType = this.getFactory().create(elementDataItem); - const elementSignature = elementDataType.getSignature(); + const elementSignature = elementDataType.getSignature(detailed); // Construct signature for array of type `element` if (_.isUndefined(this._arrayLength)) { return `${elementSignature}[]`; |