diff options
Diffstat (limited to 'trunk')
-rwxr-xr-x | trunk/infrastructure/ace/bin/jsmin.py | 218 | ||||
-rw-r--r-- | trunk/infrastructure/framework-src/modules/jsmin.js | 318 |
2 files changed, 0 insertions, 536 deletions
diff --git a/trunk/infrastructure/ace/bin/jsmin.py b/trunk/infrastructure/ace/bin/jsmin.py deleted file mode 100755 index a1b81f9..0000000 --- a/trunk/infrastructure/ace/bin/jsmin.py +++ /dev/null @@ -1,218 +0,0 @@ -#!/usr/bin/python - -# This code is original from jsmin by Douglas Crockford, it was translated to -# Python by Baruch Even. The original code had the following copyright and -# license. -# -# /* jsmin.c -# 2007-05-22 -# -# Copyright (c) 2002 Douglas Crockford (www.crockford.com) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy of -# this software and associated documentation files (the "Software"), to deal in -# the Software without restriction, including without limitation the rights to -# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -# of the Software, and to permit persons to whom the Software is furnished to do -# so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# The Software shall be used for Good, not Evil. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# */ - -from StringIO import StringIO - -def jsmin(js): - ins = StringIO(js) - outs = StringIO() - JavascriptMinify().minify(ins, outs) - str = outs.getvalue() - if len(str) > 0 and str[0] == '\n': - str = str[1:] - return str - -def isAlphanum(c): - """return true if the character is a letter, digit, underscore, - dollar sign, or non-ASCII character. - """ - return ((c >= 'a' and c <= 'z') or (c >= '0' and c <= '9') or - (c >= 'A' and c <= 'Z') or c == '_' or c == '$' or c == '\\' or (c is not None and ord(c) > 126)); - -class UnterminatedComment(Exception): - pass - -class UnterminatedStringLiteral(Exception): - pass - -class UnterminatedRegularExpression(Exception): - pass - -class JavascriptMinify(object): - - def _outA(self): - self.outstream.write(self.theA) - def _outB(self): - self.outstream.write(self.theB) - - def _get(self): - """return the next character from stdin. Watch out for lookahead. If - the character is a control character, translate it to a space or - linefeed. - """ - c = self.theLookahead - self.theLookahead = None - if c == None: - c = self.instream.read(1) - if c >= ' ' or c == '\n': - return c - if c == '': # EOF - return '\000' - if c == '\r': - return '\n' - return ' ' - - def _peek(self): - self.theLookahead = self._get() - return self.theLookahead - - def _next(self): - """get the next character, excluding comments. peek() is used to see - if a '/' is followed by a '/' or '*'. - """ - c = self._get() - if c == '/': - p = self._peek() - if p == '/': - c = self._get() - while c > '\n': - c = self._get() - return c - if p == '*': - c = self._get() - while 1: - c = self._get() - if c == '*': - if self._peek() == '/': - self._get() - return ' ' - if c == '\000': - raise UnterminatedComment() - - return c - - def _action(self, action): - """do something! What you do is determined by the argument: - 1 Output A. Copy B to A. Get the next B. - 2 Copy B to A. Get the next B. (Delete A). - 3 Get the next B. (Delete B). - action treats a string as a single character. Wow! - action recognizes a regular expression if it is preceded by ( or , or =. - """ - if action <= 1: - self._outA() - - if action <= 2: - self.theA = self.theB - if self.theA == "'" or self.theA == '"': - while 1: - self._outA() - self.theA = self._get() - if self.theA == self.theB: - break - if self.theA <= '\n': - raise UnterminatedStringLiteral() - if self.theA == '\\': - self._outA() - self.theA = self._get() - - - if action <= 3: - self.theB = self._next() - if self.theB == '/' and (self.theA == '(' or self.theA == ',' or - self.theA == '=' or self.theA == ':' or - self.theA == '[' or self.theA == '?' or - self.theA == '!' or self.theA == '&' or - self.theA == '|' or self.theA == ';' or - self.theA == '{' or self.theA == '}' or - self.theA == '\n'): - self._outA() - self._outB() - while 1: - self.theA = self._get() - if self.theA == '/': - break - elif self.theA == '\\': - self._outA() - self.theA = self._get() - elif self.theA <= '\n': - raise UnterminatedRegularExpression() - self._outA() - self.theB = self._next() - - - def _jsmin(self): - """Copy the input to the output, deleting the characters which are - insignificant to JavaScript. Comments will be removed. Tabs will be - replaced with spaces. Carriage returns will be replaced with linefeeds. - Most spaces and linefeeds will be removed. - """ - self.theA = '\n' - self._action(3) - - while self.theA != '\000': - if self.theA == ' ': - if isAlphanum(self.theB): - self._action(1) - else: - self._action(2) - elif self.theA == '\n': - if self.theB in ['{', '[', '(', '+', '-']: - self._action(1) - elif self.theB == ' ': - self._action(3) - else: - if isAlphanum(self.theB): - self._action(1) - else: - self._action(2) - else: - if self.theB == ' ': - if isAlphanum(self.theA): - self._action(1) - else: - self._action(3) - elif self.theB == '\n': - if self.theA in ['}', ']', ')', '+', '-', '"', '\'']: - self._action(1) - else: - if isAlphanum(self.theA): - self._action(1) - else: - self._action(3) - else: - self._action(1) - - def minify(self, instream, outstream): - self.instream = instream - self.outstream = outstream - self.theA = '\n' - self.theB = None - self.theLookahead = None - - self._jsmin() - self.instream.close() - -if __name__ == '__main__': - import sys - jsm = JavascriptMinify() - jsm.minify(sys.stdin, sys.stdout) diff --git a/trunk/infrastructure/framework-src/modules/jsmin.js b/trunk/infrastructure/framework-src/modules/jsmin.js deleted file mode 100644 index 156a331..0000000 --- a/trunk/infrastructure/framework-src/modules/jsmin.js +++ /dev/null @@ -1,318 +0,0 @@ -/* From http://fmarcia.info/jsmin/fulljsmin.js */ - -/* jsmin.js - 2006-08-31 -Author: Franck Marcia -This work is an adaptation of jsminc.c published by Douglas Crockford. -Permission is hereby granted to use the Javascript version under the same -conditions as the jsmin.c on which it is based. - -jsmin.c -2006-05-04 - -Copyright (c) 2002 Douglas Crockford (www.crockford.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -The Software shall be used for Good, not Evil. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Update: - add level: - 1: minimal, keep linefeeds if single - 2: normal, the standard algorithm - 3: agressive, remove any linefeed and doesn't take care of potential - missing semicolons (can be regressive) - store stats - jsmin.oldSize - jsmin.newSize -*/ - -String.prototype.has = function(c) { - return this.indexOf(c) > -1; -}; - -function jsmin(comment, input, level) { - - if (input === undefined) { - input = comment; - comment = ''; - level = 2; - } else if (level === undefined || level < 1 || level > 3) { - level = 2; - } - - if (comment.length > 0) { - comment += '\n'; - } - - var a = '', - b = '', - EOF = -1, - LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', - DIGITS = '0123456789', - ALNUM = LETTERS + DIGITS + '_$\\', - theLookahead = EOF; - - - /* isAlphanum -- return true if the character is a letter, digit, underscore, - dollar sign, or non-ASCII character. - */ - - function isAlphanum(c) { - return c != EOF && (ALNUM.has(c) || c.charCodeAt(0) > 126); - } - - - /* get -- return the next character. Watch out for lookahead. If the - character is a control character, translate it to a space or - linefeed. - */ - - function get() { - - var c = theLookahead; - if (get.i == get.l) { - return EOF; - } - theLookahead = EOF; - if (c == EOF) { - c = input.charAt(get.i); - ++get.i; - } - if (c >= ' ' || c == '\n') { - return c; - } - if (c == '\r') { - return '\n'; - } - return ' '; - } - - get.i = 0; - get.l = input.length; - - - /* peek -- get the next character without getting it. - */ - - function peek() { - theLookahead = get(); - return theLookahead; - } - - - /* next -- get the next character, excluding comments. peek() is used to see - if a '/' is followed by a '/' or '*'. - */ - - function next() { - - var c = get(); - if (c == '/') { - switch (peek()) { - case '/': - for (;;) { - c = get(); - if (c <= '\n') { - return c; - } - } - break; - case '*': - get(); - for (;;) { - switch (get()) { - case '*': - if (peek() == '/') { - get(); - return ' '; - } - break; - case EOF: - throw 'Error: Unterminated comment.'; - } - } - break; - default: - return c; - } - } - return c; - } - - - /* action -- do something! What you do is determined by the argument: - 1 Output A. Copy B to A. Get the next B. - 2 Copy B to A. Get the next B. (Delete A). - 3 Get the next B. (Delete B). - action treats a string as a single character. Wow! - action recognizes a regular expression if it is preceded by ( or , or =. - */ - - function action(d) { - - var r = []; - - if (d == 1) { - r.push(a); - } - - if (d < 3) { - a = b; - if (a == '\'' || a == '"') { - for (;;) { - r.push(a); - a = get(); - if (a == b) { - break; - } - if (a <= '\n') { - throw 'Error: unterminated string literal: ' + a; - } - if (a == '\\') { - r.push(a); - a = get(); - } - } - } - } - - b = next(); - - if (b == '/' && '(,=:[!&|'.has(a)) { - r.push(a); - r.push(b); - for (;;) { - a = get(); - if (a == '/') { - break; - } else if (a =='\\') { - r.push(a); - a = get(); - } else if (a <= '\n') { - throw 'Error: unterminated Regular Expression literal'; - } - r.push(a); - } - b = next(); - } - - return r.join(''); - } - - - /* m -- Copy the input to the output, deleting the characters which are - insignificant to JavaScript. Comments will be removed. Tabs will be - replaced with spaces. Carriage returns will be replaced with - linefeeds. - Most spaces and linefeeds will be removed. - */ - - function m() { - - var r = []; - a = '\n'; - - r.push(action(3)); - - while (a != EOF) { - switch (a) { - case ' ': - if (isAlphanum(b)) { - r.push(action(1)); - } else { - r.push(action(2)); - } - break; - case '\n': - switch (b) { - case '{': - case '[': - case '(': - case '+': - case '-': - r.push(action(1)); - break; - case ' ': - r.push(action(3)); - break; - default: - if (isAlphanum(b)) { - r.push(action(1)); - } else { - if (level == 1 && b != '\n') { - r.push(action(1)); - } else { - r.push(action(2)); - } - } - } - break; - default: - switch (b) { - case ' ': - if (isAlphanum(a)) { - r.push(action(1)); - break; - } - r.push(action(3)); - break; - case '\n': - if (level == 1 && a != '\n') { - r.push(action(1)); - } else { - switch (a) { - case '}': - case ']': - case ')': - case '+': - case '-': - case '"': - case '\'': - if (level == 3) { - r.push(action(3)); - } else { - r.push(action(1)); - } - break; - default: - if (isAlphanum(a)) { - r.push(action(1)); - } else { - r.push(action(3)); - } - } - } - break; - default: - r.push(action(1)); - break; - } - } - } - - return r.join(''); - } - - jsmin.oldSize = input.length; - var ret = m(input); - jsmin.newSize = ret.length; - - return comment + ret; - -} |