From 93a7f344554d3f225310d46f330f40893d48eb30 Mon Sep 17 00:00:00 2001 From: alan Date: Wed, 21 Apr 2010 13:31:15 +0800 Subject: [PATCH] JSDOC/Packer.js --- JSDOC/Packer.js | 94 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 63 insertions(+), 31 deletions(-) diff --git a/JSDOC/Packer.js b/JSDOC/Packer.js index 241c2dd..adf173b 100644 --- a/JSDOC/Packer.js +++ b/JSDOC/Packer.js @@ -13,13 +13,21 @@ GLib = imports.gi.GLib; * @class Packer * Create a new packer * + * Use with pack.js + * + * * Usage: * * Packer = imports['JSDOC/Packer.js'].Packer; -var x = new Packer( - [ "/location/of/file1.js", "/location/of/file2.js", ... ], - "/location/of" +var x = new Packer({ + + files : [ "/location/of/file1.js", "/location/of/file2.js", ... ], + target : "/tmp/output.js", + debugTarget : "/tmp/output.debug.js", // merged file without compression. + translateJson : "/tmp/translate.json", + + ); x.packFiles( "/location/of/temp_batch_dir", @@ -40,26 +48,55 @@ x.packFiles( * directly before an eval statement, it will compress all the code around the eval, * and not rename the variables 'avarname' * - * Dont try running this on a merged uncompressed large file - it's horrifically slow. + * Dont try running this on a merged uncompressed large file - it's used to be horrifically slow. not sure about now.. * Best to use lot's of small classes, and use it to merge, as it will cache the compaction * * * - * @param {Array} files List of Files - MUST BE WITH ABSOLUTE PATH eg. [ '/usr/src/xyz/abc.js', .... ] - * @param {String} source_path top level directory of source (used to work out the relative names for the minimized temp files) + * Notes for translation + * - translation relies on you using double quotes for strings if they need translating + * - single quoted strings are ignored. + * + * Generation of indexFiles + * - translateIndex = the indexfile + * + * + * + * + */ -Packer = function(files, spath) +Packer = function(cfg) { - this.files = files; - this.spath = spath; // source path - this.aliasList = { }; // list of maps Roo.asdfasdfasf => Roo.A1 + + XObject.extend(this, cfg); + if (!this.files) { + throw "No Files"; + } + if (!this.target) { + throw "No Target"; + } + this.timer = new Date() * 1; - this.translate = true; + } Packer.prototype = { + /** + * @prop files {Array} list of files to compress (must be full path) + */ + files : false, + /** + * @prop target {String} target to write files to - must be full path. + */ + target : '', + /** + * @prop debugTarget {String} target to write files debug version to (uncompacted)- must be full path. + */ + debugTarget : '', // merged file without compression. - bpath : '', + workingDir : '/tmp', + translateJson : '', // json based list of strings in all files. + // set to false to stop translation happening.. /** @@ -71,32 +108,27 @@ Packer.prototype = { * */ - packFiles : function(bpath, allfile, debugfile) { - var str; - var spath = this.spath; - var files = this.files; - this.bpath = bpath; - // old var names - fixme.. - var dout = debugfile; - //File.write(dout, ""); + packFiles : function() { - var outpath = allfile; - - var transfile = bpath + '/_translation_.js'; //this.transOrigFile= bpath + '/../lang.en.js'; // needs better naming... //File.write(this.transfile, ""); - File.write(dout, ""); - File.write(allfile, ""); - for(var i=0; i < files.length; i++) { + File.write(this.target, ""); + if (this.debugTarget) { + File.write(this.debugTarget, ""); + } + + for(var i=0; i < this.files.length; i++) { + var file = this.files[i]; - print("reading " +files[i] ); - if (!File.exists(files[i])) { - print("SKIP (does not exist) " + files[i]); + print("reading " +file ); + if (!File.exists(file)) { + print("SKIP (does not exist) " + file); continue; } - - File.append(dout, File.read(files[i])); + if (this.debugTarget) { + File.append(this.debugTarget, File.read(files[i])); + } // it's a good idea to check with 0 compression to see if the code can parse!! // debug file.. -- 2.39.2