From 6882a04fb36642862b11efe514251d32070c3d65 Mon Sep 17 00:00:00 2001 From: Konstantin Tokarev Date: Thu, 25 Aug 2016 19:20:41 +0300 Subject: Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443) Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f Reviewed-by: Konstantin Tokarev --- .../inline-and-minify-stylesheets-and-scripts.py | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100755 Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py (limited to 'Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py') diff --git a/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py b/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py new file mode 100755 index 000000000..89200c84e --- /dev/null +++ b/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py @@ -0,0 +1,81 @@ +#!/usr/bin/env 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. + +# This script inlines and minifies external stylesheets and scripts. +# - => +# - + +import cssmin +import jsmin +import os.path +import re +import sys + + +def main(argv): + + if len(argv) < 2: + print('usage: %s inputFile outputFile' % argv[0]) + return 1 + + inputFileName = argv[1] + outputFileName = argv[2] + importsDir = os.path.dirname(inputFileName) + + inputFile = open(inputFileName, 'r') + inputContent = inputFile.read() + inputFile.close() + + def inline(match, minifier, prefix, postfix): + importFileName = match.group(1) + fullPath = os.path.join(importsDir, importFileName) + if not os.access(fullPath, os.F_OK): + raise Exception('File %s referenced in %s not found' % (importFileName, inputFileName)) + importFile = open(fullPath, 'r') + importContent = minifier(importFile.read()) + importFile.close() + return '%s%s%s' % (prefix, importContent, postfix) + + def inlineStylesheet(match): + return inline(match, cssmin.cssminify, "") + + def inlineScript(match): + return inline(match, jsmin.jsmin, "") + + outputContent = re.sub(r'', inlineStylesheet, inputContent) + outputContent = re.sub(r'', inlineScript, outputContent) + + outputFile = open(outputFileName, 'w') + outputFile.write(outputContent) + outputFile.close() + + # Touch output file directory to make sure that Xcode will copy + # modified resource files. + if sys.platform == 'darwin': + outputDirName = os.path.dirname(outputFileName) + os.utime(outputDirName, None) + +if __name__ == '__main__': + sys.exit(main(sys.argv)) -- cgit v1.2.1