Fixes to ethereum.js and standard.js.

This commit is contained in:
Gav Wood 2015-01-24 17:42:49 -08:00
parent 61a0158877
commit 7869294a26
4 changed files with 29 additions and 5 deletions

14
dist/ethereum.js vendored

@ -448,7 +448,7 @@ var abi = require('./abi');
* var myContract = web3.eth.contract('0x0123123121', abi); // creation of contract object * var myContract = web3.eth.contract('0x0123123121', abi); // creation of contract object
* *
* myContract.myMethod('this is test string param for call'); // myMethod call (implicit, default) * myContract.myMethod('this is test string param for call'); // myMethod call (implicit, default)
* myContract.myMethod('this is test string param for call').call(); // myMethod call (explicit) * myContract.call().myMethod('this is test string param for call'); // myMethod call (explicit)
* myContract.transact().myMethod('this is test string param for transact'); // myMethod transact * myContract.transact().myMethod('this is test string param for transact'); // myMethod transact
* *
* @param address - address of the contract, which should be called * @param address - address of the contract, which should be called
@ -457,6 +457,18 @@ var abi = require('./abi');
*/ */
var contract = function (address, desc) { var contract = function (address, desc) {
desc.forEach(function (method) {
// workaround for invalid assumption that method.name is the full anonymous prototype of the method.
// it's not. it's just the name. the rest of the code assumes it's actually the anonymous
// prototype, so we make it so as a workaround.
if (method.name.indexOf('(') === -1) {
var displayName = method.name;
var typeName = method.inputs.map(function(i){return i.type}).join();
method.name = displayName + '(' + typeName + ')';
}
});
var inputParser = abi.inputParser(desc); var inputParser = abi.inputParser(desc);
var outputParser = abi.outputParser(desc); var outputParser = abi.outputParser(desc);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -37,7 +37,7 @@ var abi = require('./abi');
* var myContract = web3.eth.contract('0x0123123121', abi); // creation of contract object * var myContract = web3.eth.contract('0x0123123121', abi); // creation of contract object
* *
* myContract.myMethod('this is test string param for call'); // myMethod call (implicit, default) * myContract.myMethod('this is test string param for call'); // myMethod call (implicit, default)
* myContract.myMethod('this is test string param for call').call(); // myMethod call (explicit) * myContract.call().myMethod('this is test string param for call'); // myMethod call (explicit)
* myContract.transact().myMethod('this is test string param for transact'); // myMethod transact * myContract.transact().myMethod('this is test string param for transact'); // myMethod transact
* *
* @param address - address of the contract, which should be called * @param address - address of the contract, which should be called
@ -46,6 +46,18 @@ var abi = require('./abi');
*/ */
var contract = function (address, desc) { var contract = function (address, desc) {
desc.forEach(function (method) {
// workaround for invalid assumption that method.name is the full anonymous prototype of the method.
// it's not. it's just the name. the rest of the code assumes it's actually the anonymous
// prototype, so we make it so as a workaround.
if (method.name.indexOf('(') === -1) {
var displayName = method.name;
var typeName = method.inputs.map(function(i){return i.type}).join();
method.name = displayName + '(' + typeName + ')';
}
});
var inputParser = abi.inputParser(desc); var inputParser = abi.inputParser(desc);
var outputParser = abi.outputParser(desc); var outputParser = abi.outputParser(desc);