diff options
Diffstat (limited to 'webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/stringoptimizer.py')
-rwxr-xr-x | webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/stringoptimizer.py | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/stringoptimizer.py b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/stringoptimizer.py deleted file mode 100755 index 3796192c29..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/stringoptimizer.py +++ /dev/null @@ -1,198 +0,0 @@ -#!/usr/bin/env python -################################################################################ -# -# qooxdoo - the new era of web development -# -# http://qooxdoo.org -# -# Copyright: -# 2006-2007 1&1 Internet AG, Germany, http://www.1and1.org -# -# License: -# LGPL: http://www.gnu.org/licenses/lgpl.html -# EPL: http://www.eclipse.org/org/documents/epl-v10.php -# See the LICENSE file in the project's top-level directory for details. -# -# Authors: -# * Sebastian Werner (wpbasti) -# * Fabian Jakobs (fjakobs) -# -################################################################################ - -import tree - - -def search(node, verbose=False): - return search_loop(node, {}, verbose) - - -def search_loop(node, stringMap={}, verbose=False): - if node.type == "constant" and node.get("constantType") == "string": - - if verbose: - pvalue = node.get("value") - if isinstance(pvalue, unicode): - pvalue = pvalue.encode("utf-8") - print " - Found: %s" % pvalue - - if node.get("detail") == "singlequotes": - quote = "'" - elif node.get("detail") == "doublequotes": - quote = '"' - - value = "%s%s%s" % (quote, node.get("value"), quote) - - if value in stringMap: - stringMap[value] += 1 - else: - stringMap[value] = 1 - - if check(node, verbose): - for child in node.children: - search_loop(child, stringMap, verbose) - - return stringMap - - - -def check(node, verbose=False): - # Needs children - if not node.hasChildren(): - return False - - # Try to find all output statements - if node.type == "call": - cu = node - nx = cu.getChild("operand", False) - - if nx != None: - cu = nx - - all = cu.getAllChildrenOfType("identifier") - - for ch in all: - if ch.get("name", False) in [ "Error", "debug", "info", "warning", "error", "alert" ]: - if verbose: - print " - Ignore output statement at line: %s" % ch.get("line") - return False - - # Try to find all constant assignments (ns.UPPER = string) - elif node.type == "assignment": - left = node.getChild("left", False) - if left != None: - var = left.getChild("variable", False) - - if var != None: - last = var.getLastChild() - - if last.type == "identifier" and last.get("name").isupper(): - if verbose: - print " - Ignore constant assignment at line: %s" % last.get("line") - return False - - # Try to find all constant assignments from Maps ({ UPPER : string }) - elif node.type == "keyvalue": - if node.get("key").isupper(): - if verbose: - print " - Ignore constant key value at line: %s" % node.get("line") - return False - - return True - - - -def sort(stringMap): - stringList = [] - - for value in stringMap: - stringList.append({ "value" : value, "number" : stringMap[value] }) - - stringList.sort(lambda x, y: y["number"]-x["number"]) - - return stringList - - - - -def replace(node, stringList, var="$", verbose=False): - if node.type == "constant" and node.get("constantType") == "string": - if node.get("detail") == "singlequotes": - quote = "'" - elif node.get("detail") == "doublequotes": - quote = '"' - - oldvalue = "%s%s%s" % (quote, node.get("value"), quote) - - pos = 0 - for item in stringList: - if item["value"] == oldvalue: - newvalue = "%s[%s]" % (var, pos) - - if verbose: - poldvalue = oldvalue - if isinstance(poldvalue, unicode): - poldvalue = poldvalue.encode("utf-8") - print " - Replace: %s => %s" % (poldvalue, newvalue) - - line = node.get("line") - - - # GENERATE IDENTIFIER - - newidentifier = tree.Node("identifier") - newidentifier.set("line", line) - - childidentifier = tree.Node("identifier") - childidentifier.set("line", line) - childidentifier.set("name", var) - - newidentifier.addChild(childidentifier) - - - - # GENERATE KEY - - newkey = tree.Node("key") - newkey.set("line", line) - - newconstant = tree.Node("constant") - newconstant.set("line", line) - newconstant.set("constantType", "number") - newconstant.set("value", "%s" % pos) - - newkey.addChild(newconstant) - - - - # COMBINE CHILDREN - - newnode = tree.Node("accessor") - newnode.set("line", line) - newnode.set("optimized", True) - newnode.set("original", oldvalue) - newnode.addChild(newidentifier) - newnode.addChild(newkey) - - - # REPLACE NODE - - node.parent.replaceChild(node, newnode) - break - - pos += 1 - - if check(node, verbose): - for child in node.children: - replace(child, stringList, var, verbose) - - - -def replacement(stringList, var="$"): - repl = "%s=[" % var - - for item in stringList: - repl += "%s," % (item["value"]) - - repl = repl[:-1] + "];" - - return repl |