get grammarfiles from classloader resources rather than files
[wix.git] / src / HaskellHelper.java
index 3ca1cae..daa4fe6 100644 (file)
@@ -16,11 +16,13 @@ public class HaskellHelper {
             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) {