-
Notifications
You must be signed in to change notification settings - Fork 27
Open
Labels
bugSomething isn't workingSomething isn't working
Description
| Name | Value |
|---|---|
| Dart version | Dart SDK version: 2.16.1 (stable) (Tue Feb 8 12:02:33 2022 +0100) on "windows_x64" |
| hetu_script version | 0.3.12 |
| Command | hetu format |
Code before formatting:
namespace $Eval {
var cache = Map();
var evalResult;
}
fun evalInContext(code: str, context: Map) -> any {
var str = "$Eval.evalResult = (context) {\n";
for(var k in context.keys){
str += "\tvar ${k} = context['${k}'];\n";
}
str += "\treturn (${code});\n";
str += "}";
var func = $Eval.cache[str];
if(func == null){
print(str);
eval(str);
func = $Eval.evalResult;
$Eval.cache[str] = func;
$Eval.evalResult = null;
}
return func(context);
}
print(evalInContext("a + b", {a:1,b:2}));
print(evalInContext("a + b", {a:2,b:3}));
print(evalInContext("a + b", {a:3,b:4}));
print(evalInContext("a + b + c", {a:3,b:4, c:6}));
print(evalInContext("a + b + c", {a:3,b:4}));Code after formatting:
namespace $Eval {
var cache = Map();
var evalResult;
}
fun evalInContext(code: Instance of 'IdentifierExpr', context: Instance of 'IdentifierExpr') -> Instance of 'IdentifierExpr' {
var str = $Eval.evalResult = (context) {\n;
for (var k in context.keys) {
str = str + '\tvar ${k} = context['${k}'];\n'
}
str = str + '\treturn (${code});\n'
str = str + }
var func = $Eval.cache[str];
if (func == null) {
print(str)
eval(str)
func = $Eval.evalResult
$Eval.cache[str] = func
$Eval.evalResult = null
}
return func(context);
}
print(evalInContext(a + b, {
a: 1,
b: 2
}))
print(evalInContext(a + b, {
a: 2,
b: 3
}))
print(evalInContext(a + b, {
a: 3,
b: 4
}))
print(evalInContext(a + b + c, {
a: 3,
b: 4,
c: 6
}))
print(evalInContext(a + b + c, {
a: 3,
b: 4
}))Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working