pack.js
[gnome.introspection-doc-generator] / pack.js
diff --git a/pack.js b/pack.js
old mode 100644 (file)
new mode 100755 (executable)
index e69de29..8f1636d
--- a/pack.js
+++ b/pack.js
@@ -0,0 +1,59 @@
+#!/usr/bin/seed
+//<script type="text/javascript">
+/**
+ * Simple packer example
+ *
+ * compresses files listed as arguments and outputs result
+ */
+
+TokenReader     = imports['JSDOC/TokenReader.js'].TokenReader;
+ScopeParser     = imports['JSDOC/ScopeParser.js'].ScopeParser;
+TokenStream     = imports['JSDOC/TokenStream.js'].TokenStream;
+CompressWhite   = imports['JSDOC/CompressWhite.js'].CompressWhite;
+File = imports.File.File;
+function pack(str)
+{
+    
+    var tr = new  TokenReader();
+    var toks = tr.tokenize(str,false); // dont merge xxx + . + yyyy etc.
+    var sp = new  ScopeParser(new   TokenStream(toks));
+    sp.buildSymbolTree();
+    sp.mungeSymboltree();
+    print(sp.warnings.join("\n"));
+    var out =  CompressWhite(sp.ts);
+    return out;
+    
+}
+
+
+var args = Array.prototype.slice.call(Seed.argv);
+args.shift(); //seed
+args.shift(); // pack.js
+var files = [];
+var outfn = '';
+for(var i =0; i < args.length;i++) {
+    if (args[i] == '-o') {
+        outfn = args[i+1];
+        i++;
+        continue;
+    }
+    files.push(args[i]);
+}
+print(files.join(', '));
+if (!files.length) {
+    throw "no files selected";
+}
+var out = '';
+files.forEach(function(f) {
+    out = pack(File.read(f)) + "\n";
+});
+if (outfn) {
+    File.write(outfn, out);
+    Seed.quit();
+}
+print(out);
+
+
+