-// Copyright 2006 all rights reserved; see LICENSE file for BSD-style license
+// Copyright 2008 the Contributors, as shown in the revision logs.
+// Licensed under the Apache Public Source License 2.0 ("the License").
+// You may not use this file except in compliance with the License.
import edu.berkeley.sbp.*;
import edu.berkeley.sbp.misc.*;
if (parser == null) {
try {
// FIXME: bundle this into the jarfile
- File grammarFile = new File("src/wix.g");
- Tree<String> res = new CharParser(MetaGrammar.newInstance())
- .parse(new FileInputStream(grammarFile)).expand1();
- Union grammar = GrammarAST.buildFromAST(res, "s", new File[] {
- new File(grammarFile.getParent())
+ InputStream grammarFile = HaskellHelper.class.getClassLoader().getResourceAsStream("wix.g");
+ Tree<String> res = new CharParser(GrammarAST.getMetaGrammar())
+ .parse(grammarFile).expand1();
+ Union grammar = GrammarAST.buildFromAST(res, "s", new GrammarAST.ImportResolver() {
+ public InputStream getImportStream(String filename) {
+ return this.getClass().getClassLoader().getResourceAsStream(filename);
+ }
});
parser = new CharParser(grammar);
} catch (Exception e) {
}
File indir = new File(argv[0]);
File outdir = new File(argv[1]);
- process(indir, "", outdir);
+ if (!indir.isDirectory()) {
+ process(new File(indir.getParent()), indir.getName(), outdir);
+ } else {
+ process(indir, "", outdir);
+ }
}
private static void process(File indir, String suffix, File outdir) throws Throwable {
- File f = new File(indir.getAbsolutePath()+suffix);
+ File f = new File(indir.getAbsolutePath()+File.separatorChar+suffix);
+ //System.out.println(f+" "+indir + " " + suffix + " " + outdir);
if (!f.exists()) return;
if (f.isDirectory()) {
for (String s : f.list())
return;
}
if (f.getPath().endsWith(".wix")) {
- System.out.println();
String out = "== " + suffix + " ";
while(out.length() < 75) out+="=";
System.out.println(ANSI.yellow(out));
+ //System.out.println();
+ String outPath = outdir.getAbsolutePath()+File.separatorChar+suffix;
+ outPath = outPath.substring(0, outPath.length()-".wix".length())+".html";
+ if (new File(outPath).exists() && new File(outPath).lastModified() > f.lastModified()) return;
Class.forName("Main").
getMethod("main", new Class[] { String[].class }).
invoke(null, new Object[] { new String[] { f.getAbsolutePath() } });
- String outPath = outdir.getAbsolutePath()+suffix;
- outPath = outPath.substring(0, outPath.length()-".wix".length())+".html";
new File(new File(outPath).getParent()).mkdirs();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outPath+"+")));
pw.println(ret);
}
}
new File(outPath+"+").renameTo(dest);
+ if (dest.lastModified() <= f.lastModified())
+ dest.setLastModified(f.lastModified()+1);
}
}