aboutsummaryrefslogtreecommitdiffstats
path: root/dist/ethereum.js
diff options
context:
space:
mode:
Diffstat (limited to 'dist/ethereum.js')
-rw-r--r--dist/ethereum.js37
1 files changed, 36 insertions, 1 deletions
diff --git a/dist/ethereum.js b/dist/ethereum.js
index 0c065ac89..0d62f5060 100644
--- a/dist/ethereum.js
+++ b/dist/ethereum.js
@@ -74,6 +74,14 @@ var filterFunctions = function (json) {
});
};
+/// Filters all events form input abi
+/// @returns abi array with filtered objects of type 'event'
+var filterEvents = function (json) {
+ return json.filter(function (current) {
+ return current.type === 'event';
+ });
+};
+
/// @param string string to be padded
/// @param number of characters that result string should have
/// @param sign, by default 0
@@ -415,7 +423,8 @@ module.exports = {
methodDisplayName: methodDisplayName,
methodTypeName: methodTypeName,
getMethodWithName: getMethodWithName,
- filterFunctions: filterFunctions
+ filterFunctions: filterFunctions,
+ filterEvents: filterEvents
};
@@ -507,6 +516,7 @@ var contract = function (address, desc) {
});
+ // create contract functions
abi.filterFunctions(desc).forEach(function (method) {
var displayName = abi.methodDisplayName(method.name);
@@ -561,6 +571,31 @@ var contract = function (address, desc) {
});
+
+ // create contract events
+ abi.filterEvents(desc).forEach(function (event) {
+
+ // TODO: rename these methods, cause they are used not only for methods
+ var displayName = abi.methodDisplayName(event.name);
+ var typeName = abi.methodTypeName(event.name);
+
+ var impl = function (options) {
+ var o = options || {};
+ o.address = o.address || address;
+ o.topics = o.topics || [];
+ o.topics.push(abi.methodSignature(event.name));
+
+ return web3.eth.watch(o);
+ };
+
+ if (result[displayName] === undefined) {
+ result[displayName] = impl;
+ }
+
+ result[displayName][typeName] = impl;
+
+ });
+
return result;
};