From b0a9bbf33a022a5763e62a78dbd7f32af250726c Mon Sep 17 00:00:00 2001 From: Marek Kotewicz Date: Wed, 14 Jan 2015 14:19:54 +0100 Subject: next part of abi.js docs --- lib/abi.js | 63 +++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 34 insertions(+), 29 deletions(-) (limited to 'lib') 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); -- cgit