You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
10 years ago
|
|
||
|
/**
|
||
|
* This plugin should be reloaded each time we want to evaluate set of expressions
|
||
|
* Just because of security reasons
|
||
|
*/
|
||
|
|
||
|
/// helper variable used by 'copyToGlobalContext' function to copy everything to global context
|
||
|
var _eth_global = this;
|
||
|
|
||
|
/// Should be called to copy values from object to global context
|
||
|
var copyToGlobalContext = function (obj) {
|
||
|
var keys = Object.keys(obj);
|
||
|
keys.forEach(function (key) {
|
||
|
_eth_global[key] = obj[key];
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/// Function called to get all contract's storage values
|
||
|
/// In future can be improved be getting storage values on demand
|
||
|
/// @returns hashmap with contract storage
|
||
|
var getContractStorage = function () {
|
||
|
return {};
|
||
|
};
|
||
|
|
||
|
|
||
|
/// Should be called to evaluate single expression
|
||
|
/// Is internally using javascript's 'eval' method
|
||
|
/// Should be checked if it is safe
|
||
|
var evaluateExpression = function (expression) {
|
||
|
|
||
|
// in future may be replaced with getting storage values based on expression
|
||
|
var storage = getContractStorage();
|
||
|
|
||
|
copyToGlobalContext(storage);
|
||
|
|
||
|
// TODO: check if it is safe
|
||
|
return eval(expression).toString();
|
||
|
};
|
||
|
|