]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - inspector/scripts/cssmin.py
JavaScriptCore-7600.1.4.9.tar.gz
[apple/javascriptcore.git] / inspector / scripts / cssmin.py
diff --git a/inspector/scripts/cssmin.py b/inspector/scripts/cssmin.py
new file mode 100644 (file)
index 0000000..a0640eb
--- /dev/null
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+
+# Copyright (C) 2013 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+import re
+
+def cssminify(css):
+    rules = (
+        (r"\/\*.*?\*\/", ""),          # delete comments
+        (r"\n", ""),                   # delete new lines
+        (r"\s+", " "),                 # change multiple spaces to one space
+        (r"\s?([;:{},+>])\s?", r"\1"), # delete space where it is not needed
+        (r";}", "}")                   # change ';}' to '}' because the semicolon is not needed
+    )
+
+    css = css.replace("\r\n", "\n")
+    for rule in rules:
+        css = re.compile(rule[0], re.MULTILINE | re.UNICODE | re.DOTALL).sub(rule[1], css)
+    return css
+
+if __name__ == "__main__":
+    import sys
+    sys.stdout.write(cssminify(sys.stdin.read()))