aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMarek Kotewicz <marek.kotewicz@gmail.com>2015-01-14 21:19:54 +0800
committerMarek Kotewicz <marek.kotewicz@gmail.com>2015-01-14 21:19:54 +0800
commitb0a9bbf33a022a5763e62a78dbd7f32af250726c (patch)
tree74257a4b5aee9911131e553ac6b8a87a5d93994f /lib
parent6b2ec231323b62f5dc81c7702940d784fac98966 (diff)
downloadgo-tangerine-b0a9bbf33a022a5763e62a78dbd7f32af250726c.tar.gz
go-tangerine-b0a9bbf33a022a5763e62a78dbd7f32af250726c.tar.zst
go-tangerine-b0a9bbf33a022a5763e62a78dbd7f32af250726c.zip
next part of abi.js docs
Diffstat (limited to 'lib')
-rw-r--r--lib/abi.js63
1 files changed, 34 insertions, 29 deletions
diff --git a/lib/abi.js b/lib/abi.js
index cde725ff1..674ad8288 100644
--- a/lib/abi.js
+++ b/lib/abi.js
@@ -35,6 +35,10 @@ var decToHex = function (dec) {
return parseInt(dec).toString(16);
};
+/// Finds first index of array element matching pattern
+/// @param array
+/// @param callback pattern
+/// @returns index of element
var findIndex = function (array, callback) {
var end = false;
var i = 0;
@@ -44,31 +48,39 @@ var findIndex = function (array, callback) {
return end ? i - 1 : -1;
};
+/// @returns a function that is used as a pattern for 'findIndex'
var findMethodIndex = function (json, methodName) {
return findIndex(json, function (method) {
return method.name === methodName;
});
};
+/// @param string string to be padded
+/// @param number of characters that result string should have
+/// @returns right aligned string
var padLeft = function (string, chars) {
return new Array(chars - string.length + 1).join("0") + string;
};
-/// Setups input formatters for solidity types
-/// @returns an array of input formatters
-var setupInputTypes = function () {
-
- var prefixedType = function (prefix) {
- return function (type, value) {
- return type.indexOf(prefix) === 0;
- };
+/// @param expected type prefix (string)
+/// @returns function which checks if type has matching prefix. if yes, returns true, otherwise false
+var prefixedType = function (prefix) {
+ return function (type) {
+ return type.indexOf(prefix) === 0;
};
+};
- var namedType = function (name, formatter) {
- return function (type, value) {
- return type === name;
- };
+/// @param expected type name (string)
+/// @returns function which checks if type is matching expected one. if yes, returns true, otherwise false
+var namedType = function (name) {
+ return function (type) {
+ return name === type;
};
+};
+
+/// Setups input formatters for solidity types
+/// @returns an array of input formatters
+var setupInputTypes = function () {
var formatInt = function (value) {
var padding = 32 * 2;
@@ -105,6 +117,11 @@ var setupInputTypes = function () {
var inputTypes = setupInputTypes();
+/// Formats input params to bytes
+/// @param contract json abi
+/// @param name of the method that we want to use
+/// @param array of params that will be formatted to bytes
+/// @returns bytes representation of input params
var toAbiInput = function (json, methodName, params) {
var bytes = "";
var index = findMethodIndex(json, methodName);
@@ -135,23 +152,6 @@ var toAbiInput = function (json, methodName, params) {
/// @returns an array of output formatters
var setupOutputTypes = function () {
- /// @param expected type prefix (string)
- /// @returns function which checks if type has matching prefix. if yes, returns true, otherwise false
- var prefixedType = function (prefix) {
- return function (type) {
- var expected = prefix;
- return type.indexOf(expected) === 0;
- };
- };
-
- /// @param expected type name (string)
- /// @returns function which checks if type is matching expected one. if yes, returns true, otherwise false
- var namedType = function (name) {
- return function (type) {
- return name === type;
- };
- };
-
/// @returns input bytes formatted to int
var formatInt = function (value) {
return value.length <= 8 ? +parseInt(value, 16) : hexToDec(value);
@@ -186,6 +186,11 @@ var setupOutputTypes = function () {
var outputTypes = setupOutputTypes();
+/// Formats output bytes back to param list
+/// @param contract json abi
+/// @param name of the method that we want to use
+/// @param bytes representtion of output
+/// @returns array of output params
var fromAbiOutput = function (json, methodName, output) {
var index = findMethodIndex(json, methodName);