else if (url.startsWith("https://")) return new Stream.HTTP(url);
else if (url.startsWith("data:")) return new Stream.ByteArray(Base64.decode(url.substring(5)), null);
else if (url.startsWith("utf8:")) return new Stream.ByteArray(url.substring(5).getBytes(), null);
+ else if (url.startsWith("file:")) {
+ // FIXME
+ Platform.fileDialog(url.substring(5), false);
+ }
throw new JSExn("invalid resource specifier " + url);
}
case "thread.sleep": sleep(JS.toInt(a)); return null;
public JSScope getStatic() {
try {
// FIXME background?
- if (t == null) t = Template.buildTemplate(Stream.getInputStream(parent.get(parentkey + ".ixt")), ibex);
+ if (t == null)
+ t = Template.buildTemplate(parentkey + ".t", Stream.getInputStream(parent.get(parentkey + ".t")), ibex);
return t.staticScope;
} catch (Exception e) {
Log.error(this, e);
}
public Object call(Object a, Object b, Object c, Object[] rest, int nargs) throws JSExn {
// GROSS hack
- if (nargs == 9999) return t;
- if (nargs != 1) throw new JSExn("FIXME can only call with one arg");
+ if (nargs != 1 && nargs != 9999) throw new JSExn("FIXME can only call with one arg");
getStatic();
+ if (t == null) throw new JSExn("No such template " + parentkey);
+ if (nargs == 9999) return t;
t.apply((Box)a);
return a;
}