Skip to content

Commit

Permalink
implementing naïve eval();
Browse files Browse the repository at this point in the history
  • Loading branch information
qmx committed May 3, 2012
1 parent f0e6de9 commit 09dd416
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/main/java/org/dynjs/runtime/DynThreadContext.java
Expand Up @@ -18,6 +18,7 @@
import me.qmx.jitescript.CodeBlock;
import org.dynjs.api.Function;
import org.dynjs.api.Scope;
import org.dynjs.runtime.builtins.Eval;

import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
Expand All @@ -34,6 +35,7 @@ public String toString() {
public static final Object NULL = new Object();

private static final Map<String, Object> BUILTINS = new LinkedHashMap<String, Object>() {{
put("eval", new Eval());
}};

private ThreadLocal<DynJS> runtime = new ThreadLocal<>();
Expand Down
37 changes: 37 additions & 0 deletions src/main/java/org/dynjs/runtime/builtins/Eval.java
@@ -0,0 +1,37 @@
package org.dynjs.runtime.builtins;

import org.dynjs.api.Function;
import org.dynjs.api.Scope;
import org.dynjs.runtime.DynJS;
import org.dynjs.runtime.DynThreadContext;

public class Eval implements Function {
@Override
public void setContext(DynThreadContext context) {

}

@Override
public Object call(DynThreadContext context, Object[] arguments) {
if (arguments.length == 1 && arguments[0] instanceof String) {
DynJS runtime = context.getRuntime();
runtime.eval(context, (String) arguments[0]);
}
return DynThreadContext.UNDEFINED;
}

@Override
public Scope getEnclosingScope() {
return null; //To change body of implemented methods use File | Settings | File Templates.
}

@Override
public Object resolve(String name) {
return null; //To change body of implemented methods use File | Settings | File Templates.
}

@Override
public void define(String property, Object value) {
//To change body of implemented methods use File | Settings | File Templates.
}
}
5 changes: 5 additions & 0 deletions src/test/java/org/dynjs/runtime/DynJSTest.java
Expand Up @@ -248,6 +248,11 @@ public void testBuiltinLoading() {
check("var result = sample(true);");
}

@Test
public void testEval(){
check("eval('var result = true');");
}

private void check(String scriptlet) {
check(scriptlet, true);
}
Expand Down

0 comments on commit 09dd416

Please sign in to comment.