X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Fjs%2FDirectory.java;h=98469d5a760ab470f74f1eb42535e687a3c83f0f;hb=85c8f402be33df8440511492fb597fba9c2eb45f;hp=1728e5b06acde946ade7a5c9978d1e0e7d5a1b87;hpb=ce791e4058158295bce9cf7b6698c2b565d571d7;p=org.ibex.core.git diff --git a/src/org/ibex/js/Directory.java b/src/org/ibex/js/Directory.java index 1728e5b..98469d5 100644 --- a/src/org/ibex/js/Directory.java +++ b/src/org/ibex/js/Directory.java @@ -43,8 +43,8 @@ public class Directory extends JS { * Create the directory object. Existing directories will be * preserved; if a file is present it will be obliterated. */ - // FIXME: Update this for new API - /*public Directory(File f) throws IOException { + + public Directory(File f) throws IOException { this.f = f; if (!f.exists()) new Directory(new File(f.getParent())); if (!f.isDirectory()) destroy(f); @@ -60,34 +60,34 @@ public class Directory extends JS { f.delete(); } - public void put(Object key0, Object val) throws JSExn { + public void put(JS key0, JS val) throws JSExn { try { if (key0 == null) return; String key = toString(key0); File f2 = new File(f.getAbsolutePath() + File.separatorChar + FileNameEncoder.encode(key)); destroy(f2); if (val == null) return; - if (val instanceof JS) { - Directory d2 = new Directory(f2); - Enumeration e = ((JS)val).keys(); - while(e.hasMoreElements()) { - String k = (String)e.nextElement(); - Object v = ((JS)val).get(k); - d2.put(k, v); - } - } else { + if (val instanceof JSPrimitive) { OutputStream out = new FileOutputStream(f2); Writer w = new OutputStreamWriter(out); w.write(toString(val)); w.flush(); out.close(); + } else { + Directory d2 = new Directory(f2); + JS.Enumeration e = val.keys(); + while(e.hasMoreElements()) { + JS k = e.nextElement(); + JS v = val.get(k); + d2.put(k, v); + } } } catch (IOException ioe) { throw new JSExn.IO(ioe); } } - public Object get(Object key0) throws JSExn { + public JS get(JS key0) throws JSExn { try { if (key0 == null) return null; String key = toString(key0); @@ -99,7 +99,7 @@ public class Directory extends JS { Reader r = new InputStreamReader(new FileInputStream(f2)); while(true) { int numread = r.read(chars, numchars, chars.length - numchars); - if (numread == -1) return new String(chars, 0, numchars); + if (numread == -1) return JS.S(new String(chars, 0, numchars)); numchars += numread; } } catch (IOException ioe) { @@ -109,10 +109,10 @@ public class Directory extends JS { public Enumeration keys() { final String[] elements = f.list(); - return new Enumeration() { + return new Enumeration(null) { int i = 0; - public boolean hasMoreElements() { return i < elements.length; } - public Object nextElement() { return FileNameEncoder.decode(elements[i++]); } + public boolean _hasMoreElements() { return i < elements.length; } + public JS _nextElement() { return JS.S(FileNameEncoder.decode(elements[i++])); } }; - }*/ + } }