diff -r 88988edb2e93 -r 4a9b0df0602a svghmi/svghmi.js --- a/svghmi/svghmi.js Thu May 14 17:49:20 2020 +0200 +++ b/svghmi/svghmi.js Thu May 21 11:29:45 2020 +0200 @@ -247,25 +247,44 @@ return new_val; } +quotes = {"'":null, '"':null}; + function change_hmi_value(index, opstr) { let op = opstr[0]; - let given_val = opstr.slice(1); - let old_val = cache[index] + let given_val; + if(opstr.length < 2) + return undefined; // TODO raise + if(opstr[1] in quotes){ + if(opstr.length < 3) + return undefined; // TODO raise + if(opstr[opstr.length-1] == opstr[1]){ + given_val = opstr.slice(2,opstr.length-1); + } + } else { + given_val = Number(opstr.slice(1)); + } + let old_val = cache[index]; let new_val; switch(op){ case "=": - eval("new_val"+opstr); + new_val = given_val; break; case "+": + new_val = old_val + given_val; + break; case "-": + new_val = old_val - given_val; + break; case "*": + new_val = old_val * given_val; + break; case "/": - if(old_val != undefined) - new_val = eval("old_val"+opstr); + new_val = old_val / given_val; break; } if(new_val != undefined && old_val != new_val) send_hmi_value(index, new_val); + // TODO else raise return new_val; }