aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/contract.js38
1 files changed, 20 insertions, 18 deletions
diff --git a/lib/contract.js b/lib/contract.js
index 550ad8bd3..66cd6753f 100644
--- a/lib/contract.js
+++ b/lib/contract.js
@@ -45,12 +45,24 @@ var abi = require('./abi');
* @returns contract object
*/
-var contract = function contract (address, desc) {
+var contract = function (address, desc) {
var inputParser = abi.inputParser(desc);
var outputParser = abi.outputParser(desc);
var result = {};
+ result.call = function (options) {
+ result._isTransact = false;
+ result._options = options;
+ return result;
+ };
+
+ result.transact = function (options) {
+ result._isTransact = true;
+ result._options = options;
+ return result;
+ };
+
desc.forEach(function (method) {
var displayName = abi.methodDisplayName(method.name);
@@ -61,12 +73,12 @@ var contract = function contract (address, desc) {
var signature = abi.methodSignature(method.name);
var parsed = inputParser[displayName][typeName].apply(null, params);
- var options = contract._options || {};
+ var options = result._options || {};
options.to = address;
options.data = signature + parsed;
var output = "";
- if (contract._isTransact) {
+ if (result._isTransact) {
// it's used byt natspec.js
// TODO: figure out better way to solve this
web3._currentContractAbi = desc;
@@ -77,6 +89,10 @@ var contract = function contract (address, desc) {
output = web3.eth.call(options);
}
+ // reset
+ result._options = {};
+ result._isTransact = false;
+
return outputParser[displayName][typeName](output);
};
@@ -87,23 +103,9 @@ var contract = function contract (address, desc) {
result[displayName][typeName] = impl;
});
- return result;
-};
-var transact = function (options) {
- contract._isTransact = true;
- contract._options = options;
- return contract;
-};
-
-var call = function (options) {
- contract._isTransact = false;
- contract._options = options;
- return contract;
+ return result;
};
-contract.transact = transact;
-contract.call = call;
-
module.exports = contract;