diff options
Diffstat (limited to 'chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin')
56 files changed, 0 insertions, 13862 deletions
diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/LICENSE b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/LICENSE deleted file mode 100644 index 261eeb9e9f8..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/MANIFEST b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/MANIFEST deleted file mode 100644 index a0384d9c1b4..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/MANIFEST +++ /dev/null @@ -1,354 +0,0 @@ -LICENSE -MANIFEST -PKG-INFO -README.rst -_setup/__init__.py -_setup/include/cext.h -_setup/py2/__init__.py -_setup/py2/commands.py -_setup/py2/data.py -_setup/py2/dist.py -_setup/py2/ext.py -_setup/py2/setup.py -_setup/py2/shell.py -_setup/py2/term/__init__.py -_setup/py2/term/_term.py -_setup/py2/util.py -_setup/py3/__init__.py -_setup/py3/commands.py -_setup/py3/data.py -_setup/py3/dist.py -_setup/py3/ext.py -_setup/py3/setup.py -_setup/py3/shell.py -_setup/py3/term/__init__.py -_setup/py3/term/_term.py -_setup/py3/util.py -bench -bench.sh -bench/LICENSE.cssmin -bench/__init__.py -bench/cssmin.py -bench/main.py -bench/wikipedia.css -bench/wikipedia.min.css -bench/write.py -docs/BENCHMARKS -docs/CHANGES -docs/CLASSIFIERS -docs/DESCRIPTION -docs/PROVIDES -docs/SUMMARY -docs/apidoc/api-objects.txt -docs/apidoc/crarr.png -docs/apidoc/epydoc.css -docs/apidoc/epydoc.js -docs/apidoc/help.html -docs/apidoc/identifier-index.html -docs/apidoc/index.html -docs/apidoc/module-tree.html -docs/apidoc/rcssmin-module.html -docs/apidoc/rcssmin-pysrc.html -docs/apidoc/redirect.html -package.cfg -rcssmin.c -rcssmin.py -run_tests.py -setup.py -tests -tests/main/atgroup_00.css -tests/main/atgroup_01.css -tests/main/atgroup_02.css -tests/main/atgroup_03.css -tests/main/atgroup_04.css -tests/main/atgroup_05.css -tests/main/atgroup_06.css -tests/main/atgroup_07.css -tests/main/atgroup_08.css -tests/main/atgroup_09.css -tests/main/atgroup_10.css -tests/main/atgroup_11.css -tests/main/comment_00.css -tests/main/comment_01.css -tests/main/comment_02.css -tests/main/comment_03.css -tests/main/comment_04.css -tests/main/escape_00.css -tests/main/escape_01.css -tests/main/escape_02.css -tests/main/escape_03.css -tests/main/escape_04.css -tests/main/escape_05.css -tests/main/escape_06.css -tests/main/first_00.css -tests/main/first_01.css -tests/main/first_02.css -tests/main/out/atgroup_00.out -tests/main/out/atgroup_00.out.b -tests/main/out/atgroup_01.out -tests/main/out/atgroup_01.out.b -tests/main/out/atgroup_02.out -tests/main/out/atgroup_02.out.b -tests/main/out/atgroup_03.out -tests/main/out/atgroup_03.out.b -tests/main/out/atgroup_04.out -tests/main/out/atgroup_04.out.b -tests/main/out/atgroup_05.out -tests/main/out/atgroup_05.out.b -tests/main/out/atgroup_06.out -tests/main/out/atgroup_06.out.b -tests/main/out/atgroup_07.out -tests/main/out/atgroup_07.out.b -tests/main/out/atgroup_08.out -tests/main/out/atgroup_08.out.b -tests/main/out/atgroup_09.out -tests/main/out/atgroup_09.out.b -tests/main/out/atgroup_10.out -tests/main/out/atgroup_10.out.b -tests/main/out/atgroup_11.out -tests/main/out/atgroup_11.out.b -tests/main/out/comment_00.out -tests/main/out/comment_00.out.b -tests/main/out/comment_01.out -tests/main/out/comment_01.out.b -tests/main/out/comment_02.out -tests/main/out/comment_02.out.b -tests/main/out/comment_03.out -tests/main/out/comment_03.out.b -tests/main/out/comment_04.out -tests/main/out/comment_04.out.b -tests/main/out/escape_00.out -tests/main/out/escape_00.out.b -tests/main/out/escape_01.out -tests/main/out/escape_01.out.b -tests/main/out/escape_02.out -tests/main/out/escape_02.out.b -tests/main/out/escape_03.out -tests/main/out/escape_03.out.b -tests/main/out/escape_04.out -tests/main/out/escape_04.out.b -tests/main/out/escape_05.out -tests/main/out/escape_05.out.b -tests/main/out/escape_06.out -tests/main/out/escape_06.out.b -tests/main/out/first_00.out -tests/main/out/first_00.out.b -tests/main/out/first_01.out -tests/main/out/first_01.out.b -tests/main/out/first_02.out -tests/main/out/first_02.out.b -tests/main/out/url_00.out -tests/main/out/url_00.out.b -tests/main/out/url_01.out -tests/main/out/url_01.out.b -tests/main/out/url_02.out -tests/main/out/url_02.out.b -tests/main/out/url_03.out -tests/main/out/url_03.out.b -tests/main/out/url_04.out -tests/main/out/url_04.out.b -tests/main/out/url_05.out -tests/main/out/url_05.out.b -tests/main/out/url_06.out -tests/main/out/url_06.out.b -tests/main/out/url_07.out -tests/main/out/url_07.out.b -tests/main/out/url_08.out -tests/main/out/url_08.out.b -tests/main/out/url_09.out -tests/main/out/url_09.out.b -tests/main/url_00.css -tests/main/url_01.css -tests/main/url_02.css -tests/main/url_03.css -tests/main/url_04.css -tests/main/url_05.css -tests/main/url_06.css -tests/main/url_07.css -tests/main/url_08.css -tests/main/url_09.css -tests/yui/README -tests/yui/background-position.css -tests/yui/background-position.css.min -tests/yui/border-none.css -tests/yui/border-none.css.min -tests/yui/box-model-hack.css -tests/yui/box-model-hack.css.min -tests/yui/bug2527974.css -tests/yui/bug2527974.css.min -tests/yui/bug2527991.css -tests/yui/bug2527991.css.min -tests/yui/bug2527998.css -tests/yui/bug2527998.css.min -tests/yui/bug2528034.css -tests/yui/bug2528034.css.min -tests/yui/charset-media.css -tests/yui/charset-media.css.min -tests/yui/color-simple.css -tests/yui/color-simple.css.min -tests/yui/color.css -tests/yui/color.css.min -tests/yui/comment.css -tests/yui/comment.css.min -tests/yui/concat-charset.css -tests/yui/concat-charset.css.min -tests/yui/dataurl-base64-doublequotes.css -tests/yui/dataurl-base64-doublequotes.css.min -tests/yui/dataurl-base64-eof.css -tests/yui/dataurl-base64-eof.css.min -tests/yui/dataurl-base64-linebreakindata.css -tests/yui/dataurl-base64-linebreakindata.css.min -tests/yui/dataurl-base64-noquotes.css -tests/yui/dataurl-base64-noquotes.css.min -tests/yui/dataurl-base64-singlequotes.css -tests/yui/dataurl-base64-singlequotes.css.min -tests/yui/dataurl-base64-twourls.css -tests/yui/dataurl-base64-twourls.css.min -tests/yui/dataurl-dbquote-font.css -tests/yui/dataurl-dbquote-font.css.min -tests/yui/dataurl-nonbase64-doublequotes.css -tests/yui/dataurl-nonbase64-doublequotes.css.min -tests/yui/dataurl-nonbase64-noquotes.css -tests/yui/dataurl-nonbase64-noquotes.css.min -tests/yui/dataurl-nonbase64-singlequotes.css -tests/yui/dataurl-nonbase64-singlequotes.css.min -tests/yui/dataurl-noquote-multiline-font.css -tests/yui/dataurl-noquote-multiline-font.css.min -tests/yui/dataurl-realdata-doublequotes.css -tests/yui/dataurl-realdata-doublequotes.css.min -tests/yui/dataurl-realdata-noquotes.css -tests/yui/dataurl-realdata-noquotes.css.min -tests/yui/dataurl-realdata-singlequotes.css -tests/yui/dataurl-realdata-singlequotes.css.min -tests/yui/dataurl-realdata-yuiapp.css -tests/yui/dataurl-realdata-yuiapp.css.min -tests/yui/dataurl-singlequote-font.css -tests/yui/dataurl-singlequote-font.css.min -tests/yui/decimals.css -tests/yui/decimals.css.min -tests/yui/dollar-header.css -tests/yui/dollar-header.css.min -tests/yui/font-face.css -tests/yui/font-face.css.min -tests/yui/ie5mac.css -tests/yui/ie5mac.css.min -tests/yui/media-empty-class.css -tests/yui/media-empty-class.css.min -tests/yui/media-multi.css -tests/yui/media-multi.css.min -tests/yui/media-test.css -tests/yui/media-test.css.min -tests/yui/opacity-filter.css -tests/yui/opacity-filter.css.min -tests/yui/out/background-position.out -tests/yui/out/background-position.out.b -tests/yui/out/border-none.out -tests/yui/out/border-none.out.b -tests/yui/out/box-model-hack.out -tests/yui/out/box-model-hack.out.b -tests/yui/out/bug2527974.out -tests/yui/out/bug2527974.out.b -tests/yui/out/bug2527991.out -tests/yui/out/bug2527991.out.b -tests/yui/out/bug2527998.out -tests/yui/out/bug2527998.out.b -tests/yui/out/bug2528034.out -tests/yui/out/bug2528034.out.b -tests/yui/out/charset-media.out -tests/yui/out/charset-media.out.b -tests/yui/out/color-simple.out -tests/yui/out/color-simple.out.b -tests/yui/out/color.out -tests/yui/out/color.out.b -tests/yui/out/comment.out -tests/yui/out/comment.out.b -tests/yui/out/concat-charset.out -tests/yui/out/concat-charset.out.b -tests/yui/out/dataurl-base64-doublequotes.out -tests/yui/out/dataurl-base64-doublequotes.out.b -tests/yui/out/dataurl-base64-eof.out -tests/yui/out/dataurl-base64-eof.out.b -tests/yui/out/dataurl-base64-linebreakindata.out -tests/yui/out/dataurl-base64-linebreakindata.out.b -tests/yui/out/dataurl-base64-noquotes.out -tests/yui/out/dataurl-base64-noquotes.out.b -tests/yui/out/dataurl-base64-singlequotes.out -tests/yui/out/dataurl-base64-singlequotes.out.b -tests/yui/out/dataurl-base64-twourls.out -tests/yui/out/dataurl-base64-twourls.out.b -tests/yui/out/dataurl-dbquote-font.out -tests/yui/out/dataurl-dbquote-font.out.b -tests/yui/out/dataurl-nonbase64-doublequotes.out -tests/yui/out/dataurl-nonbase64-doublequotes.out.b -tests/yui/out/dataurl-nonbase64-noquotes.out -tests/yui/out/dataurl-nonbase64-noquotes.out.b -tests/yui/out/dataurl-nonbase64-singlequotes.out -tests/yui/out/dataurl-nonbase64-singlequotes.out.b -tests/yui/out/dataurl-noquote-multiline-font.out -tests/yui/out/dataurl-noquote-multiline-font.out.b -tests/yui/out/dataurl-realdata-doublequotes.out -tests/yui/out/dataurl-realdata-doublequotes.out.b -tests/yui/out/dataurl-realdata-noquotes.out -tests/yui/out/dataurl-realdata-noquotes.out.b -tests/yui/out/dataurl-realdata-singlequotes.out -tests/yui/out/dataurl-realdata-singlequotes.out.b -tests/yui/out/dataurl-realdata-yuiapp.out -tests/yui/out/dataurl-realdata-yuiapp.out.b -tests/yui/out/dataurl-singlequote-font.out -tests/yui/out/dataurl-singlequote-font.out.b -tests/yui/out/decimals.out -tests/yui/out/decimals.out.b -tests/yui/out/dollar-header.out -tests/yui/out/dollar-header.out.b -tests/yui/out/font-face.out -tests/yui/out/font-face.out.b -tests/yui/out/ie5mac.out -tests/yui/out/ie5mac.out.b -tests/yui/out/media-empty-class.out -tests/yui/out/media-empty-class.out.b -tests/yui/out/media-multi.out -tests/yui/out/media-multi.out.b -tests/yui/out/media-test.out -tests/yui/out/media-test.out.b -tests/yui/out/opacity-filter.out -tests/yui/out/opacity-filter.out.b -tests/yui/out/preserve-case.out -tests/yui/out/preserve-case.out.b -tests/yui/out/preserve-new-line.out -tests/yui/out/preserve-new-line.out.b -tests/yui/out/preserve-strings.out -tests/yui/out/preserve-strings.out.b -tests/yui/out/pseudo-first.out -tests/yui/out/pseudo-first.out.b -tests/yui/out/pseudo.out -tests/yui/out/pseudo.out.b -tests/yui/out/special-comments.out -tests/yui/out/special-comments.out.b -tests/yui/out/star-underscore-hacks.out -tests/yui/out/star-underscore-hacks.out.b -tests/yui/out/string-in-comment.out -tests/yui/out/string-in-comment.out.b -tests/yui/out/webkit-transform.out -tests/yui/out/webkit-transform.out.b -tests/yui/out/zeros.out -tests/yui/out/zeros.out.b -tests/yui/preserve-case.css -tests/yui/preserve-case.css.min -tests/yui/preserve-new-line.css -tests/yui/preserve-new-line.css.min -tests/yui/preserve-strings.css -tests/yui/preserve-strings.css.min -tests/yui/pseudo-first.css -tests/yui/pseudo-first.css.min -tests/yui/pseudo.css -tests/yui/pseudo.css.min -tests/yui/special-comments.css -tests/yui/special-comments.css.min -tests/yui/star-underscore-hacks.css -tests/yui/star-underscore-hacks.css.min -tests/yui/string-in-comment.css -tests/yui/string-in-comment.css.min -tests/yui/webkit-transform.css -tests/yui/webkit-transform.css.min -tests/yui/zeros.css -tests/yui/zeros.css.min diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/PKG-INFO b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/PKG-INFO deleted file mode 100644 index d4ee866c986..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/PKG-INFO +++ /dev/null @@ -1,316 +0,0 @@ -Metadata-Version: 1.1 -Name: rcssmin -Version: 1.0.5 -Summary: CSS Minifier -Home-page: http://opensource.perlig.de/rcssmin/ -Author: André Malo -Author-email: nd@perlig.de -License: Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -Download-URL: http://storage.perlig.de/rcssmin/ -Description: ============== - CSS Minifier - ============== - - RCSSmin is a CSS minifier. - - The minifier is based on the semantics of the `YUI compressor`_\, which itself - is based on `the rule list by Isaac Schlueter`_\. - - This module is a re-implementation aiming for speed instead of maximum - compression, so it can be used at runtime (rather than during a preprocessing - step). RCSSmin does syntactical compression only (removing spaces, comments - and possibly semicolons). It does not provide semantic compression (like - removing empty blocks, collapsing redundant properties etc). It does, however, - support various CSS hacks (by keeping them working as intended). - - Here's a feature list: - - - Strings are kept, except that escaped newlines are stripped - - Space/Comments before the very end or before various characters are - stripped: ``:{});=>+],!`` (The colon (``:``) is a special case, a single - space is kept if it's outside a ruleset.) - - Space/Comments at the very beginning or after various characters are - stripped: ``{}(=:>+[,!`` - - Optional space after unicode escapes is kept, resp. replaced by a simple - space - - whitespaces inside ``url()`` definitions are stripped - - Comments starting with an exclamation mark (``!``) can be kept optionally. - - All other comments and/or whitespace characters are replaced by a single - space. - - Multiple consecutive semicolons are reduced to one - - The last semicolon within a ruleset is stripped - - CSS Hacks supported: - - - IE7 hack (``>/**/``) - - Mac-IE5 hack (``/*\*/.../**/``) - - The boxmodelhack is supported naturally because it relies on valid CSS2 - strings - - Between ``:first-line`` and the following comma or curly brace a space is - inserted. (apparently it's needed for IE6) - - Same for ``:first-letter`` - - rcssmin.c is a reimplementation of rcssmin.py in C and improves runtime up to - factor 100 or so (depending on the input). docs/BENCHMARKS in the source - distribution contains the details. - - Both python 2 (>= 2.4) and python 3 are supported. - - .. _YUI compressor: https://github.com/yui/yuicompressor/ - - .. _the rule list by Isaac Schlueter: https://github.com/isaacs/cssmin/ - - - Copyright and License - ~~~~~~~~~~~~~~~~~~~~~ - - Copyright 2011 - 2014 - André Malo or his licensors, as applicable. - - The whole package (except for the files in the bench/ directory) is - distributed under the Apache License Version 2.0. You'll find a copy in the - root directory of the distribution or online at: - <http://www.apache.org/licenses/LICENSE-2.0>. - - - Bugs - ~~~~ - - No bugs, of course. ;-) - But if you've found one or have an idea how to improve rcssmin, feel free - to send a pull request on `github <https://github.com/ndparker/rcssmin>`_ - or send a mail to <rcssmin-bugs@perlig.de>. - - - Author Information - ~~~~~~~~~~~~~~~~~~ - - André "nd" Malo <nd perlig.de> - GPG: 0x8103A37E - - - If God intended people to be naked, they would be born that way. - -- Oscar Wilde - - .. vim:tw=72 syntax=rest -Keywords: CSS,Minimization -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved -Classifier: License :: OSI Approved :: Apache License, Version 2.0 -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: C -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: Jython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Software Development :: Libraries -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Text Processing -Classifier: Topic :: Text Processing :: Filters -Classifier: Topic :: Utilities -Provides: rcssmin (1.0) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/README.chromium b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/README.chromium deleted file mode 100644 index b1350fc9fa4..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/README.chromium +++ /dev/null @@ -1,16 +0,0 @@ -Name: rCSSmin -Short Name: rcssmin -URL: http://opensource.perlig.de/rcssmin/ -Version: 1.0.5 -License: Apache 2.0 -License File: NOT_SHIPPED -Security Critical: no - -Description: -rCSSmin is a CSS minifier written in python. -The minifier is based on the semantics of the YUI compressor, which itself is -based on the rule list by Isaac Schlueter. - -Modifications made: - - Removed the bench.sh since the file doesn't have the licensing info and - caused license checker to fail. diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/README.rst b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/README.rst deleted file mode 100644 index 95fb3083a89..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/README.rst +++ /dev/null @@ -1,153 +0,0 @@ -.. -*- coding: utf-8 -*- - -===================================== - rCSSmin - A CSS Minifier For Python -===================================== - -TABLE OF CONTENTS ------------------ - -1. Introduction -2. Copyright and License -3. System Requirements -4. Installation -5. Documentation -6. Bugs -7. Author Information - - -INTRODUCTION ------------- - -RCSSmin is a CSS minifier written in python. - -The minifier is based on the semantics of the `YUI compressor`_\, which itself -is based on `the rule list by Isaac Schlueter`_\. - -This module is a re-implementation aiming for speed instead of maximum -compression, so it can be used at runtime (rather than during a preprocessing -step). RCSSmin does syntactical compression only (removing spaces, comments -and possibly semicolons). It does not provide semantic compression (like -removing empty blocks, collapsing redundant properties etc). It does, however, -support various CSS hacks (by keeping them working as intended). - -Here's a feature list: - -- Strings are kept, except that escaped newlines are stripped -- Space/Comments before the very end or before various characters are - stripped: ``:{});=>+],!`` (The colon (``:``) is a special case, a single - space is kept if it's outside a ruleset.) -- Space/Comments at the very beginning or after various characters are - stripped: ``{}(=:>+[,!`` -- Optional space after unicode escapes is kept, resp. replaced by a simple - space -- whitespaces inside ``url()`` definitions are stripped -- Comments starting with an exclamation mark (``!``) can be kept optionally. -- All other comments and/or whitespace characters are replaced by a single - space. -- Multiple consecutive semicolons are reduced to one -- The last semicolon within a ruleset is stripped -- CSS Hacks supported: - - - IE7 hack (``>/**/``) - - Mac-IE5 hack (``/*\*/.../**/``) - - The boxmodelhack is supported naturally because it relies on valid CSS2 - strings - - Between ``:first-line`` and the following comma or curly brace a space is - inserted. (apparently it's needed for IE6) - - Same for ``:first-letter`` - -rcssmin.c is a reimplementation of rcssmin.py in C and improves runtime up to -factor 100 or so (depending on the input). docs/BENCHMARKS in the source -distribution contains the details. - -.. _YUI compressor: https://github.com/yui/yuicompressor/ - -.. _the rule list by Isaac Schlueter: https://github.com/isaacs/cssmin/ - - -COPYRIGHT AND LICENSE ---------------------- - -Copyright 2011 - 2014 -André Malo or his licensors, as applicable. - -The whole package (except for the files in the bench/ directory) -is distributed under the Apache License Version 2.0. You'll find a copy in the -root directory of the distribution or online at: -<http://www.apache.org/licenses/LICENSE-2.0>. - - -SYSTEM REQUIREMENTS -------------------- - -Both python 2 (>=2.4) and python 3 are supported. - - -INSTALLATION ------------- - -Using pip -~~~~~~~~~ - -$ pip install rcssmin - - -Using distutils -~~~~~~~~~~~~~~~ - -$ python setup.py install - -The following extra options to the install command may be of interest: - - --without-c-extensions Don't install C extensions - --without-docs Do not install documentation files - - -Drop-in -~~~~~~~ - -rCSSmin effectively consists of two files: rcssmin.py and rcssmin.c, the -latter being entirely optional. So, for simple integration you can just -copy rcssmin.py into your project and use it. - - -DOCUMENTATION -------------- - -A generated API documentation is available in the docs/apidoc/ directory. -But you can just look into the module. It provides a simple function, -called cssmin which takes the CSS as a string and returns the minified -CSS as a string. - -The module additionally provides a "streamy" interface: - -$ python -mrcssmin <css >minified - -It takes two options: - - -b Keep bang-comments (Comments starting with an exclamation mark) - -p Force using the python implementation (not the C implementation) - -The latest documentation is also available online at -<http://opensource.perlig.de/rcssmin/>. - - -BUGS ----- - -No bugs, of course. ;-) -But if you've found one or have an idea how to improve rcssmin, feel free to -send a pull request on `github <https://github.com/ndparker/rcssmin>`_ or -send a mail to <rcssmin-bugs@perlig.de>. - - -AUTHOR INFORMATION ------------------- - -André "nd" Malo <nd@perlig.de> -GPG: 0x8103A37E - - - If God intended people to be naked, they would be born that way. - -- Oscar Wilde diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/__init__.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/__init__.py deleted file mode 100644 index 77dc23c8412..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================ - Package _setup -================ - -This package provides tools for main package setup. -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -import os as _os -import sys as _sys - -if _sys.version_info[0] == 2: - __path__ = [_os.path.join(__path__[0], 'py2')] - __author__ = __author__.decode('latin-1') -elif _sys.version_info[0] == 3: - __path__ = [_os.path.join(__path__[0], 'py3')] -else: - raise RuntimeError("Unsupported python version") -del _os, _sys - -from _setup.setup import run # pylint: disable = W0611 diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/include/cext.h b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/include/cext.h deleted file mode 100644 index 47b6f5b9c11..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/include/cext.h +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright 2006 - 2014 - * Andr\xe9 Malo or his licensors, as applicable - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * central naming stuff - */ - -#ifndef SETUP_CEXT_H -#define SETUP_CEXT_H - -#ifndef EXT_MODULE -#error EXT_MODULE must be defined outside of this file (-DEXT_MODULE=...) -#endif - -/* - * include core header files - */ -#define PY_SSIZE_T_CLEAN - -#include "Python.h" -#include "structmember.h" - -/* - * define our helper macros depending on the stuff above - */ -#define STRINGIFY(n) STRINGIFY_HELPER(n) -#define STRINGIFY_HELPER(n) #n -#define CONCATENATE(first, second) CONCATENATE_HELPER(first, second) -#define CONCATENATE_HELPER(first, second) first##second - -#define EXT_MODULE_NAME STRINGIFY(EXT_MODULE) -#ifdef EXT_PACKAGE -#define EXT_PACKAGE_NAME STRINGIFY(EXT_PACKAGE) -#define EXT_MODULE_PATH EXT_PACKAGE_NAME "." EXT_MODULE_NAME -#else -#define EXT_PACKAGE_NAME "" -#define EXT_MODULE_PATH EXT_MODULE_NAME -#endif - -#define EXT_DOCS_VAR CONCATENATE(var, CONCATENATE(EXT_MODULE, __doc__)) -#define EXT_METHODS_VAR CONCATENATE(var, CONCATENATE(EXT_MODULE, _methods)) -#define EXT_METHODS static PyMethodDef EXT_METHODS_VAR[] - -#define EXT_DEFINE_VAR CONCATENATE(var, CONCATENATE(EXT_MODULE, _module)) - -/* Py3K Support */ -#if PY_MAJOR_VERSION >= 3 - -#define EXT3 - -#ifndef PyMODINIT_FUNC -#define EXT_INIT_FUNC PyObject *CONCATENATE(PyInit_, EXT_MODULE)(void) -#else -#define EXT_INIT_FUNC PyMODINIT_FUNC CONCATENATE(PyInit_, EXT_MODULE)(void) -#endif - -#define EXT_DEFINE(name, methods, doc) \ -static struct PyModuleDef EXT_DEFINE_VAR = { \ - PyModuleDef_HEAD_INIT, \ - name, \ - doc, \ - -1, \ - methods, \ - NULL, \ - NULL, \ - NULL, \ - NULL \ -} - -#define EXT_CREATE(def) (PyModule_Create(def)) -#define EXT_INIT_ERROR(module) do {Py_XDECREF(module); return NULL;} while(0) -#define EXT_INIT_RETURN(module) return module - -#else /* end py3k */ - -#define EXT2 - -#ifndef PyMODINIT_FUNC -#define EXT_INIT_FUNC void CONCATENATE(init, EXT_MODULE)(void) -#else -#define EXT_INIT_FUNC PyMODINIT_FUNC CONCATENATE(init, EXT_MODULE)(void) -#endif - -#define EXT_DEFINE__STRUCT \ - CONCATENATE(struct, CONCATENATE(EXT_MODULE, _module)) - -struct EXT_DEFINE__STRUCT { - char *m_name; - char *m_doc; - PyMethodDef *m_methods; -}; -#define EXT_DEFINE(name, methods, doc) \ -static struct EXT_DEFINE__STRUCT EXT_DEFINE_VAR = { \ - name, \ - doc, \ - methods \ -} - -#define EXT_CREATE(def) ((def)->m_doc \ - ? Py_InitModule3((def)->m_name, (def)->m_methods, (def)->m_doc) \ - : Py_InitModule((def)->m_name, (def)->m_methods) \ -) -#define EXT_INIT_ERROR(module) return -#define EXT_INIT_RETURN(module) return - -#endif /* end py2K */ - -#define EXT_INIT_TYPE(module, type) do { \ - if (PyType_Ready(type) < 0) \ - EXT_INIT_ERROR(module); \ -} while (0) - -#define EXT_ADD_TYPE(module, name, type) do { \ - Py_INCREF(type); \ - if (PyModule_AddObject(module, name, (PyObject *)(type)) < 0) \ - EXT_INIT_ERROR(module); \ -} while (0) - -#define EXT_ADD_UNICODE(module, name, string, encoding) do { \ - if (PyModule_AddObject( \ - module, \ - name, \ - PyUnicode_Decode( \ - string, \ - sizeof(string) - 1, \ - encoding, \ - "strict" \ - )) < 0) \ - EXT_INIT_ERROR(module); \ -} while (0) - -#define EXT_ADD_STRING(module, name, string) do { \ - if (PyModule_AddStringConstant(module, name, string) < 0) \ - EXT_INIT_ERROR(module); \ -} while (0) - -#define EXT_ADD_INT(module, name, number) do { \ - if (PyModule_AddIntConstant(module, name, number) < 0) \ - EXT_INIT_ERROR(module); \ -} while (0) - - -/* PEP 353 support, implemented as of python 2.5 */ -#if PY_VERSION_HEX < 0x02050000 -typedef int Py_ssize_t; -#define PyInt_FromSsize_t(arg) PyInt_FromLong((long)arg) -#define PyInt_AsSsize_t(arg) (int)PyInt_AsLong(arg) -#define PY_SSIZE_T_MAX ((Py_ssize_t)INT_MAX) -#endif - -/* - * some helper macros (Python 2.4) - */ -#ifndef Py_VISIT -#define Py_VISIT(op) do { \ - if (op) { \ - int vret = visit((op), arg); \ - if (vret) return vret; \ - } \ -} while (0) -#endif - -#ifdef Py_CLEAR -#undef Py_CLEAR -#endif -#define Py_CLEAR(op) do { \ - if (op) { \ - PyObject *tmp__ = (PyObject *)(op); \ - (op) = NULL; \ - Py_DECREF(tmp__); \ - } \ -} while (0) - -#ifndef Py_RETURN_NONE -#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None -#endif - -#ifndef Py_RETURN_FALSE -#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False -#endif - -#ifndef Py_RETURN_TRUE -#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True -#endif - -/* Macros for inline documentation. (Python 2.3) */ -#ifndef PyDoc_VAR -#define PyDoc_VAR(name) static char name[] -#endif - -#ifndef PyDoc_STRVAR -#define PyDoc_STRVAR(name,str) PyDoc_VAR(name) = PyDoc_STR(str) -#endif - -#ifndef PyDoc_STR -#ifdef WITH_DOC_STRINGS -#define PyDoc_STR(str) str -#else -#define PyDoc_STR(str) "" -#endif -#endif - -/* Basestring check (basestring introduced in Python 2.3) */ -#if PY_VERSION_HEX < 0x02030000 -#define BaseString_Check(type) ( \ - PyObject_TypeCheck((type), &PyString_Type) \ - || PyObject_TypeCheck((type), &PyUnicode_Type) \ -) -#else -#define BaseString_Check(type) PyObject_TypeCheck((type), &PyBaseString_Type) -#endif - -#define GENERIC_ALLOC(type) \ - ((void *)((PyTypeObject *)type)->tp_alloc(type, (Py_ssize_t)0)) - -/* PyPy doesn't define it */ -#ifndef PyType_IS_GC -#define PyType_IS_GC(t) PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC) -#endif - -#define DEFINE_GENERIC_DEALLOC(prefix) \ -static void prefix##_dealloc(void *self) \ -{ \ - if (PyType_IS_GC(((PyObject *)self)->ob_type)) \ - PyObject_GC_UnTrack(self); \ - (void)prefix##_clear(self); \ - ((PyObject *)self)->ob_type->tp_free((PyObject *)self); \ -} - -#endif /* SETUP_CEXT_H */ diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/__init__.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/__init__.py deleted file mode 100644 index 9582ecc1087..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================ - Package _setup -================ - -This package provides tools for main package setup. -""" -__author__ = u"Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -from _setup.setup import run # pylint: disable = W0611 diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/commands.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/commands.py deleted file mode 100644 index a41b166e0a5..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/commands.py +++ /dev/null @@ -1,267 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -=================== - Command extenders -=================== - -Command extenders. -""" -__author__ = u"Andr\xe9 Malo" -__docformat__ = "restructuredtext en" -__test__ = False - -from distutils import fancy_getopt as _fancy_getopt -from distutils.command import build as _build -from distutils.command import build_ext as _build_ext -from distutils.command import install as _install -from distutils.command import install_data as _install_data -from distutils.command import install_lib as _install_lib -import os as _os - -from _setup.util import log - -_option_defaults = {} -_option_inherits = {} -_option_finalizers = {} -_command_mapping = { - 'install': 'Install', - 'install_data': 'InstallData', - 'install_lib': 'InstallLib', - 'build': 'Build', - 'build_ext': 'BuildExt', -} - - -def add_option(command, long_name, help_text, short_name=None, default=None, - inherit=None): - """ Add an option """ - try: - command_class = globals()[_command_mapping[command]] - except KeyError: - raise ValueError("Unknown command %r" % (command,)) - for opt in command_class.user_options: - if opt[0] == long_name: - break - else: - opt = (long_name, short_name, help_text) - command_class.user_options.append(opt) - if not long_name.endswith('='): - command_class.boolean_options.append(long_name) - attr_name = _fancy_getopt.translate_longopt(long_name) - else: - attr_name = _fancy_getopt.translate_longopt(long_name[:-1]) - if not _option_defaults.has_key(command): - _option_defaults[command] = [] - if inherit is not None: - if isinstance(inherit, (str, unicode)): - inherit = [inherit] - for i_inherit in inherit: - add_option( - i_inherit, long_name, help_text, short_name, default - ) - default = None - if not _option_inherits.has_key(command): - _option_inherits[command] = [] - for i_inherit in inherit: - for i_command, opt_name in _option_inherits[command]: - if i_command == i_inherit and opt_name == attr_name: - break - else: - _option_inherits[command].append((i_inherit, attr_name)) - _option_defaults[command].append((attr_name, default)) - - -def add_finalizer(command, key, func): - """ Add finalizer """ - if not _option_finalizers.has_key(command): - _option_finalizers[command] = {} - if not _option_finalizers[command].has_key(key): - _option_finalizers[command][key] = func - - -class Install(_install.install): - """ Extended installer to reflect the additional data options """ - user_options = _install.install.user_options + [ - ('single-version-externally-managed', None, - "Compat option. Does not a thing."), - ] - boolean_options = _install.install.boolean_options + [ - 'single-version-externally-managed' - ] - - def initialize_options(self): - """ Prepare for new options """ - _install.install.initialize_options(self) - self.single_version_externally_managed = None - if _option_defaults.has_key('install'): - for opt_name, default in _option_defaults['install']: - setattr(self, opt_name, default) - - def finalize_options(self): - """ Finalize options """ - _install.install.finalize_options(self) - if _option_inherits.has_key('install'): - for parent, opt_name in _option_inherits['install']: - self.set_undefined_options(parent, (opt_name, opt_name)) - if _option_finalizers.has_key('install'): - for func in _option_finalizers['install'].values(): - func(self) - - -class InstallData(_install_data.install_data): - """ Extended data installer """ - user_options = _install_data.install_data.user_options + [] - boolean_options = _install_data.install_data.boolean_options + [] - - def initialize_options(self): - """ Prepare for new options """ - _install_data.install_data.initialize_options(self) - if _option_defaults.has_key('install_data'): - for opt_name, default in _option_defaults['install_data']: - setattr(self, opt_name, default) - - def finalize_options(self): - """ Finalize options """ - _install_data.install_data.finalize_options(self) - if _option_inherits.has_key('install_data'): - for parent, opt_name in _option_inherits['install_data']: - self.set_undefined_options(parent, (opt_name, opt_name)) - if _option_finalizers.has_key('install_data'): - for func in _option_finalizers['install_data'].values(): - func(self) - - -class InstallLib(_install_lib.install_lib): - """ Extended lib installer """ - user_options = _install_lib.install_lib.user_options + [] - boolean_options = _install_lib.install_lib.boolean_options + [] - - def initialize_options(self): - """ Prepare for new options """ - _install_lib.install_lib.initialize_options(self) - if _option_defaults.has_key('install_lib'): - for opt_name, default in _option_defaults['install_lib']: - setattr(self, opt_name, default) - - def finalize_options(self): - """ Finalize options """ - _install_lib.install_lib.finalize_options(self) - if _option_inherits.has_key('install_lib'): - for parent, opt_name in _option_inherits['install_lib']: - self.set_undefined_options(parent, (opt_name, opt_name)) - if _option_finalizers.has_key('install_lib'): - for func in _option_finalizers['install_lib'].values(): - func(self) - - -class BuildExt(_build_ext.build_ext): - """ - Extended extension builder class - - This class allows extensions to provide a ``check_prerequisites`` method - which is called before actually building it. The method takes the - `BuildExt` instance and returns whether the extension should be skipped or - not. - """ - - def initialize_options(self): - """ Prepare for new options """ - _build_ext.build_ext.initialize_options(self) - if _option_defaults.has_key('build_ext'): - for opt_name, default in _option_defaults['build_ext']: - setattr(self, opt_name, default) - - def finalize_options(self): - """ Finalize options """ - _build_ext.build_ext.finalize_options(self) - if _option_inherits.has_key('build_ext'): - for parent, opt_name in _option_inherits['build_ext']: - self.set_undefined_options(parent, (opt_name, opt_name)) - if _option_finalizers.has_key('build_ext'): - for func in _option_finalizers['build_ext'].values(): - func(self) - - def build_extension(self, ext): - """ - Build C extension - with extended functionality - - The following features are added here: - - - ``ext.check_prerequisites`` is called before the extension is being - built. See `Extension` for details. If the method does not exist, - simply no check will be run. - - The macros ``EXT_PACKAGE`` and ``EXT_MODULE`` will be filled (or - unset) depending on the extensions name, but only if they are not - already defined. - - :Parameters: - `ext` : `Extension` - The extension to build. If it's a pure - ``distutils.core.Extension``, simply no prequisites check is - applied. - - :Return: whatever ``distutils.command.build_ext.build_ext`` returns - :Rtype: any - """ - # handle name macros - macros = dict(ext.define_macros or ()) - tup = ext.name.split('.') - if len(tup) == 1: - pkg, mod = None, tup[0] - else: - pkg, mod = '.'.join(tup[:-1]), tup[-1] - if pkg is not None and 'EXT_PACKAGE' not in macros: - ext.define_macros.append(('EXT_PACKAGE', pkg)) - if 'EXT_MODULE' not in macros: - ext.define_macros.append(('EXT_MODULE', mod)) - if pkg is None: - macros = dict(ext.undef_macros or ()) - if 'EXT_PACKAGE' not in macros: - ext.undef_macros.append('EXT_PACKAGE') - - # handle prereq checks - try: - checker = ext.check_prerequisites - except AttributeError: - pass - else: - if checker(self): - log.info("Skipping %s extension" % ext.name) - return - - return _build_ext.build_ext.build_extension(self, ext) - - -class Build(_build.build): - - def initialize_options(self): - """ Prepare for new options """ - _build.build.initialize_options(self) - if _option_defaults.has_key('build'): - for opt_name, default in _option_defaults['build']: - setattr(self, opt_name, default) - - def finalize_options(self): - """ Finalize options """ - _build.build.finalize_options(self) - if _option_inherits.has_key('build'): - for parent, opt_name in _option_inherits['build']: - self.set_undefined_options(parent, (opt_name, opt_name)) - if _option_finalizers.has_key('build'): - for func in _option_finalizers['build'].values(): - func(self) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/data.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/data.py deleted file mode 100644 index 9cf04e104c2..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/data.py +++ /dev/null @@ -1,165 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -=================== - Data distribution -=================== - -This module provides tools to simplify data distribution. -""" -__author__ = u"Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -from distutils import filelist as _filelist -import os as _os -import posixpath as _posixpath -import sys as _sys - -from _setup import commands as _commands - - -def splitpath(path): - """ Split a path """ - drive, path = '', _os.path.normpath(path) - try: - splitunc = _os.path.splitunc - except AttributeError: - pass - else: - drive, path = splitunc(path) - if not drive: - drive, path = _os.path.splitdrive(path) - elems = [] - try: - sep = _os.path.sep - except AttributeError: - sep = _os.path.join('1', '2')[1:-1] - while 1: - prefix, path = _os.path.split(path) - elems.append(path) - if prefix in ('', sep): - drive = _os.path.join(drive, prefix) - break - path = prefix - elems.reverse() - return drive, elems - - -def finalizer(installer): - """ Finalize install_data """ - data_files = [] - for item in installer.data_files: - if not isinstance(item, Data): - data_files.append(item) - continue - data_files.extend(item.flatten(installer)) - installer.data_files = data_files - - -class Data(object): - """ File list container """ - - def __init__(self, files, target=None, preserve=0, strip=0, - prefix=None): - """ Initialization """ - self._files = files - self._target = target - self._preserve = preserve - self._strip = strip - self._prefix = prefix - self.fixup_commands() - - def fixup_commands(self): - pass - - def from_templates(cls, *templates, **kwargs): - """ Initialize from template """ - files = _filelist.FileList() - for tpl in templates: - for line in tpl.split(';'): - files.process_template_line(line.strip()) - files.sort() - files.remove_duplicates() - result = [] - for filename in files.files: - _, elems = splitpath(filename) - if '.svn' in elems or '.git' in elems: - continue - result.append(filename) - return cls(result, **kwargs) - from_templates = classmethod(from_templates) - - def flatten(self, installer): - """ Flatten the file list to (target, file) tuples """ - # pylint: disable = W0613 - if self._prefix: - _, prefix = splitpath(self._prefix) - telems = prefix - else: - telems = [] - - tmap = {} - for fname in self._files: - (_, name), target = splitpath(fname), telems - if self._preserve: - if self._strip: - name = name[max(0, min(self._strip, len(name) - 1)):] - if len(name) > 1: - target = telems + name[:-1] - tmap.setdefault(_posixpath.join(*target), []).append(fname) - return tmap.items() - - -class Documentation(Data): - """ Documentation container """ - - def fixup_commands(self): - _commands.add_option('install_data', 'without-docs', - help_text='Do not install documentation files', - inherit='install', - ) - _commands.add_finalizer('install_data', 'documentation', finalizer) - - def flatten(self, installer): - """ Check if docs should be installed at all """ - if installer.without_docs: - return [] - return Data.flatten(self, installer) - - -class Manpages(Documentation): - """ Manpages container """ - - def dispatch(cls, files): - """ Automatically dispatch manpages to their target directories """ - mpmap = {} - for manpage in files: - normalized = _os.path.normpath(manpage) - _, ext = _os.path.splitext(normalized) - if ext.startswith(_os.path.extsep): - ext = ext[len(_os.path.extsep):] - mpmap.setdefault(ext, []).append(manpage) - return [cls(manpages, prefix=_posixpath.join( - 'share', 'man', 'man%s' % section, - )) for section, manpages in mpmap.items()] - dispatch = classmethod(dispatch) - - def flatten(self, installer): - """ Check if manpages are suitable """ - if _sys.platform == 'win32': - return [] - return Documentation.flatten(self, installer) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/dist.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/dist.py deleted file mode 100644 index 21a65415185..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/dist.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================ - dist utilities -================ - -dist utilities. -""" -__author__ = u"Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -import sys as _sys - -from _setup import shell as _shell - - -def run_setup(*args, **kwargs): - """ Run setup """ - if 'setup' in kwargs: - script = kwargs.get('setup') or 'setup.py' - del kwargs['setup'] - else: - script = 'setup.py' - if 'fakeroot' in kwargs: - fakeroot = kwargs['fakeroot'] - del kwargs['fakeroot'] - else: - fakeroot = None - if kwargs: - raise TypeError("Unrecognized keyword parameters") - - script = _shell.native(script) - argv = [_sys.executable, script] + list(args) - if fakeroot: - argv.insert(0, fakeroot) - return not _shell.spawn(*argv) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/ext.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/ext.py deleted file mode 100644 index bcc0209a53a..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/ext.py +++ /dev/null @@ -1,254 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -=================== - C extension tools -=================== - -C extension tools. -""" -__author__ = u"Andr\xe9 Malo" -__docformat__ = "restructuredtext en" -__test__ = False - -from distutils import core as _core -from distutils import errors as _distutils_errors -import os as _os -import posixpath as _posixpath -import shutil as _shutil -import tempfile as _tempfile - -from _setup import commands as _commands -from _setup.util import log - - -def _install_finalizer(installer): - if installer.without_c_extensions: - installer.distribution.ext_modules = [] - -def _build_finalizer(builder): - if builder.without_c_extensions: - builder.extensions = [] - - -class Extension(_core.Extension): - """ - Extension with prerequisite check interface - - If your check is cacheable (during the setup run), override - `cached_check_prerequisites`, `check_prerequisites` otherwise. - - :IVariables: - `cached_check` : ``bool`` - The cached check result - """ - cached_check = None - - def __init__(self, *args, **kwargs): - """ Initialization """ - if kwargs.has_key('depends'): - self.depends = kwargs['depends'] or [] - else: - self.depends = [] - _core.Extension.__init__(self, *args, **kwargs) - - # add include path - included = _posixpath.join('_setup', 'include') - if included not in self.include_dirs: - self.include_dirs.append(included) - - # add cext.h to the dependencies - cext_h = _posixpath.join(included, 'cext.h') - if cext_h not in self.depends: - self.depends.append(cext_h) - - _commands.add_option('install_lib', 'without-c-extensions', - help_text='Don\'t install C extensions', - inherit='install', - ) - _commands.add_finalizer('install_lib', 'c-extensions', - _install_finalizer - ) - _commands.add_option('build_ext', 'without-c-extensions', - help_text='Don\'t build C extensions', - inherit=('build', 'install_lib'), - ) - _commands.add_finalizer('build_ext', 'c-extensions', _build_finalizer) - - def check_prerequisites(self, build): - """ - Check prerequisites - - The check should cover all dependencies needed for the extension to - be built and run. The method can do the following: - - - return a false value: the extension will be built - - return a true value: the extension will be skipped. This is useful - for optional extensions - - raise an exception. This is useful for mandatory extensions - - If the check result is cacheable (during the setup run), override - `cached_check_prerequisites` instead. - - :Parameters: - `build` : `BuildExt` - The extension builder - - :Return: Skip the extension? - :Rtype: ``bool`` - """ - if self.cached_check is None: - log.debug("PREREQ check for %s" % self.name) - self.cached_check = self.cached_check_prerequisites(build) - else: - log.debug("PREREQ check for %s (cached)" % self.name) - return self.cached_check - - def cached_check_prerequisites(self, build): - """ - Check prerequisites - - The check should cover all dependencies needed for the extension to - be built and run. The method can do the following: - - - return a false value: the extension will be built - - return a true value: the extension will be skipped. This is useful - for optional extensions - - raise an exception. This is useful for mandatory extensions - - If the check result is *not* cacheable (during the setup run), - override `check_prerequisites` instead. - - :Parameters: - `build` : `BuildExt` - The extension builder - - :Return: Skip the extension? - :Rtype: ``bool`` - """ - # pylint: disable = W0613 - log.debug("Nothing to check for %s!" % self.name) - return False - - -class ConfTest(object): - """ - Single conftest abstraction - - :IVariables: - `_tempdir` : ``str`` - The tempdir created for this test - - `src` : ``str`` - Name of the source file - - `target` : ``str`` - Target filename - - `compiler` : ``CCompiler`` - compiler instance - - `obj` : ``list`` - List of object filenames (``[str, ...]``) - """ - _tempdir = None - - def __init__(self, build, source): - """ - Initialization - - :Parameters: - `build` : ``distuils.command.build_ext.build_ext`` - builder instance - - `source` : ``str`` - Source of the file to compile - """ - self._tempdir = tempdir = _tempfile.mkdtemp() - src = _os.path.join(tempdir, 'conftest.c') - fp = open(src, 'w') - try: - fp.write(source) - finally: - fp.close() - self.src = src - self.compiler = compiler = build.compiler - self.target = _os.path.join(tempdir, 'conftest') - self.obj = compiler.object_filenames([src], output_dir=tempdir) - - def __del__(self): - """ Destruction """ - self.destroy() - - def destroy(self): - """ Destroy the conftest leftovers on disk """ - tempdir, self._tempdir = self._tempdir, None - if tempdir is not None: - _shutil.rmtree(tempdir) - - def compile(self, **kwargs): - """ - Compile the conftest - - :Parameters: - `kwargs` : ``dict`` - Optional keyword parameters for the compiler call - - :Return: Was the compilation successful? - :Rtype: ``bool`` - """ - kwargs['output_dir'] = self._tempdir - try: - self.compiler.compile([self.src], **kwargs) - except _distutils_errors.CompileError: - return False - return True - - def link(self, **kwargs): - r""" - Link the conftest - - Before you can link the conftest objects they need to be `compile`\d. - - :Parameters: - `kwargs` : ``dict`` - Optional keyword parameters for the linker call - - :Return: Was the linking successful? - :Rtype: ``bool`` - """ - try: - self.compiler.link_executable(self.obj, self.target, **kwargs) - except _distutils_errors.LinkError: - return False - return True - - def pipe(self, mode="r"): - r""" - Execute the conftest binary and connect to it using a pipe - - Before you can pipe to or from the conftest binary it needs to - be `link`\ed. - - :Parameters: - `mode` : ``str`` - Pipe mode - r/w - - :Return: The open pipe - :Rtype: ``file`` - """ - return _os.popen(self.compiler.executable_filename(self.target), mode) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/setup.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/setup.py deleted file mode 100644 index fd86f62f9bc..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/setup.py +++ /dev/null @@ -1,419 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007 - 2013 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -=================== - Main setup runner -=================== - -This module provides a wrapper around the distutils core setup. -""" -__author__ = u"Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -import ConfigParser as _config_parser -from distutils import core as _core -import os as _os -import posixpath as _posixpath -import sys as _sys - -from _setup import commands as _commands -from _setup import data as _data -from _setup import ext as _ext -from _setup import util as _util -from _setup import shell as _shell - - -def check_python_version(impl, version_min, version_max): - """ Check python version """ - if impl == 'python': - version_info = _sys.version_info - elif impl == 'pypy': - version_info = getattr(_sys, 'pypy_version_info', None) - if not version_info: - return - elif impl == 'jython': - if not 'java' in _sys.platform.lower(): - return - version_info = _sys.version_info - else: - raise AssertionError("impl not in ('python', 'pypy', 'jython')") - - pyversion = map(int, version_info[:3]) - if version_min: - min_required = \ - map(int, '.'.join((version_min, '0.0.0')).split('.')[:3]) - if pyversion < min_required: - raise EnvironmentError("Need at least %s %s (vs. %s)" % ( - impl, version_min, '.'.join(map(str, pyversion)) - )) - if version_max: - max_required = map(int, version_max.split('.')) - max_required[-1] += 1 - if pyversion >= max_required: - raise EnvironmentError("Need at max %s %s (vs. %s)" % ( - impl, - version_max, - '.'.join(map(str, pyversion)) - )) - - -def find_description(docs): - """ - Determine the package description from DESCRIPTION - - :Parameters: - `docs` : ``dict`` - Docs config section - - :Return: Tuple of summary, description and license - (``('summary', 'description', 'license')``) - (all may be ``None``) - :Rtype: ``tuple`` - """ - summary = None - filename = docs.get('meta.summary', 'SUMMARY').strip() - if filename and _os.path.isfile(filename): - fp = open(filename) - try: - try: - summary = fp.read().strip().splitlines()[0].rstrip() - except IndexError: - summary = '' - finally: - fp.close() - - description = None - filename = docs.get('meta.description', 'DESCRIPTION').strip() - if filename and _os.path.isfile(filename): - fp = open(filename) - try: - description = fp.read().rstrip() - finally: - fp.close() - - if summary is None and description: - from docutils import core - summary = core.publish_parts( - source=description, - source_path=filename, - writer_name='html', - )['title'].encode('utf-8') - - return summary, description - - -def find_classifiers(docs): - """ - Determine classifiers from CLASSIFIERS - - :return: List of classifiers (``['classifier', ...]``) - :rtype: ``list`` - """ - filename = docs.get('meta.classifiers', 'CLASSIFIERS').strip() - if filename and _os.path.isfile(filename): - fp = open(filename) - try: - content = fp.read() - finally: - fp.close() - content = [item.strip() for item in content.splitlines()] - return [item for item in content if item and not item.startswith('#')] - return [] - - -def find_provides(docs): - """ - Determine provides from PROVIDES - - :return: List of provides (``['provides', ...]``) - :rtype: ``list`` - """ - filename = docs.get('meta.provides', 'PROVIDES').strip() - if filename and _os.path.isfile(filename): - fp = open(filename) - try: - content = fp.read() - finally: - fp.close() - content = [item.strip() for item in content.splitlines()] - return [item for item in content if item and not item.startswith('#')] - return [] - - -def find_license(docs): - """ - Determine license from LICENSE - - :return: License text - :rtype: ``str`` - """ - filename = docs.get('meta.license', 'LICENSE').strip() - if filename and _os.path.isfile(filename): - fp = open(filename) - try: - return fp.read().rstrip() - finally: - fp.close() - return None - - -def find_packages(manifest): - """ Determine packages and subpackages """ - packages = {} - collect = manifest.get('packages.collect', '').split() - lib = manifest.get('packages.lib', '.') - try: - sep = _os.path.sep - except AttributeError: - sep = _os.path.join('1', '2')[1:-1] - for root in collect: - for dirpath, _, filenames in _shell.walk(_os.path.join(lib, root)): - if dirpath.find('.svn') >= 0 or dirpath.find('.git') >= 0: - continue - if '__init__.py' in filenames: - packages[ - _os.path.normpath(dirpath).replace(sep, '.') - ] = None - packages = packages.keys() - packages.sort() - return packages - - -def find_data(name, docs): - """ Determine data files """ - result = [] - if docs.get('extra', '').strip(): - result.append(_data.Documentation(docs['extra'].split(), - prefix='share/doc/%s' % name, - )) - if docs.get('examples.dir', '').strip(): - tpl = ['recursive-include %s *' % docs['examples.dir']] - if docs.get('examples.ignore', '').strip(): - tpl.extend(["global-exclude %s" % item - for item in docs['examples.ignore'].split() - ]) - strip = int(docs.get('examples.strip', '') or 0) - result.append(_data.Documentation.from_templates(*tpl, **{ - 'strip': strip, - 'prefix': 'share/doc/%s' % name, - 'preserve': 1, - })) - if docs.get('userdoc.dir', '').strip(): - tpl = ['recursive-include %s *' % docs['userdoc.dir']] - if docs.get('userdoc.ignore', '').strip(): - tpl.extend(["global-exclude %s" % item - for item in docs['userdoc.ignore'].split() - ]) - strip = int(docs.get('userdoc.strip', '') or 0) - result.append(_data.Documentation.from_templates(*tpl, **{ - 'strip': strip, - 'prefix': 'share/doc/%s' % name, - 'preserve': 1, - })) - if docs.get('apidoc.dir', '').strip(): - tpl = ['recursive-include %s *' % docs['apidoc.dir']] - if docs.get('apidoc.ignore', '').strip(): - tpl.extend(["global-exclude %s" % item - for item in docs['apidoc.ignore'].split() - ]) - strip = int(docs.get('apidoc.strip', '') or 0) - result.append(_data.Documentation.from_templates(*tpl, **{ - 'strip': strip, - 'prefix': 'share/doc/%s' % name, - 'preserve': 1, - })) - if docs.get('man', '').strip(): - result.extend(_data.Manpages.dispatch(docs['man'].split())) - return result - - -def make_manifest(manifest, config, docs, kwargs): - """ Create file list to pack up """ - # pylint: disable = R0912 - kwargs = kwargs.copy() - kwargs['script_args'] = ['install'] - kwargs['packages'] = list(kwargs.get('packages') or ()) + [ - '_setup', '_setup.py2', '_setup.py3', - ] + list(manifest.get('packages.extra', '').split() or ()) - _core._setup_stop_after = "commandline" - try: - dist = _core.setup(**kwargs) - finally: - _core._setup_stop_after = None - - result = ['MANIFEST', 'PKG-INFO', 'setup.py'] + list(config) - # TODO: work with default values: - for key in ('classifiers', 'description', 'summary', 'provides', - 'license'): - filename = docs.get('meta.' + key, '').strip() - if filename and _os.path.isfile(filename): - result.append(filename) - - cmd = dist.get_command_obj("build_py") - cmd.ensure_finalized() - #from pprint import pprint; pprint(("build_py", cmd.get_source_files())) - for item in cmd.get_source_files(): - result.append(_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - )) - - cmd = dist.get_command_obj("build_ext") - cmd.ensure_finalized() - #from pprint import pprint; pprint(("build_ext", cmd.get_source_files())) - for item in cmd.get_source_files(): - result.append(_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - )) - for ext in cmd.extensions: - if ext.depends: - result.extend([_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - ) for item in ext.depends]) - - cmd = dist.get_command_obj("build_clib") - cmd.ensure_finalized() - if cmd.libraries: - #import pprint; pprint.pprint(("build_clib", cmd.get_source_files())) - for item in cmd.get_source_files(): - result.append(_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - )) - for lib in cmd.libraries: - if lib[1].get('depends'): - result.extend([_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - ) for item in lib[1]['depends']]) - - cmd = dist.get_command_obj("build_scripts") - cmd.ensure_finalized() - #import pprint; pprint.pprint(("build_scripts", cmd.get_source_files())) - if cmd.get_source_files(): - for item in cmd.get_source_files(): - result.append(_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - )) - - cmd = dist.get_command_obj("install_data") - cmd.ensure_finalized() - #from pprint import pprint; pprint(("install_data", cmd.get_inputs())) - try: - strings = basestring - except NameError: - strings = (str, unicode) - - for item in cmd.get_inputs(): - if isinstance(item, strings): - result.append(item) - else: - result.extend(item[1]) - - for item in manifest.get('dist', '').split(): - result.append(item) - if _os.path.isdir(item): - for filename in _shell.files(item): - result.append(filename) - - result = dict([(item, None) for item in result]).keys() - result.sort() - return result - - -def run(config=('package.cfg',), ext=None, script_args=None, manifest_only=0): - """ Main runner """ - if ext is None: - ext = [] - - cfg = _util.SafeConfigParser() - cfg.read(config) - pkg = dict(cfg.items('package')) - python_min = pkg.get('python.min') or None - python_max = pkg.get('python.max') or None - check_python_version('python', python_min, python_max) - pypy_min = pkg.get('pypy.min') or None - pypy_max = pkg.get('pypy.max') or None - check_python_version('pypy', pypy_min, pypy_max) - jython_min = pkg.get('jython.min') or None - jython_max = pkg.get('jython.max') or None - check_python_version('jython', jython_min, jython_max) - - manifest = dict(cfg.items('manifest')) - try: - docs = dict(cfg.items('docs')) - except _config_parser.NoSectionError: - docs = {} - - summary, description = find_description(docs) - scripts = manifest.get('scripts', '').strip() or None - if scripts: - scripts = scripts.split() - modules = manifest.get('modules', '').strip() or None - if modules: - modules = modules.split() - keywords = docs.get('meta.keywords', '').strip() or None - if keywords: - keywords = keywords.split() - revision = pkg.get('version.revision', '').strip() - if revision: - revision = "-r%s" % (revision,) - - kwargs = { - 'name': pkg['name'], - 'version': "%s%s" % ( - pkg['version.number'], - ["", "-dev%s" % (revision,)][_util.humanbool( - 'version.dev', pkg.get('version.dev', 'false') - )], - ), - 'provides': find_provides(docs), - 'description': summary, - 'long_description': description, - 'classifiers': find_classifiers(docs), - 'keywords': keywords, - 'author': pkg['author.name'], - 'author_email': pkg['author.email'], - 'maintainer': pkg.get('maintainer.name'), - 'maintainer_email': pkg.get('maintainer.email'), - 'url': pkg.get('url.homepage'), - 'download_url': pkg.get('url.download'), - 'license': find_license(docs), - 'package_dir': {'': manifest.get('packages.lib', '.')}, - 'packages': find_packages(manifest), - 'py_modules': modules, - 'ext_modules': ext, - 'scripts': scripts, - 'script_args': script_args, - 'data_files': find_data(pkg['name'], docs), - 'cmdclass': { - 'build' : _commands.Build, - 'build_ext' : _commands.BuildExt, - 'install' : _commands.Install, - 'install_data': _commands.InstallData, - 'install_lib' : _commands.InstallLib, - } - } - for key in ('provides',): - if key not in _core.setup_keywords: - del kwargs[key] - - if manifest_only: - return make_manifest(manifest, config, docs, kwargs) - - # monkey-patch crappy manifest writer away. - from distutils.command import sdist - sdist.sdist.get_file_list = sdist.sdist.read_manifest - - return _core.setup(**kwargs) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/shell.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/shell.py deleted file mode 100644 index 4eafb9c8647..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/shell.py +++ /dev/null @@ -1,478 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007 - 2013 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================= - Shell utilities -================= - -Shell utilities. -""" -from __future__ import generators - -__author__ = u"Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -import errno as _errno -import fnmatch as _fnmatch -import os as _os -import shutil as _shutil -import sys as _sys -import tempfile as _tempfile - -cwd = _os.path.dirname(_os.path.abspath(_sys.argv[0])) - -class ExitError(RuntimeError): - """ Exit error """ - def __init__(self, code): - RuntimeError.__init__(self, code) - self.code = code - self.signal = None - - -class SignalError(ExitError): - """ Signal error """ - def __init__(self, code, signal): - ExitError.__init__(self, code) - import signal as _signal - self.signal = signal - for key, val in vars(_signal).iteritems(): - if key.startswith('SIG') and not key.startswith('SIG_'): - if val == signal: - self.signalstr = key[3:] - break - else: - self.signalstr = '%04d' % signal - - -def native(path): - """ Convert slash path to native """ - path = _os.path.sep.join(path.split('/')) - return _os.path.normpath(_os.path.join(cwd, path)) - - -def cp(src, dest): - """ Copy src to dest """ - _shutil.copy2(native(src), native(dest)) - - -def cp_r(src, dest): - """ Copy -r src to dest """ - _shutil.copytree(native(src), native(dest)) - - -def rm(dest): - """ Remove a file """ - try: - _os.unlink(native(dest)) - except OSError, e: - if _errno.ENOENT != e.errno: - raise - -def rm_rf(dest): - """ Remove a tree """ - dest = native(dest) - if _os.path.exists(dest): - for path in files(dest, '*'): - _os.chmod(native(path), 0644) - _shutil.rmtree(dest) - - -try: - mkstemp = _tempfile.mkstemp -except AttributeError: - # helpers stolen from 2.4 tempfile module - try: - import fcntl as _fcntl - except ImportError: - def _set_cloexec(fd): - """ Set close-on-exec (not implemented, but not an error) """ - # pylint: disable = W0613 - pass - else: - def _set_cloexec(fd): - """ Set close-on-exec """ - try: - flags = _fcntl.fcntl(fd, _fcntl.F_GETFD, 0) - except IOError: - pass - else: - # flags read successfully, modify - flags |= _fcntl.FD_CLOEXEC - _fcntl.fcntl(fd, _fcntl.F_SETFD, flags) - - _text_openflags = _os.O_RDWR | _os.O_CREAT | _os.O_EXCL - _text_openflags |= getattr(_os, 'O_NOINHERIT', 0) - _text_openflags |= getattr(_os, 'O_NOFOLLOW', 0) - - _bin_openflags = _text_openflags - _bin_openflags |= getattr(_os, 'O_BINARY', 0) - - def mkstemp(suffix="", prefix=_tempfile.gettempprefix(), dir=None, - text=False): - """ Create secure temp file """ - # pylint: disable = W0622 - if dir is None: - dir = _tempfile.gettempdir() - if text: - flags = _text_openflags - else: - flags = _bin_openflags - count = 100 - while count > 0: - j = _tempfile._counter.get_next() # pylint: disable = E1101, W0212 - fname = _os.path.join(dir, prefix + str(j) + suffix) - try: - fd = _os.open(fname, flags, 0600) - except OSError, e: - if e.errno == _errno.EEXIST: - count -= 1 - continue - raise - _set_cloexec(fd) - return fd, _os.path.abspath(fname) - raise IOError, (_errno.EEXIST, "No usable temporary file name found") - - -def _pipespawn(argv, env): - """ Pipe spawn """ - # pylint: disable = R0912 - import pickle as _pickle - fd, name = mkstemp('.py') - try: - _os.write(fd, (r""" -import os -import pickle -try: - import subprocess -except ImportError: - subprocess = None -import sys - -argv = pickle.loads(%(argv)s) -env = pickle.loads(%(env)s) -if 'X_JYTHON_WA_PATH' in env: - env['PATH'] = env['X_JYTHON_WA_PATH'] - -if subprocess is None: - pid = os.spawnve(os.P_NOWAIT, argv[0], argv, env) - result = os.waitpid(pid, 0)[1] -else: - p = subprocess.Popen(argv, env=env) - result = p.wait() - if result < 0: - print "\n%%d 1" %% (-result) - sys.exit(2) - -if result == 0: - sys.exit(0) -signalled = getattr(os, 'WIFSIGNALED', None) -if signalled is not None: - if signalled(result): - print "\n%%d %%d" %% (os.WTERMSIG(result), result & 7) - sys.exit(2) -print "\n%%d" %% (result & 7,) -sys.exit(3) - """.strip() + "\n") % { - 'argv': repr(_pickle.dumps(argv)), - 'env': repr(_pickle.dumps(env)), - }) - fd, _ = None, _os.close(fd) - if _sys.platform == 'win32': - argv = [] - for arg in [_sys.executable, name]: - if ' ' in arg or arg.startswith('"'): - arg = '"%s"' % arg.replace('"', '\\"') - argv.append(arg) - argv = ' '.join(argv) - shell = True - close_fds = False - else: - argv = [_sys.executable, name] - shell = False - close_fds = True - - res = 0 - try: - import subprocess - except ImportError: - import popen2 as _popen2 - proc = _popen2.Popen3(argv, False) - try: - proc.tochild.close() - result = proc.fromchild.read() - finally: - res = proc.wait() - else: - if 'X_JYTHON_WA_PATH' in env: - env['PATH'] = env['X_JYTHON_WA_PATH'] - - proc = subprocess.Popen(argv, - shell=shell, - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - close_fds=close_fds, - env=env, - ) - try: - proc.stdin.close() - result = proc.stdout.read() - finally: - res = proc.wait() - if res != 0: - if res == 2: - signal, code = map(int, result.splitlines()[-1].split()) - raise SignalError(code, signal) - elif res == 3: - code = int(result.splitlines()[-1].strip()) - raise ExitError(code) - raise ExitError(res) - - return result - finally: - try: - if fd is not None: - _os.close(fd) - finally: - _os.unlink(name) - - -def _filepipespawn(infile, outfile, argv, env): - """ File Pipe spawn """ - try: - import subprocess - except ImportError: - subprocess = None - import pickle as _pickle - fd, name = mkstemp('.py') - try: - _os.write(fd, (""" -import os -import pickle -import sys - -infile = pickle.loads(%(infile)s) -outfile = pickle.loads(%(outfile)s) -argv = pickle.loads(%(argv)s) -env = pickle.loads(%(env)s) - -if infile is not None: - infile = open(infile, 'rb') - os.dup2(infile.fileno(), 0) - infile.close() -if outfile is not None: - outfile = open(outfile, 'wb') - os.dup2(outfile.fileno(), 1) - outfile.close() - -pid = os.spawnve(os.P_NOWAIT, argv[0], argv, env) -result = os.waitpid(pid, 0)[1] -sys.exit(result & 7) - """.strip() + "\n") % { - 'infile': repr(_pickle.dumps(_os.path.abspath(infile))), - 'outfile': repr(_pickle.dumps(_os.path.abspath(outfile))), - 'argv': repr(_pickle.dumps(argv)), - 'env': repr(_pickle.dumps(env)), - }) - fd, _ = None, _os.close(fd) - if _sys.platform == 'win32': - argv = [] - for arg in [_sys.executable, name]: - if ' ' in arg or arg.startswith('"'): - arg = '"%s"' % arg.replace('"', '\\"') - argv.append(arg) - argv = ' '.join(argv) - close_fds = False - shell = True - else: - argv = [_sys.executable, name] - close_fds = True - shell = False - - if subprocess is None: - pid = _os.spawnve(_os.P_NOWAIT, argv[0], argv, env) - return _os.waitpid(pid, 0)[1] - else: - p = subprocess.Popen( - argv, env=env, shell=shell, close_fds=close_fds - ) - return p.wait() - finally: - try: - if fd is not None: - _os.close(fd) - finally: - _os.unlink(name) - - -def spawn(*argv, **kwargs): - """ Spawn a process """ - try: - import subprocess - except ImportError: - subprocess = None - - if _sys.platform == 'win32': - newargv = [] - for arg in argv: - if not arg or ' ' in arg or arg.startswith('"'): - arg = '"%s"' % arg.replace('"', '\\"') - newargv.append(arg) - argv = newargv - close_fds = False - shell = True - else: - close_fds = True - shell = False - - env = kwargs.get('env') - if env is None: - env = dict(_os.environ) - if 'X_JYTHON_WA_PATH' in env: - env['PATH'] = env['X_JYTHON_WA_PATH'] - - echo = kwargs.get('echo') - if echo: - print ' '.join(argv) - filepipe = kwargs.get('filepipe') - if filepipe: - return _filepipespawn( - kwargs.get('stdin'), kwargs.get('stdout'), argv, env - ) - pipe = kwargs.get('stdout') - if pipe: - return _pipespawn(argv, env) - - if subprocess is None: - pid = _os.spawnve(_os.P_NOWAIT, argv[0], argv, env) - return _os.waitpid(pid, 0)[1] - else: - p = subprocess.Popen(argv, env=env, shell=shell, close_fds=close_fds) - return p.wait() - - -try: - walk = _os.walk -except AttributeError: - # copy from python 2.4 sources (modulo docs and comments) - def walk(top, topdown=True, onerror=None): - """ directory tree walker """ - # pylint: disable = C0103 - join, isdir, islink = _os.path.join, _os.path.isdir, _os.path.islink - listdir, error = _os.listdir, _os.error - - try: - names = listdir(top) - except error, err: - if onerror is not None: - onerror(err) - return - - dirs, nondirs = [], [] - for name in names: - if isdir(join(top, name)): - dirs.append(name) - else: - nondirs.append(name) - - if topdown: - yield top, dirs, nondirs - for name in dirs: - path = join(top, name) - if not islink(path): - for x in walk(path, topdown, onerror): - yield x - if not topdown: - yield top, dirs, nondirs - - -def files(base, wildcard='[!.]*', recursive=1, prune=('.git', '.svn', 'CVS')): - """ Determine a filelist """ - for dirpath, dirnames, filenames in walk(native(base)): - for item in prune: - if item in dirnames: - dirnames.remove(item) - - filenames.sort() - for name in _fnmatch.filter(filenames, wildcard): - dest = _os.path.join(dirpath, name) - if dest.startswith(cwd): - dest = dest.replace(cwd, '', 1) - aslist = [] - head, tail = _os.path.split(dest) - while tail: - aslist.append(tail) - head, tail = _os.path.split(head) - aslist.reverse() - dest = '/'.join(aslist) - yield dest - - if not recursive: - break - dirnames.sort() - - -def dirs(base, wildcard='[!.]*', recursive=1, prune=('.git', '.svn', 'CVS')): - """ Determine a filelist """ - for dirpath, dirnames, filenames in walk(native(base)): - for item in prune: - if item in dirnames: - dirnames.remove(item) - - dirnames.sort() - for name in _fnmatch.filter(dirnames, wildcard): - dest = _os.path.join(dirpath, name) - if dest.startswith(cwd): - dest = dest.replace(cwd, '', 1) - aslist = [] - head, tail = _os.path.split(dest) - while tail: - aslist.append(tail) - head, tail = _os.path.split(head) - aslist.reverse() - dest = '/'.join(aslist) - yield dest - - if not recursive: - break - - -def frompath(executable): - """ Find executable in PATH """ - # Based on distutils.spawn.find_executable. - path = _os.environ.get('PATH', '') - paths = [ - _os.path.expanduser(item) - for item in path.split(_os.pathsep) - ] - ext = _os.path.splitext(executable)[1] - exts = [''] - if _sys.platform == 'win32' or _os.name == 'os2': - eext = ['.exe', '.bat', '.py'] - if ext not in eext: - exts.extend(eext) - - for ext in exts: - if not _os.path.isfile(executable + ext): - for path in paths: - fname = _os.path.join(path, executable + ext) - if _os.path.isfile(fname): - # the file exists, we have a shot at spawn working - return fname - else: - return executable + ext - - return None diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/term/__init__.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/term/__init__.py deleted file mode 100644 index 4e50ec37493..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/term/__init__.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -===================== - Package _setup.term -===================== - -Terminal tools, not distributed. -""" -__author__ = u"Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -# pylint: disable = W0611 -from _setup.term._term import terminfo, write, green, red, yellow, announce diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/term/_term.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/term/_term.py deleted file mode 100644 index 72b727c1a95..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/term/_term.py +++ /dev/null @@ -1,115 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================= - Terminal writer -================= -""" -__author__ = u"Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -import sys as _sys - - -class _INFO(dict): - """ Terminal info dict """ - - def __init__(self): - """ Initialization """ - dict.__init__(self, { - 'NORMAL': '', - 'BOLD': '', - 'ERASE': '\n', - 'RED': '', - 'YELLOW': '', - 'GREEN': '', - }) - try: - import curses as _curses - except ImportError: - # fixup if a submodule of curses failed. - if 'curses' in _sys.modules: - del _sys.modules['curses'] - else: - try: - _curses.setupterm() - except (TypeError, _curses.error): - pass - else: - def make_color(color): - """ Make color control string """ - seq = _curses.tigetstr('setaf') - if seq is not None: - # XXX may fail - need better logic - seq = seq.replace("%p1", "") % color - return seq - - self['NORMAL'] = _curses.tigetstr('sgr0') - self['BOLD'] = _curses.tigetstr('bold') - - erase = _curses.tigetstr('el1') - if erase is not None: - self['ERASE'] = erase + _curses.tigetstr('cr') - - self['RED'] = make_color(_curses.COLOR_RED) - self['YELLOW'] = make_color(_curses.COLOR_YELLOW) - self['GREEN'] = make_color(_curses.COLOR_GREEN) - - def __getitem__(self, key): - """ Deliver always """ - dict.get(self, key) or "" - - -def terminfo(): - """ Get info singleton """ - # pylint: disable = E1101, W0612 - if terminfo.info is None: - terminfo.info = _INFO() - return terminfo.info -terminfo.info = None - - -def write(fmt, **kwargs): - """ Write stuff on the terminal """ - parm = dict(terminfo()) - parm.update(kwargs) - _sys.stdout.write(fmt % parm) - _sys.stdout.flush() - - -def green(bmt, **kwargs): - """ Write something in green on screen """ - announce("%%(GREEN)s%s%%(NORMAL)s" % bmt, **kwargs) - - -def red(bmt, **kwargs): - """ Write something in red on the screen """ - announce("%%(BOLD)s%%(RED)s%s%%(NORMAL)s" % bmt, **kwargs) - - -def yellow(fmt, **kwargs): - """ Write something in yellow on the screen """ - announce("%%(BOLD)s%%(YELLOW)s%s%%(NORMAL)s" % fmt, **kwargs) - - -def announce(fmt, **kwargs): - """ Announce something """ - write(fmt, **kwargs) - _sys.stdout.write("\n") - _sys.stdout.flush() - - diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/util.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/util.py deleted file mode 100644 index 5c05fac6e4c..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py2/util.py +++ /dev/null @@ -1,73 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================= - Setup utilities -================= - -Setup utilities. -""" -__author__ = u"Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -try: - from distutils import log -except ImportError: - class log(object): - def info(self, value): - print value - def debug(self, value): - pass - log = log() - -from distutils import util as _util -try: - from ConfigParser import SafeConfigParser -except ImportError: - import ConfigParser as _config_parser - class SafeConfigParser(_config_parser.ConfigParser): - """ Safe config parser """ - def _interpolate(self, section, option, rawval, vars): - return rawval - - def items(self, section): - return [(key, self.get(section, key)) - for key in self.options(section) - ] - - -def humanbool(name, value): - """ - Determine human boolean value - - :Parameters: - `name` : ``str`` - The config key (used for error message) - - `value` : ``str`` - The config value - - :Return: The boolean value - :Rtype: ``bool`` - - :Exceptions: - - `ValueError` : The value could not be recognized - """ - try: - return _util.strtobool(str(value).strip().lower() or 'no') - except ValueError: - raise ValueError("Unrecognized config value: %s = %s" % (name, value)) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/__init__.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/__init__.py deleted file mode 100644 index 6139d510a10..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================ - Package _setup -================ - -This package provides tools for main package setup. -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -from _setup.setup import run # pylint: disable = W0611 diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/commands.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/commands.py deleted file mode 100644 index 7bfacbc86ef..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/commands.py +++ /dev/null @@ -1,266 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -=================== - Command extenders -=================== - -Command extenders. -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" -__test__ = False - -from distutils import fancy_getopt as _fancy_getopt -from distutils import log -from distutils.command import build as _build -from distutils.command import build_ext as _build_ext -from distutils.command import install as _install -from distutils.command import install_data as _install_data -from distutils.command import install_lib as _install_lib -import os as _os - -_option_defaults = {} -_option_inherits = {} -_option_finalizers = {} -_command_mapping = { - 'install': 'Install', - 'install_data': 'InstallData', - 'install_lib': 'InstallLib', - 'build': 'Build', - 'build_ext': 'BuildExt', -} - - -def add_option(command, long_name, help_text, short_name=None, default=None, - inherit=None): - """ Add an option """ - try: - command_class = globals()[_command_mapping[command]] - except KeyError: - raise ValueError("Unknown command %r" % (command,)) - for opt in command_class.user_options: - if opt[0] == long_name: - break - else: - opt = (long_name, short_name, help_text) - command_class.user_options.append(opt) - if not long_name.endswith('='): - command_class.boolean_options.append(long_name) - attr_name = _fancy_getopt.translate_longopt(long_name) - else: - attr_name = _fancy_getopt.translate_longopt(long_name[:-1]) - if command not in _option_defaults: - _option_defaults[command] = [] - if inherit is not None: - if isinstance(inherit, str): - inherit = [inherit] - for i_inherit in inherit: - add_option( - i_inherit, long_name, help_text, short_name, default - ) - default = None - if command not in _option_inherits: - _option_inherits[command] = [] - for i_inherit in inherit: - for i_command, opt_name in _option_inherits[command]: - if i_command == i_inherit and opt_name == attr_name: - break - else: - _option_inherits[command].append((i_inherit, attr_name)) - _option_defaults[command].append((attr_name, default)) - - -def add_finalizer(command, key, func): - """ Add finalizer """ - if command not in _option_finalizers: - _option_finalizers[command] = {} - if key not in _option_finalizers[command]: - _option_finalizers[command][key] = func - - -class Install(_install.install): - """ Extended installer to reflect the additional data options """ - user_options = _install.install.user_options + [ - ('single-version-externally-managed', None, - "Compat option. Does not a thing."), - ] - boolean_options = _install.install.boolean_options + [ - 'single-version-externally-managed' - ] - - def initialize_options(self): - """ Prepare for new options """ - _install.install.initialize_options(self) - self.single_version_externally_managed = None - if 'install' in _option_defaults: - for opt_name, default in _option_defaults['install']: - setattr(self, opt_name, default) - - def finalize_options(self): - """ Finalize options """ - _install.install.finalize_options(self) - if 'install' in _option_inherits: - for parent, opt_name in _option_inherits['install']: - self.set_undefined_options(parent, (opt_name, opt_name)) - if 'install' in _option_finalizers: - for func in list(_option_finalizers['install'].values()): - func(self) - - -class InstallData(_install_data.install_data): - """ Extended data installer """ - user_options = _install_data.install_data.user_options + [] - boolean_options = _install_data.install_data.boolean_options + [] - - def initialize_options(self): - """ Prepare for new options """ - _install_data.install_data.initialize_options(self) - if 'install_data' in _option_defaults: - for opt_name, default in _option_defaults['install_data']: - setattr(self, opt_name, default) - - def finalize_options(self): - """ Finalize options """ - _install_data.install_data.finalize_options(self) - if 'install_data' in _option_inherits: - for parent, opt_name in _option_inherits['install_data']: - self.set_undefined_options(parent, (opt_name, opt_name)) - if 'install_data' in _option_finalizers: - for func in list(_option_finalizers['install_data'].values()): - func(self) - - -class InstallLib(_install_lib.install_lib): - """ Extended lib installer """ - user_options = _install_lib.install_lib.user_options + [] - boolean_options = _install_lib.install_lib.boolean_options + [] - - def initialize_options(self): - """ Prepare for new options """ - _install_lib.install_lib.initialize_options(self) - if 'install_lib' in _option_defaults: - for opt_name, default in _option_defaults['install_lib']: - setattr(self, opt_name, default) - - def finalize_options(self): - """ Finalize options """ - _install_lib.install_lib.finalize_options(self) - if 'install_lib' in _option_inherits: - for parent, opt_name in _option_inherits['install_lib']: - self.set_undefined_options(parent, (opt_name, opt_name)) - if 'install_lib' in _option_finalizers: - for func in list(_option_finalizers['install_lib'].values()): - func(self) - - -class BuildExt(_build_ext.build_ext): - """ - Extended extension builder class - - This class allows extensions to provide a ``check_prerequisites`` method - which is called before actually building it. The method takes the - `BuildExt` instance and returns whether the extension should be skipped or - not. - """ - - def initialize_options(self): - """ Prepare for new options """ - _build_ext.build_ext.initialize_options(self) - if 'build_ext' in _option_defaults: - for opt_name, default in _option_defaults['build_ext']: - setattr(self, opt_name, default) - - def finalize_options(self): - """ Finalize options """ - _build_ext.build_ext.finalize_options(self) - if 'build_ext' in _option_inherits: - for parent, opt_name in _option_inherits['build_ext']: - self.set_undefined_options(parent, (opt_name, opt_name)) - if 'build_ext' in _option_finalizers: - for func in list(_option_finalizers['build_ext'].values()): - func(self) - - def build_extension(self, ext): - """ - Build C extension - with extended functionality - - The following features are added here: - - - ``ext.check_prerequisites`` is called before the extension is being - built. See `Extension` for details. If the method does not exist, - simply no check will be run. - - The macros ``EXT_PACKAGE`` and ``EXT_MODULE`` will be filled (or - unset) depending on the extensions name, but only if they are not - already defined. - - :Parameters: - `ext` : `Extension` - The extension to build. If it's a pure - ``distutils.core.Extension``, simply no prequisites check is - applied. - - :Return: whatever ``distutils.command.build_ext.build_ext`` returns - :Rtype: any - """ - # handle name macros - macros = dict(ext.define_macros or ()) - tup = ext.name.split('.') - if len(tup) == 1: - pkg, mod = None, tup[0] - else: - pkg, mod = '.'.join(tup[:-1]), tup[-1] - if pkg is not None and 'EXT_PACKAGE' not in macros: - ext.define_macros.append(('EXT_PACKAGE', pkg)) - if 'EXT_MODULE' not in macros: - ext.define_macros.append(('EXT_MODULE', mod)) - if pkg is None: - macros = dict(ext.undef_macros or ()) - if 'EXT_PACKAGE' not in macros: - ext.undef_macros.append('EXT_PACKAGE') - - # handle prereq checks - try: - checker = ext.check_prerequisites - except AttributeError: - pass - else: - if checker(self): - log.info("Skipping %s extension" % ext.name) - return - - return _build_ext.build_ext.build_extension(self, ext) - - -class Build(_build.build): - - def initialize_options(self): - """ Prepare for new options """ - _build.build.initialize_options(self) - if 'build' in _option_defaults: - for opt_name, default in _option_defaults['build']: - setattr(self, opt_name, default) - - def finalize_options(self): - """ Finalize options """ - _build.build.finalize_options(self) - if 'build' in _option_inherits: - for parent, opt_name in _option_inherits['build']: - self.set_undefined_options(parent, (opt_name, opt_name)) - if 'build' in _option_finalizers: - for func in list(_option_finalizers['build'].values()): - func(self) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/data.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/data.py deleted file mode 100644 index d4221735768..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/data.py +++ /dev/null @@ -1,165 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -=================== - Data distribution -=================== - -This module provides tools to simplify data distribution. -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -from distutils import filelist as _filelist -import os as _os -import posixpath as _posixpath -import sys as _sys - -from _setup import commands as _commands - - -def splitpath(path): - """ Split a path """ - drive, path = '', _os.path.normpath(path) - try: - splitunc = _os.path.splitunc - except AttributeError: - pass - else: - drive, path = splitunc(path) - if not drive: - drive, path = _os.path.splitdrive(path) - elems = [] - try: - sep = _os.path.sep - except AttributeError: - sep = _os.path.join('1', '2')[1:-1] - while 1: - prefix, path = _os.path.split(path) - elems.append(path) - if prefix in ('', sep): - drive = _os.path.join(drive, prefix) - break - path = prefix - elems.reverse() - return drive, elems - - -def finalizer(installer): - """ Finalize install_data """ - data_files = [] - for item in installer.data_files: - if not isinstance(item, Data): - data_files.append(item) - continue - data_files.extend(item.flatten(installer)) - installer.data_files = data_files - - -class Data(object): - """ File list container """ - - def __init__(self, files, target=None, preserve=0, strip=0, - prefix=None): - """ Initialization """ - self._files = files - self._target = target - self._preserve = preserve - self._strip = strip - self._prefix = prefix - self.fixup_commands() - - def fixup_commands(self): - pass - - def from_templates(cls, *templates, **kwargs): - """ Initialize from template """ - files = _filelist.FileList() - for tpl in templates: - for line in tpl.split(';'): - files.process_template_line(line.strip()) - files.sort() - files.remove_duplicates() - result = [] - for filename in files.files: - _, elems = splitpath(filename) - if '.svn' in elems or '.git' in elems: - continue - result.append(filename) - return cls(result, **kwargs) - from_templates = classmethod(from_templates) - - def flatten(self, installer): - """ Flatten the file list to (target, file) tuples """ - # pylint: disable = W0613 - if self._prefix: - _, prefix = splitpath(self._prefix) - telems = prefix - else: - telems = [] - - tmap = {} - for fname in self._files: - (_, name), target = splitpath(fname), telems - if self._preserve: - if self._strip: - name = name[max(0, min(self._strip, len(name) - 1)):] - if len(name) > 1: - target = telems + name[:-1] - tmap.setdefault(_posixpath.join(*target), []).append(fname) - return list(tmap.items()) - - -class Documentation(Data): - """ Documentation container """ - - def fixup_commands(self): - _commands.add_option('install_data', 'without-docs', - help_text='Do not install documentation files', - inherit='install', - ) - _commands.add_finalizer('install_data', 'documentation', finalizer) - - def flatten(self, installer): - """ Check if docs should be installed at all """ - if installer.without_docs: - return [] - return Data.flatten(self, installer) - - -class Manpages(Documentation): - """ Manpages container """ - - def dispatch(cls, files): - """ Automatically dispatch manpages to their target directories """ - mpmap = {} - for manpage in files: - normalized = _os.path.normpath(manpage) - _, ext = _os.path.splitext(normalized) - if ext.startswith(_os.path.extsep): - ext = ext[len(_os.path.extsep):] - mpmap.setdefault(ext, []).append(manpage) - return [cls(manpages, prefix=_posixpath.join( - 'share', 'man', 'man%s' % section, - )) for section, manpages in list(mpmap.items())] - dispatch = classmethod(dispatch) - - def flatten(self, installer): - """ Check if manpages are suitable """ - if _sys.platform == 'win32': - return [] - return Documentation.flatten(self, installer) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/dist.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/dist.py deleted file mode 100644 index cce21e57a63..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/dist.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================ - dist utilities -================ - -dist utilities. -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -import sys as _sys - -from _setup import shell as _shell - - -def run_setup(*args, **kwargs): - """ Run setup """ - if 'setup' in kwargs: - script = kwargs.get('setup') or 'setup.py' - del kwargs['setup'] - else: - script = 'setup.py' - if 'fakeroot' in kwargs: - fakeroot = kwargs['fakeroot'] - del kwargs['fakeroot'] - else: - fakeroot = None - if kwargs: - raise TypeError("Unrecognized keyword parameters") - - script = _shell.native(script) - argv = [_sys.executable, script] + list(args) - if fakeroot: - argv.insert(0, fakeroot) - return not _shell.spawn(*argv) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/ext.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/ext.py deleted file mode 100644 index 852c466547e..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/ext.py +++ /dev/null @@ -1,253 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -=================== - C extension tools -=================== - -C extension tools. -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" -__test__ = False - -from distutils import core as _core -from distutils import errors as _distutils_errors -from distutils import log -import os as _os -import posixpath as _posixpath -import shutil as _shutil -import tempfile as _tempfile - -from _setup import commands as _commands - -def _install_finalizer(installer): - if installer.without_c_extensions: - installer.distribution.ext_modules = [] - -def _build_finalizer(builder): - if builder.without_c_extensions: - builder.extensions = [] - - -class Extension(_core.Extension): - """ - Extension with prerequisite check interface - - If your check is cacheable (during the setup run), override - `cached_check_prerequisites`, `check_prerequisites` otherwise. - - :IVariables: - `cached_check` : ``bool`` - The cached check result - """ - cached_check = None - - def __init__(self, *args, **kwargs): - """ Initialization """ - if 'depends' in kwargs: - self.depends = kwargs['depends'] or [] - else: - self.depends = [] - _core.Extension.__init__(self, *args, **kwargs) - - # add include path - included = _posixpath.join('_setup', 'include') - if included not in self.include_dirs: - self.include_dirs.append(included) - - # add cext.h to the dependencies - cext_h = _posixpath.join(included, 'cext.h') - if cext_h not in self.depends: - self.depends.append(cext_h) - - _commands.add_option('install_lib', 'without-c-extensions', - help_text='Don\'t install C extensions', - inherit='install', - ) - _commands.add_finalizer('install_lib', 'c-extensions', - _install_finalizer - ) - _commands.add_option('build_ext', 'without-c-extensions', - help_text='Don\'t build C extensions', - inherit=('build', 'install_lib'), - ) - _commands.add_finalizer('build_ext', 'c-extensions', _build_finalizer) - - def check_prerequisites(self, build): - """ - Check prerequisites - - The check should cover all dependencies needed for the extension to - be built and run. The method can do the following: - - - return a false value: the extension will be built - - return a true value: the extension will be skipped. This is useful - for optional extensions - - raise an exception. This is useful for mandatory extensions - - If the check result is cacheable (during the setup run), override - `cached_check_prerequisites` instead. - - :Parameters: - `build` : `BuildExt` - The extension builder - - :Return: Skip the extension? - :Rtype: ``bool`` - """ - if self.cached_check is None: - log.debug("PREREQ check for %s" % self.name) - self.cached_check = self.cached_check_prerequisites(build) - else: - log.debug("PREREQ check for %s (cached)" % self.name) - return self.cached_check - - def cached_check_prerequisites(self, build): - """ - Check prerequisites - - The check should cover all dependencies needed for the extension to - be built and run. The method can do the following: - - - return a false value: the extension will be built - - return a true value: the extension will be skipped. This is useful - for optional extensions - - raise an exception. This is useful for mandatory extensions - - If the check result is *not* cacheable (during the setup run), - override `check_prerequisites` instead. - - :Parameters: - `build` : `BuildExt` - The extension builder - - :Return: Skip the extension? - :Rtype: ``bool`` - """ - # pylint: disable = W0613 - log.debug("Nothing to check for %s!" % self.name) - return False - - -class ConfTest(object): - """ - Single conftest abstraction - - :IVariables: - `_tempdir` : ``str`` - The tempdir created for this test - - `src` : ``str`` - Name of the source file - - `target` : ``str`` - Target filename - - `compiler` : ``CCompiler`` - compiler instance - - `obj` : ``list`` - List of object filenames (``[str, ...]``) - """ - _tempdir = None - - def __init__(self, build, source): - """ - Initialization - - :Parameters: - `build` : ``distuils.command.build_ext.build_ext`` - builder instance - - `source` : ``str`` - Source of the file to compile - """ - self._tempdir = tempdir = _tempfile.mkdtemp() - src = _os.path.join(tempdir, 'conftest.c') - fp = open(src, 'w', encoding='utf-8') - try: - fp.write(source) - finally: - fp.close() - self.src = src - self.compiler = compiler = build.compiler - self.target = _os.path.join(tempdir, 'conftest') - self.obj = compiler.object_filenames([src], output_dir=tempdir) - - def __del__(self): - """ Destruction """ - self.destroy() - - def destroy(self): - """ Destroy the conftest leftovers on disk """ - tempdir, self._tempdir = self._tempdir, None - if tempdir is not None: - _shutil.rmtree(tempdir) - - def compile(self, **kwargs): - """ - Compile the conftest - - :Parameters: - `kwargs` : ``dict`` - Optional keyword parameters for the compiler call - - :Return: Was the compilation successful? - :Rtype: ``bool`` - """ - kwargs['output_dir'] = self._tempdir - try: - self.compiler.compile([self.src], **kwargs) - except _distutils_errors.CompileError: - return False - return True - - def link(self, **kwargs): - r""" - Link the conftest - - Before you can link the conftest objects they need to be `compile`\d. - - :Parameters: - `kwargs` : ``dict`` - Optional keyword parameters for the linker call - - :Return: Was the linking successful? - :Rtype: ``bool`` - """ - try: - self.compiler.link_executable(self.obj, self.target, **kwargs) - except _distutils_errors.LinkError: - return False - return True - - def pipe(self, mode="r"): - r""" - Execute the conftest binary and connect to it using a pipe - - Before you can pipe to or from the conftest binary it needs to - be `link`\ed. - - :Parameters: - `mode` : ``str`` - Pipe mode - r/w - - :Return: The open pipe - :Rtype: ``file`` - """ - return _os.popen(self.compiler.executable_filename(self.target), mode) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/setup.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/setup.py deleted file mode 100644 index 83f1c21d544..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/setup.py +++ /dev/null @@ -1,420 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007 - 2013 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -=================== - Main setup runner -=================== - -This module provides a wrapper around the distutils core setup. -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -import configparser as _config_parser -from distutils import core as _core -import os as _os -import posixpath as _posixpath -import sys as _sys - -from _setup import commands as _commands -from _setup import data as _data -from _setup import ext as _ext -from _setup import util as _util -from _setup import shell as _shell - - -def check_python_version(impl, version_min, version_max): - """ Check python version """ - if impl == 'python': - version_info = _sys.version_info - elif impl == 'pypy': - version_info = getattr(_sys, 'pypy_version_info', None) - if not version_info: - return - elif impl == 'jython': - if not 'java' in _sys.platform.lower(): - return - version_info = _sys.version_info - else: - raise AssertionError("impl not in ('python', 'pypy', 'jython')") - - pyversion = list(map(int, version_info[:3])) - if version_min: - min_required = list( - map(int, '.'.join((version_min, '0.0.0')).split('.')[:3]) - ) - if pyversion < min_required: - raise EnvironmentError("Need at least %s %s (vs. %s)" % ( - impl, version_min, '.'.join(map(str, pyversion)) - )) - if version_max: - max_required = list(map(int, version_max.split('.'))) - max_required[-1] += 1 - if pyversion >= max_required: - raise EnvironmentError("Need at max %s %s (vs. %s)" % ( - impl, - version_max, - '.'.join(map(str, pyversion)) - )) - - -def find_description(docs): - """ - Determine the package description from DESCRIPTION - - :Parameters: - `docs` : ``dict`` - Docs config section - - :Return: Tuple of summary, description and license - (``('summary', 'description', 'license')``) - (all may be ``None``) - :Rtype: ``tuple`` - """ - summary = None - filename = docs.get('meta.summary', 'SUMMARY').strip() - if filename and _os.path.isfile(filename): - fp = open(filename, encoding='utf-8') - try: - try: - summary = fp.read().strip().splitlines()[0].rstrip() - except IndexError: - summary = '' - finally: - fp.close() - - description = None - filename = docs.get('meta.description', 'DESCRIPTION').strip() - if filename and _os.path.isfile(filename): - fp = open(filename, encoding='utf-8') - try: - description = fp.read().rstrip() - finally: - fp.close() - - if summary is None and description: - from docutils import core - summary = core.publish_parts( - source=description, - source_path=filename, - writer_name='html', - )['title'].encode('utf-8') - - return summary, description - - -def find_classifiers(docs): - """ - Determine classifiers from CLASSIFIERS - - :return: List of classifiers (``['classifier', ...]``) - :rtype: ``list`` - """ - filename = docs.get('meta.classifiers', 'CLASSIFIERS').strip() - if filename and _os.path.isfile(filename): - fp = open(filename, encoding='utf-8') - try: - content = fp.read() - finally: - fp.close() - content = [item.strip() for item in content.splitlines()] - return [item for item in content if item and not item.startswith('#')] - return [] - - -def find_provides(docs): - """ - Determine provides from PROVIDES - - :return: List of provides (``['provides', ...]``) - :rtype: ``list`` - """ - filename = docs.get('meta.provides', 'PROVIDES').strip() - if filename and _os.path.isfile(filename): - fp = open(filename, encoding='utf-8') - try: - content = fp.read() - finally: - fp.close() - content = [item.strip() for item in content.splitlines()] - return [item for item in content if item and not item.startswith('#')] - return [] - - -def find_license(docs): - """ - Determine license from LICENSE - - :return: License text - :rtype: ``str`` - """ - filename = docs.get('meta.license', 'LICENSE').strip() - if filename and _os.path.isfile(filename): - fp = open(filename, encoding='utf-8') - try: - return fp.read().rstrip() - finally: - fp.close() - return None - - -def find_packages(manifest): - """ Determine packages and subpackages """ - packages = {} - collect = manifest.get('packages.collect', '').split() - lib = manifest.get('packages.lib', '.') - try: - sep = _os.path.sep - except AttributeError: - sep = _os.path.join('1', '2')[1:-1] - for root in collect: - for dirpath, _, filenames in _shell.walk(_os.path.join(lib, root)): - if dirpath.find('.svn') >= 0 or dirpath.find('.git') >= 0: - continue - if '__init__.py' in filenames: - packages[ - _os.path.normpath(dirpath).replace(sep, '.') - ] = None - packages = list(packages.keys()) - packages.sort() - return packages - - -def find_data(name, docs): - """ Determine data files """ - result = [] - if docs.get('extra', '').strip(): - result.append(_data.Documentation(docs['extra'].split(), - prefix='share/doc/%s' % name, - )) - if docs.get('examples.dir', '').strip(): - tpl = ['recursive-include %s *' % docs['examples.dir']] - if docs.get('examples.ignore', '').strip(): - tpl.extend(["global-exclude %s" % item - for item in docs['examples.ignore'].split() - ]) - strip = int(docs.get('examples.strip', '') or 0) - result.append(_data.Documentation.from_templates(*tpl, **{ - 'strip': strip, - 'prefix': 'share/doc/%s' % name, - 'preserve': 1, - })) - if docs.get('userdoc.dir', '').strip(): - tpl = ['recursive-include %s *' % docs['userdoc.dir']] - if docs.get('userdoc.ignore', '').strip(): - tpl.extend(["global-exclude %s" % item - for item in docs['userdoc.ignore'].split() - ]) - strip = int(docs.get('userdoc.strip', '') or 0) - result.append(_data.Documentation.from_templates(*tpl, **{ - 'strip': strip, - 'prefix': 'share/doc/%s' % name, - 'preserve': 1, - })) - if docs.get('apidoc.dir', '').strip(): - tpl = ['recursive-include %s *' % docs['apidoc.dir']] - if docs.get('apidoc.ignore', '').strip(): - tpl.extend(["global-exclude %s" % item - for item in docs['apidoc.ignore'].split() - ]) - strip = int(docs.get('apidoc.strip', '') or 0) - result.append(_data.Documentation.from_templates(*tpl, **{ - 'strip': strip, - 'prefix': 'share/doc/%s' % name, - 'preserve': 1, - })) - if docs.get('man', '').strip(): - result.extend(_data.Manpages.dispatch(docs['man'].split())) - return result - - -def make_manifest(manifest, config, docs, kwargs): - """ Create file list to pack up """ - # pylint: disable = R0912 - kwargs = kwargs.copy() - kwargs['script_args'] = ['install'] - kwargs['packages'] = list(kwargs.get('packages') or ()) + [ - '_setup', '_setup.py2', '_setup.py3', - ] + list(manifest.get('packages.extra', '').split() or ()) - _core._setup_stop_after = "commandline" - try: - dist = _core.setup(**kwargs) - finally: - _core._setup_stop_after = None - - result = ['MANIFEST', 'PKG-INFO', 'setup.py'] + list(config) - # TODO: work with default values: - for key in ('classifiers', 'description', 'summary', 'provides', - 'license'): - filename = docs.get('meta.' + key, '').strip() - if filename and _os.path.isfile(filename): - result.append(filename) - - cmd = dist.get_command_obj("build_py") - cmd.ensure_finalized() - #from pprint import pprint; pprint(("build_py", cmd.get_source_files())) - for item in cmd.get_source_files(): - result.append(_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - )) - - cmd = dist.get_command_obj("build_ext") - cmd.ensure_finalized() - #from pprint import pprint; pprint(("build_ext", cmd.get_source_files())) - for item in cmd.get_source_files(): - result.append(_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - )) - for ext in cmd.extensions: - if ext.depends: - result.extend([_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - ) for item in ext.depends]) - - cmd = dist.get_command_obj("build_clib") - cmd.ensure_finalized() - if cmd.libraries: - #import pprint; pprint.pprint(("build_clib", cmd.get_source_files())) - for item in cmd.get_source_files(): - result.append(_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - )) - for lib in cmd.libraries: - if lib[1].get('depends'): - result.extend([_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - ) for item in lib[1]['depends']]) - - cmd = dist.get_command_obj("build_scripts") - cmd.ensure_finalized() - #import pprint; pprint.pprint(("build_scripts", cmd.get_source_files())) - if cmd.get_source_files(): - for item in cmd.get_source_files(): - result.append(_posixpath.sep.join( - _os.path.normpath(item).split(_os.path.sep) - )) - - cmd = dist.get_command_obj("install_data") - cmd.ensure_finalized() - #from pprint import pprint; pprint(("install_data", cmd.get_inputs())) - try: - strings = str - except NameError: - strings = (str, str) - - for item in cmd.get_inputs(): - if isinstance(item, strings): - result.append(item) - else: - result.extend(item[1]) - - for item in manifest.get('dist', '').split(): - result.append(item) - if _os.path.isdir(item): - for filename in _shell.files(item): - result.append(filename) - - result = list(dict([(item, None) for item in result]).keys()) - result.sort() - return result - - -def run(config=('package.cfg',), ext=None, script_args=None, manifest_only=0): - """ Main runner """ - if ext is None: - ext = [] - - cfg = _util.SafeConfigParser() - cfg.read(config, encoding='utf-8') - pkg = dict(cfg.items('package')) - python_min = pkg.get('python.min') or None - python_max = pkg.get('python.max') or None - check_python_version('python', python_min, python_max) - pypy_min = pkg.get('pypy.min') or None - pypy_max = pkg.get('pypy.max') or None - check_python_version('pypy', pypy_min, pypy_max) - jython_min = pkg.get('jython.min') or None - jython_max = pkg.get('jython.max') or None - check_python_version('jython', jython_min, jython_max) - - manifest = dict(cfg.items('manifest')) - try: - docs = dict(cfg.items('docs')) - except _config_parser.NoSectionError: - docs = {} - - summary, description = find_description(docs) - scripts = manifest.get('scripts', '').strip() or None - if scripts: - scripts = scripts.split() - modules = manifest.get('modules', '').strip() or None - if modules: - modules = modules.split() - keywords = docs.get('meta.keywords', '').strip() or None - if keywords: - keywords = keywords.split() - revision = pkg.get('version.revision', '').strip() - if revision: - revision = "-r%s" % (revision,) - - kwargs = { - 'name': pkg['name'], - 'version': "%s%s" % ( - pkg['version.number'], - ["", "-dev%s" % (revision,)][_util.humanbool( - 'version.dev', pkg.get('version.dev', 'false') - )], - ), - 'provides': find_provides(docs), - 'description': summary, - 'long_description': description, - 'classifiers': find_classifiers(docs), - 'keywords': keywords, - 'author': pkg['author.name'], - 'author_email': pkg['author.email'], - 'maintainer': pkg.get('maintainer.name'), - 'maintainer_email': pkg.get('maintainer.email'), - 'url': pkg.get('url.homepage'), - 'download_url': pkg.get('url.download'), - 'license': find_license(docs), - 'package_dir': {'': manifest.get('packages.lib', '.')}, - 'packages': find_packages(manifest), - 'py_modules': modules, - 'ext_modules': ext, - 'scripts': scripts, - 'script_args': script_args, - 'data_files': find_data(pkg['name'], docs), - 'cmdclass': { - 'build' : _commands.Build, - 'build_ext' : _commands.BuildExt, - 'install' : _commands.Install, - 'install_data': _commands.InstallData, - 'install_lib' : _commands.InstallLib, - } - } - for key in ('provides',): - if key not in _core.setup_keywords: - del kwargs[key] - - if manifest_only: - return make_manifest(manifest, config, docs, kwargs) - - # monkey-patch crappy manifest writer away. - from distutils.command import sdist - sdist.sdist.get_file_list = sdist.sdist.read_manifest - - return _core.setup(**kwargs) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/shell.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/shell.py deleted file mode 100644 index 91f2ebc5b40..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/shell.py +++ /dev/null @@ -1,351 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007 - 2013 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================= - Shell utilities -================= - -Shell utilities. -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -import errno as _errno -import fnmatch as _fnmatch -import os as _os -import shutil as _shutil -import subprocess as _subprocess -import sys as _sys -import tempfile as _tempfile - -cwd = _os.path.dirname(_os.path.abspath(_sys.argv[0])) - -class ExitError(RuntimeError): - """ Exit error """ - def __init__(self, code): - RuntimeError.__init__(self, code) - self.code = code - self.signal = None - - -class SignalError(ExitError): - """ Signal error """ - def __init__(self, code, signal): - ExitError.__init__(self, code) - import signal as _signal - self.signal = signal - for key, val in vars(_signal).items(): - if key.startswith('SIG') and not key.startswith('SIG_'): - if val == signal: - self.signalstr = key[3:] - break - else: - self.signalstr = '%04d' % signal - - -def native(path): - """ Convert slash path to native """ - path = _os.path.sep.join(path.split('/')) - return _os.path.normpath(_os.path.join(cwd, path)) - - -def cp(src, dest): - """ Copy src to dest """ - _shutil.copy2(native(src), native(dest)) - - -def cp_r(src, dest): - """ Copy -r src to dest """ - _shutil.copytree(native(src), native(dest)) - - -def rm(dest): - """ Remove a file """ - try: - _os.unlink(native(dest)) - except OSError as e: - if _errno.ENOENT != e.errno: - raise - -def rm_rf(dest): - """ Remove a tree """ - dest = native(dest) - if _os.path.exists(dest): - for path in files(dest, '*'): - _os.chmod(native(path), 0o644) - _shutil.rmtree(dest) - - -mkstemp = _tempfile.mkstemp - - -def _pipespawn(argv, env): - """ Pipe spawn """ - # pylint: disable = R0912 - import pickle as _pickle - fd, name = mkstemp('.py') - try: - _os.write(fd, ((r""" -import os -import pickle -import subprocess -import sys - -argv = pickle.loads(%(argv)s) -env = pickle.loads(%(env)s) -if 'X_JYTHON_WA_PATH' in env: - env['PATH'] = env['X_JYTHON_WA_PATH'] - -p = subprocess.Popen(argv, env=env) -result = p.wait() -if result < 0: - print("\n%%d 1" %% (-result)) - sys.exit(2) -if result == 0: - sys.exit(0) -print("\n%%d" %% (result & 7,)) -sys.exit(3) - """.strip() + "\n") % { - 'argv': repr(_pickle.dumps(argv)), - 'env': repr(_pickle.dumps(dict(env))), - }).encode('utf-8')) - fd, _ = None, _os.close(fd) - if _sys.platform == 'win32': - argv = [] - for arg in [_sys.executable, name]: - if ' ' in arg or arg.startswith('"'): - arg = '"%s"' % arg.replace('"', '\\"') - argv.append(arg) - argv = ' '.join(argv) - shell = True - close_fds = False - else: - argv = [_sys.executable, name] - shell = False - close_fds = True - - res = 0 - if 'X_JYTHON_WA_PATH' in env: - env['PATH'] = env['X_JYTHON_WA_PATH'] - - proc = _subprocess.Popen(argv, - shell=shell, - stdin=_subprocess.PIPE, - stdout=_subprocess.PIPE, - close_fds=close_fds, - env=env, - ) - try: - proc.stdin.close() - result = proc.stdout.read() - finally: - res = proc.wait() - if res != 0: - if res == 2: - signal, code = list(map(int, result.splitlines()[-1].split())) - raise SignalError(code, signal) - elif res == 3: - code = int(result.splitlines()[-1].strip()) - raise ExitError(code) - raise ExitError(res) - - return result.decode('latin-1') - finally: - try: - if fd is not None: - _os.close(fd) - finally: - _os.unlink(name) - - -def _filepipespawn(infile, outfile, argv, env): - """ File Pipe spawn """ - import pickle as _pickle - fd, name = mkstemp('.py') - try: - _os.write(fd, ((""" -import os -import pickle -import sys - -infile = pickle.loads(%(infile)s) -outfile = pickle.loads(%(outfile)s) -argv = pickle.loads(%(argv)s) -env = pickle.loads(%(env)s) - -if infile is not None: - infile = open(infile, 'rb') - os.dup2(infile.fileno(), 0) - infile.close() -if outfile is not None: - outfile = open(outfile, 'wb') - os.dup2(outfile.fileno(), 1) - outfile.close() - -pid = os.spawnve(os.P_NOWAIT, argv[0], argv, env) -result = os.waitpid(pid, 0)[1] -sys.exit(result & 7) - """.strip() + "\n") % { - 'infile': repr(_pickle.dumps(_os.path.abspath(infile))), - 'outfile': repr(_pickle.dumps(_os.path.abspath(outfile))), - 'argv': repr(_pickle.dumps(argv)), - 'env': repr(_pickle.dumps(env)), - }).encode('utf-8')) - fd, _ = None, _os.close(fd) - if _sys.platform == 'win32': - argv = [] - for arg in [_sys.executable, name]: - if ' ' in arg or arg.startswith('"'): - arg = '"%s"' % arg.replace('"', '\\"') - argv.append(arg) - argv = ' '.join(argv) - close_fds = False - shell = True - else: - argv = [_sys.executable, name] - close_fds = True - shell = False - - p = _subprocess.Popen( - argv, env=env, shell=shell, close_fds=close_fds - ) - return p.wait() - finally: - try: - if fd is not None: - _os.close(fd) - finally: - _os.unlink(name) - - -def spawn(*argv, **kwargs): - """ Spawn a process """ - if _sys.platform == 'win32': - newargv = [] - for arg in argv: - if not arg or ' ' in arg or arg.startswith('"'): - arg = '"%s"' % arg.replace('"', '\\"') - newargv.append(arg) - argv = newargv - close_fds = False - shell = True - else: - close_fds = True - shell = False - - env = kwargs.get('env') - if env is None: - env = dict(_os.environ) - if 'X_JYTHON_WA_PATH' in env: - env['PATH'] = env['X_JYTHON_WA_PATH'] - - echo = kwargs.get('echo') - if echo: - print(' '.join(argv)) - filepipe = kwargs.get('filepipe') - if filepipe: - return _filepipespawn( - kwargs.get('stdin'), kwargs.get('stdout'), argv, env - ) - pipe = kwargs.get('stdout') - if pipe: - return _pipespawn(argv, env) - - p = _subprocess.Popen(argv, env=env, shell=shell, close_fds=close_fds) - return p.wait() - - -walk = _os.walk - - -def files(base, wildcard='[!.]*', recursive=1, prune=('.git', '.svn', 'CVS')): - """ Determine a filelist """ - for dirpath, dirnames, filenames in walk(native(base)): - for item in prune: - if item in dirnames: - dirnames.remove(item) - - filenames.sort() - for name in _fnmatch.filter(filenames, wildcard): - dest = _os.path.join(dirpath, name) - if dest.startswith(cwd): - dest = dest.replace(cwd, '', 1) - aslist = [] - head, tail = _os.path.split(dest) - while tail: - aslist.append(tail) - head, tail = _os.path.split(head) - aslist.reverse() - dest = '/'.join(aslist) - yield dest - - if not recursive: - break - dirnames.sort() - - -def dirs(base, wildcard='[!.]*', recursive=1, prune=('.git', '.svn', 'CVS')): - """ Determine a filelist """ - for dirpath, dirnames, filenames in walk(native(base)): - for item in prune: - if item in dirnames: - dirnames.remove(item) - - dirnames.sort() - for name in _fnmatch.filter(dirnames, wildcard): - dest = _os.path.join(dirpath, name) - if dest.startswith(cwd): - dest = dest.replace(cwd, '', 1) - aslist = [] - head, tail = _os.path.split(dest) - while tail: - aslist.append(tail) - head, tail = _os.path.split(head) - aslist.reverse() - dest = '/'.join(aslist) - yield dest - - if not recursive: - break - - -def frompath(executable): - """ Find executable in PATH """ - # Based on distutils.spawn.find_executable. - path = _os.environ.get('PATH', '') - paths = [ - _os.path.expanduser(item) - for item in path.split(_os.pathsep) - ] - ext = _os.path.splitext(executable)[1] - exts = [''] - if _sys.platform == 'win32' or _os.name == 'os2': - eext = ['.exe', '.bat', '.py'] - if ext not in eext: - exts.extend(eext) - - for ext in exts: - if not _os.path.isfile(executable + ext): - for path in paths: - fname = _os.path.join(path, executable + ext) - if _os.path.isfile(fname): - # the file exists, we have a shot at spawn working - return fname - else: - return executable + ext - - return None diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/term/__init__.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/term/__init__.py deleted file mode 100644 index 5459454514b..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/term/__init__.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -===================== - Package _setup.term -===================== - -Terminal tools, not distributed. -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -# pylint: disable = W0611 -from _setup.term._term import terminfo, write, green, red, yellow, announce diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/term/_term.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/term/_term.py deleted file mode 100644 index b94f58e27f1..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/term/_term.py +++ /dev/null @@ -1,116 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================= - Terminal writer -================= -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -import sys as _sys - - -class _INFO(dict): - """ Terminal info dict """ - - def __init__(self): - """ Initialization """ - dict.__init__(self, { - 'NORMAL': '', - 'BOLD': '', - 'ERASE': '\n', - 'RED': '', - 'YELLOW': '', - 'GREEN': '', - }) - try: - import curses as _curses - except ImportError: - # fixup if a submodule of curses failed. - if 'curses' in _sys.modules: - del _sys.modules['curses'] - else: - try: - _curses.setupterm() - except (TypeError, _curses.error): - pass - else: - def make_color(color): - """ Make color control string """ - seq = _curses.tigetstr('setaf').decode('ascii') - if seq is not None: - # XXX may fail - need better logic - seq = seq.replace("%p1", "") % color - return seq - - self['NORMAL'] = _curses.tigetstr('sgr0').decode('ascii') - self['BOLD'] = _curses.tigetstr('bold').decode('ascii') - - erase = _curses.tigetstr('el1').decode('ascii') - if erase is not None: - self['ERASE'] = erase + \ - _curses.tigetstr('cr').decode('ascii') - - self['RED'] = make_color(_curses.COLOR_RED) - self['YELLOW'] = make_color(_curses.COLOR_YELLOW) - self['GREEN'] = make_color(_curses.COLOR_GREEN) - - def __getitem__(self, key): - """ Deliver always """ - dict.get(self, key) or "" - - -def terminfo(): - """ Get info singleton """ - # pylint: disable = E1101, W0612 - if terminfo.info is None: - terminfo.info = _INFO() - return terminfo.info -terminfo.info = None - - -def write(fmt, **kwargs): - """ Write stuff on the terminal """ - parm = dict(terminfo()) - parm.update(kwargs) - _sys.stdout.write(fmt % parm) - _sys.stdout.flush() - - -def green(bmt, **kwargs): - """ Write something in green on screen """ - announce("%%(GREEN)s%s%%(NORMAL)s" % bmt, **kwargs) - - -def red(bmt, **kwargs): - """ Write something in red on the screen """ - announce("%%(BOLD)s%%(RED)s%s%%(NORMAL)s" % bmt, **kwargs) - - -def yellow(fmt, **kwargs): - """ Write something in yellow on the screen """ - announce("%%(BOLD)s%%(YELLOW)s%s%%(NORMAL)s" % fmt, **kwargs) - - -def announce(fmt, **kwargs): - """ Announce something """ - write(fmt, **kwargs) - _sys.stdout.write("\n") - _sys.stdout.flush() - - diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/util.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/util.py deleted file mode 100644 index a07daa812fe..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/_setup/py3/util.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: ascii -*- -# -# Copyright 2007, 2008, 2009, 2010, 2011 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -================= - Setup utilities -================= - -Setup utilities. -""" -__author__ = "Andr\xe9 Malo" -__docformat__ = "restructuredtext en" - -from distutils import util as _util -try: - from configparser import SafeConfigParser -except ImportError: - import configparser as _config_parser - class SafeConfigParser(_config_parser.ConfigParser): - """ Safe config parser """ - def _interpolate(self, section, option, rawval, vars): - return rawval - - def items(self, section): - return [(key, self.get(section, key)) - for key in self.options(section) - ] - - -def humanbool(name, value): - """ - Determine human boolean value - - :Parameters: - `name` : ``str`` - The config key (used for error message) - - `value` : ``str`` - The config value - - :Return: The boolean value - :Rtype: ``bool`` - - :Exceptions: - - `ValueError` : The value could not be recognized - """ - try: - return _util.strtobool(str(value).strip().lower() or 'no') - except ValueError: - raise ValueError("Unrecognized config value: %s = %s" % (name, value)) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/LICENSE.cssmin b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/LICENSE.cssmin deleted file mode 100644 index c10ccb05c7a..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/LICENSE.cssmin +++ /dev/null @@ -1,64 +0,0 @@ -`cssmin.py` - A Python port of the YUI CSS compressor. - -Copyright (c) 2010 Zachary Voase - -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 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. - -------------------------------------------------------------------------------- - -This software contains portions of the YUI CSS Compressor, notably some regular -expressions for reducing the size of CSS. The YUI Compressor source code can be -found at <http://github.com/yui/yuicompressor>, and is licensed as follows: - -> YUI Compressor Copyright License Agreement (BSD License) -> -> Copyright (c) 2009, Yahoo! Inc. -> All rights reserved. -> -> Redistribution and use of this software in source and binary forms, -> with or without modification, are permitted provided that the following -> conditions are met: -> -> * Redistributions of source code must retain the above -> copyright notice, this list of conditions and the -> following disclaimer. -> -> * 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. -> -> * Neither the name of Yahoo! Inc. nor the names of its -> contributors may be used to endorse or promote products -> derived from this software without specific prior -> written permission of Yahoo! Inc. -> -> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR 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. diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/__init__.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/__init__.py deleted file mode 100644 index 705dd0ccd1b..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: ascii -*- -r""" -================================= - Benchmark cssmin implementations -================================= - -Benchmark cssmin implementations. - -:Copyright: - - Copyright 2011 - 2014 - Andr\xe9 Malo or his licensors, as applicable - -:License: - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -""" -if __doc__: - __doc__ = __doc__.encode('ascii').decode('unicode_escape') diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/cssmin.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/cssmin.py deleted file mode 100644 index cbfbf8d4966..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/cssmin.py +++ /dev/null @@ -1,246 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""`cssmin` - A Python port of the YUI CSS compressor. - -:Copyright: - - Copyright 2011 - 2014 - Andr\xe9 Malo or his licensors, as applicable - -:License: - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -""" - -try: - from StringIO import StringIO # The pure-Python StringIO supports unicode. -except ImportError: - from io import StringIO -import re - - -__version__ = '0.2.0' - - -def remove_comments(css): - """Remove all CSS comment blocks.""" - - iemac = False - preserve = False - comment_start = css.find("/*") - while comment_start >= 0: - # Preserve comments that look like `/*!...*/`. - # Slicing is used to make sure we don"t get an IndexError. - preserve = css[comment_start + 2:comment_start + 3] == "!" - - comment_end = css.find("*/", comment_start + 2) - if comment_end < 0: - if not preserve: - css = css[:comment_start] - break - elif comment_end >= (comment_start + 2): - if css[comment_end - 1] == "\\": - # This is an IE Mac-specific comment; leave this one and the - # following one alone. - comment_start = comment_end + 2 - iemac = True - elif iemac: - comment_start = comment_end + 2 - iemac = False - elif not preserve: - css = css[:comment_start] + css[comment_end + 2:] - else: - comment_start = comment_end + 2 - comment_start = css.find("/*", comment_start) - - return css - - -def remove_unnecessary_whitespace(css): - """Remove unnecessary whitespace characters.""" - - def pseudoclasscolon(css): - - """ - Prevents 'p :link' from becoming 'p:link'. - - Translates 'p :link' into 'p ___PSEUDOCLASSCOLON___link'; this is - translated back again later. - """ - - regex = re.compile(r"(^|\})(([^\{\:])+\:)+([^\{]*\{)") - match = regex.search(css) - while match: - css = ''.join([ - css[:match.start()], - match.group().replace(":", "___PSEUDOCLASSCOLON___"), - css[match.end():]]) - match = regex.search(css) - return css - - css = pseudoclasscolon(css) - # Remove spaces from before things. - css = re.sub(r"\s+([!{};:>+\(\)\],])", r"\1", css) - - # If there is a `@charset`, then only allow one, and move to the beginning. - css = re.sub(r"^(.*)(@charset \"[^\"]*\";)", r"\2\1", css) - css = re.sub(r"^(\s*@charset [^;]+;\s*)+", r"\1", css) - - # Put the space back in for a few cases, such as `@media screen` and - # `(-webkit-min-device-pixel-ratio:0)`. - css = re.sub(r"\band\(", "and (", css) - - # Put the colons back. - css = css.replace('___PSEUDOCLASSCOLON___', ':') - - # Remove spaces from after things. - css = re.sub(r"([!{}:;>+\(\[,])\s+", r"\1", css) - - return css - - -def remove_unnecessary_semicolons(css): - """Remove unnecessary semicolons.""" - - return re.sub(r";+\}", "}", css) - - -def remove_empty_rules(css): - """Remove empty rules.""" - - return re.sub(r"[^\}\{]+\{\}", "", css) - - -def normalize_rgb_colors_to_hex(css): - """Convert `rgb(51,102,153)` to `#336699`.""" - - regex = re.compile(r"rgb\s*\(\s*([0-9,\s]+)\s*\)") - match = regex.search(css) - while match: - colors = map(lambda s: s.strip(), match.group(1).split(",")) - hexcolor = '#%.2x%.2x%.2x' % tuple(map(int, colors)) - css = css.replace(match.group(), hexcolor) - match = regex.search(css) - return css - - -def condense_zero_units(css): - """Replace `0(px, em, %, etc)` with `0`.""" - - return re.sub(r"([\s:])(0)(px|em|%|in|cm|mm|pc|pt|ex)", r"\1\2", css) - - -def condense_multidimensional_zeros(css): - """Replace `:0 0 0 0;`, `:0 0 0;` etc. with `:0;`.""" - - css = css.replace(":0 0 0 0;", ":0;") - css = css.replace(":0 0 0;", ":0;") - css = css.replace(":0 0;", ":0;") - - # Revert `background-position:0;` to the valid `background-position:0 0;`. - css = css.replace("background-position:0;", "background-position:0 0;") - - return css - - -def condense_floating_points(css): - """Replace `0.6` with `.6` where possible.""" - - return re.sub(r"(:|\s)0+\.(\d+)", r"\1.\2", css) - - -def condense_hex_colors(css): - """Shorten colors from #AABBCC to #ABC where possible.""" - - regex = re.compile(r"([^\"'=\s])(\s*)#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])") - match = regex.search(css) - while match: - first = match.group(3) + match.group(5) + match.group(7) - second = match.group(4) + match.group(6) + match.group(8) - if first.lower() == second.lower(): - css = css.replace(match.group(), match.group(1) + match.group(2) + '#' + first) - match = regex.search(css, match.end() - 3) - else: - match = regex.search(css, match.end()) - return css - - -def condense_whitespace(css): - """Condense multiple adjacent whitespace characters into one.""" - - return re.sub(r"\s+", " ", css) - - -def condense_semicolons(css): - """Condense multiple adjacent semicolon characters into one.""" - - return re.sub(r";;+", ";", css) - - -def wrap_css_lines(css, line_length): - """Wrap the lines of the given CSS to an approximate length.""" - - lines = [] - line_start = 0 - for i, char in enumerate(css): - # It's safe to break after `}` characters. - if char == '}' and (i - line_start >= line_length): - lines.append(css[line_start:i + 1]) - line_start = i + 1 - - if line_start < len(css): - lines.append(css[line_start:]) - return '\n'.join(lines) - - -def cssmin(css, wrap=None): - css = remove_comments(css) - css = condense_whitespace(css) - # A pseudo class for the Box Model Hack - # (see http://tantek.com/CSS/Examples/boxmodelhack.html) - css = css.replace('"\\"}\\""', "___PSEUDOCLASSBMH___") - css = remove_unnecessary_whitespace(css) - css = remove_unnecessary_semicolons(css) - css = condense_zero_units(css) - css = condense_multidimensional_zeros(css) - css = condense_floating_points(css) - css = normalize_rgb_colors_to_hex(css) - css = condense_hex_colors(css) - if wrap is not None: - css = wrap_css_lines(css, wrap) - css = css.replace("___PSEUDOCLASSBMH___", '"\\"}\\""') - css = condense_semicolons(css) - return css.strip() - - -def main(): - import optparse - import sys - - p = optparse.OptionParser( - prog="cssmin", version=__version__, - usage="%prog [--wrap N]", - description="""Reads raw CSS from stdin, and writes compressed CSS to stdout.""") - - p.add_option( - '-w', '--wrap', type='int', default=None, metavar='N', - help="Wrap output to approximately N chars per line.") - - options, args = p.parse_args() - sys.stdout.write(cssmin(sys.stdin.read(), wrap=options.wrap)) - - -if __name__ == '__main__': - main() diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/main.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/main.py deleted file mode 100644 index 078150629f2..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/main.py +++ /dev/null @@ -1,236 +0,0 @@ -#!/usr/bin/env python -# -*- coding: ascii -*- -r""" -================================== - Benchmark cssmin implementations -================================== - -Benchmark cssmin implementations. - -:Copyright: - - Copyright 2011 - 2014 - Andr\xe9 Malo or his licensors, as applicable - -:License: - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -Usage:: - - python -mbench.main [-c COUNT] [-p file] cssfile ... - - -c COUNT number of runs per cssfile and minifier. Defaults to 10. - -p file File to write the benchmark results in (pickled) - -""" -if __doc__: - __doc__ = __doc__.encode('ascii').decode('unicode_escape') -__author__ = r"Andr\xe9 Malo".encode('ascii').decode('unicode_escape') -__docformat__ = "restructuredtext en" -__license__ = "Apache License, Version 2.0" -__version__ = "1.0.0" - -import sys as _sys -import time as _time - -import_notes = [] -class _p_02__rcssmin(object): - def __init__(self): - import rcssmin - cssmin = rcssmin._make_cssmin(python_only=True) - self.cssmin = lambda x: cssmin(x, keep_bang_comments=True) - -class _p_03__rcssmin(object): - def __init__(self): - import _rcssmin - cssmin = _rcssmin.cssmin - self.cssmin = lambda x: cssmin(x, keep_bang_comments=True) - -class cssmins(object): - from bench import cssmin as p_01_cssmin - p_02_rcssmin = _p_02__rcssmin() - try: - p_03__rcssmin = _p_03__rcssmin() - except ImportError: - import_notes.append("_rcssmin (C-Port) not available") - print(import_notes[-1]) - -print("Python Release: %s" % ".".join(map(str, _sys.version_info[:3]))) -print("") - - -def slurp(filename): - """ Load a file """ - fp = open(filename) - try: - return fp.read() - finally: - fp.close() - - -def print_(*value, **kwargs): - """ Print stuff """ - (kwargs.get('file') or _sys.stdout).write( - ''.join(value) + kwargs.get('end', '\n') - ) - - -def bench(filenames, count): - """ - Benchmark the minifiers with given css samples - - :Parameters: - `filenames` : sequence - List of filenames - - `count` : ``int`` - Number of runs per css file and minifier - - :Exceptions: - - `RuntimeError` : empty filenames sequence - """ - if not filenames: - raise RuntimeError("Missing files to benchmark") - try: - xrange - except NameError: - xrange = range - try: - cmp - except NameError: - cmp = lambda a, b: (a > b) - (a < b) - - ports = [item for item in dir(cssmins) if item.startswith('p_')] - ports.sort() - space = max(map(len, ports)) - 4 - ports = [(item[5:], getattr(cssmins, item).cssmin) for item in ports] - flush = _sys.stdout.flush - - struct = [] - inputs = [(filename, slurp(filename)) for filename in filenames] - for filename, style in inputs: - print_("Benchmarking %r..." % filename, end=" ") - flush() - outputs = [] - for _, cssmin in ports: - try: - outputs.append(cssmin(style)) - except (SystemExit, KeyboardInterrupt): - raise - except: - outputs.append(None) - struct.append(dict( - filename=filename, - sizes=[ - (item is not None and len(item) or None) for item in outputs - ], - size=len(style), - messages=[], - times=[], - )) - print_("(%.1f KiB)" % (struct[-1]['size'] / 1024.0,)) - flush() - times = [] - for idx, (name, cssmin) in enumerate(ports): - if outputs[idx] is None: - print_(" FAILED %s" % (name,)) - struct[-1]['times'].append((name, None)) - else: - print_(" Timing %s%s... (%5.1f KiB %s)" % ( - name, - " " * (space - len(name)), - len(outputs[idx]) / 1024.0, - idx == 0 and '*' or ['=', '>', '<'][ - cmp(len(outputs[idx]), len(outputs[0])) - ], - ), end=" ") - flush() - - xcount = count - while True: - counted = [None for _ in xrange(xcount)] - start = _time.time() - for _ in counted: - cssmin(style) - end = _time.time() - result = (end - start) * 1000 - if result < 10: # avoid measuring within the error range - xcount *= 10 - continue - times.append(result / xcount) - break - - print_("%8.2f ms" % times[-1], end=" ") - flush() - if len(times) <= 1: - print_() - else: - print_("(factor: %s)" % (', '.join([ - '%.2f' % (timed / times[-1]) for timed in times[:-1] - ]))) - struct[-1]['times'].append((name, times[-1])) - - flush() - print_() - - return struct - - -def main(argv=None): - """ Main """ - import getopt as _getopt - import os as _os - import pickle as _pickle - - if argv is None: - argv = _sys.argv[1:] - try: - opts, args = _getopt.getopt(argv, "hc:p:", ["help"]) - except getopt.GetoptError: - e = _sys.exc_info()[0](_sys.exc_info()[1]) - print >> _sys.stderr, "%s\nTry %s -mbench.main --help" % ( - e, - _os.path.basename(_sys.executable), - ) - _sys.exit(2) - - count, pickle = 10, None - for key, value in opts: - if key in ("-h", "--help"): - print >> _sys.stderr, ( - "%s -mbench.main [-c count] [-p file] cssfile ..." % ( - _os.path.basename(_sys.executable), - ) - ) - _sys.exit(0) - elif key == '-c': - count = int(value) - elif key == '-p': - pickle = str(value) - - struct = bench(args, count) - if pickle: - fp = open(pickle, 'wb') - try: - fp.write(_pickle.dumps(( - ".".join(map(str, _sys.version_info[:3])), - import_notes, - struct, - ), 0)) - finally: - fp.close() - - -if __name__ == '__main__': - main() diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/wikipedia.css b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/wikipedia.css deleted file mode 100644 index 03079e35a6f..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/wikipedia.css +++ /dev/null @@ -1,3861 +0,0 @@ -/* - * This CSS is taken from wikipedia / mediawiki, it's the combined files of - * the vector skin described at: - * - * http://en.wikipedia.org/wiki/Wikipedia:Catalogue_of_CSS_classes - */ - -/* - * Any rules which should not be flipped automatically in right-to-left situations should be - * prepended with @noflip in a comment block. Images that should be embedded as base64 data-URLs - * should be prepended with @embed in a comment block. - * - * This style-sheet employs a few CSS trick to accomplish compatibility with a wide range of web - * browsers. The most common trick is to use some styles in IE6 only. This is accomplished by using - * a rule that makes things work in IE6, and then following it with a rule that begins with - * "html > body" or use a child selector ">", which is ignored by IE6 because it does not support - * the child selector. You can spot this by looking for the "OVERRIDDEN BY COMPLIANT BROWSERS" and - * "IGNORED BY IE6" comments. - */ - -/* Framework */ -html, -body { - height: 100%; - margin: 0; - padding: 0; - font-family: sans-serif; - font-size: 1em; -} -body { - background-color: #f3f3f3; - /* @embed */ - background-image: url(images/page-base.png); -} -/* Content */ -div#content { - margin-left: 10em; - padding: 1em; - /* @embed */ - background-image: url(images/border.png); - background-position: top left; - background-repeat: repeat-y; - background-color: white; - color: black; - direction: ltr; -} -/* Head */ -#mw-page-base { - height: 5em; - background-color: white; - /* @embed */ - background-image: url(images/page-fade.png); - background-position: bottom left; - background-repeat: repeat-x; -} -#mw-head-base { - margin-top: -5em; - margin-left: 10em; - height: 5em; - /* @embed */ - background-image: url(images/border.png); - background-position: bottom left; - background-repeat: repeat-x; -} -div#mw-head { - position: absolute; - top: 0; - right: 0; - width: 100%; -} -div#mw-head h5 { - margin: 0; - padding: 0; -} -/* Hide empty portlets */ -div.emptyPortlet { - display: none; -} -/* Personal */ -#p-personal { - position: absolute; - top: 0; - right: 0.75em; -} -#p-personal h5 { - display: none; -} -#p-personal ul { - list-style: none; - margin: 0; - padding-left: 10em; /* Keep from overlapping logo */ -} -/* @noflip */ -#p-personal li { - line-height: 1.125em; - float: left; -} -/* This one flips! */ -#p-personal li { - margin-left: 0.75em; - margin-top: 0.5em; - font-size: 0.75em; - white-space: nowrap; -} -/* Navigation Containers */ -#left-navigation { - position: absolute; - left: 10em; - top: 2.5em; -} -#right-navigation { - float: right; - margin-top: 2.5em; -} -/* Navigation Labels */ -div.vectorTabs h5, -div.vectorMenu h5 span { - display: none; -} -/* Namespaces and Views */ -/* @noflip */ -div.vectorTabs { - float: left; - height: 2.5em; -} -div.vectorTabs { - /* @embed */ - background-image: url(images/tab-break.png); - background-position: bottom left; - background-repeat: no-repeat; - padding-left: 1px; -} -/* @noflip */ -div.vectorTabs ul { - float: left; -} -div.vectorTabs ul { - height: 100%; - list-style: none; - margin: 0; - padding: 0; -} -/* @noflip */ -div.vectorTabs ul li { - float: left; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -div.vectorTabs ul li { - line-height: 1.125em; - display: inline-block; - height: 100%; - margin: 0; - padding: 0; - background-color: #f3f3f3; - /* @embed */ - background-image: url(images/tab-normal-fade.png); - background-position: bottom left; - background-repeat: repeat-x; - white-space:nowrap; -} -/* IGNORED BY IE6 */ -div.vectorTabs ul > li { - display: block; -} -div.vectorTabs li.selected { - /* @embed */ - background-image: url(images/tab-current-fade.png); -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -div.vectorTabs li a { - display: inline-block; - height: 1.9em; - padding-left: 0.5em; - padding-right: 0.5em; - color: #0645ad; - cursor: pointer; - font-size: 0.8em; -} -/* IGNORED BY IE6 */ -div.vectorTabs li > a { - display: block; -} -div.vectorTabs li.icon a { - background-position: bottom right; - background-repeat: no-repeat; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -div.vectorTabs span a { - display: inline-block; - padding-top: 1.25em; -} -/* IGNORED BY IE6 */ -/* @noflip */ -div.vectorTabs span > a { - float: left; - display: block; -} -div.vectorTabs span { - display: inline-block; - /* @embed */ - background-image: url(images/tab-break.png); - background-position: bottom right; - background-repeat: no-repeat; -} -div.vectorTabs li.selected a, -div.vectorTabs li.selected a:visited{ - color: #333333; - text-decoration: none; -} -div.vectorTabs li.new a, -div.vectorTabs li.new a:visited{ - color: #a55858; -} -/* Variants and Actions */ -/* @noflip */ -div.vectorMenu { - direction: ltr; - float: left; - /* @embed */ - background-image: url(images/arrow-down-icon.png); - background-position: 100% 60%; - background-repeat: no-repeat; - cursor: pointer; -} -div.vectorMenuFocus { - /* @embed */ - background-image: url(images/arrow-down-focus-icon.png); - background-position: 100% 60%; -} -/* @noflip */ -body.rtl div.vectorMenu { - direction: rtl; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -/* @noflip */ -div#mw-head div.vectorMenu h5 { - float: left; - /* @embed */ - background-image: url(images/tab-break.png); - background-repeat: no-repeat; -} -/* This will be flipped - unlike the one above it */ -div#mw-head div.vectorMenu h5 { - background-position: bottom left; - margin-left: -1px; -} -/* IGNORED BY IE6 */ -div#mw-head div.vectorMenu > h5 { - background-image: none; -} -div#mw-head div.vectorMenu h4 { - display: inline-block; - float: left; - font-size: 0.8em; - padding-left: 0.5em; - padding-top: 1.375em; - font-weight: normal; - border: none; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -/* @noflip */ -div.vectorMenu h5 a { - display: inline-block; - width: 24px; - height: 2.5em; - text-decoration: none; - /* @embed */ - background-image: url(images/tab-break.png); - background-repeat: no-repeat; -} -/* This will be flipped - unlike the one above it */ -div.vectorMenu h5 a { - background-position: bottom right; -} -/* IGNORED BY IE6 */ -div.vectorMenu h5 > a { - display: block; -} -div.vectorMenu div.menu { - position: relative; - display: none; - clear: both; - text-align: left; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -/* @noflip */ -body.rtl div.vectorMenu div.menu { - margin-left: 24px; -} -/* IGNORED BY IE6 */ -/* @noflip */ -body.rtl div.vectorMenu > div.menu { - margin-left: auto; -} -/* IGNORED BY IE6 */ -/* Also fixes old versions of FireFox */ -/* @noflip */ -body.rtl div.vectorMenu > div.menu, -x:-moz-any-link { - margin-left: 23px; -} -/* Enable forcing showing of the menu for accessibility */ -div.vectorMenu:hover div.menu, -div.vectorMenu div.menuForceShow { - display: block; -} -div.vectorMenu ul { - position: absolute; - background-color: white; - border: solid 1px silver; - border-top-width: 0; - list-style: none; - list-style-image: none; - list-style-type: none; - padding: 0; - margin: 0; - margin-left: -1px; - text-align: left; -} -/* Fixes old versions of FireFox */ -div.vectorMenu ul, -x:-moz-any-link { - min-width: 5em; -} -/* Returns things back to normal in modern versions of FireFox */ -div.vectorMenu ul, -x:-moz-any-link, -x:default { - min-width: 0; -} -div.vectorMenu li { - padding: 0; - margin: 0; - text-align: left; - line-height: 1em; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -div.vectorMenu li a { - display: inline-block; - padding: 0.5em; - white-space: nowrap; - color: #0645ad; - cursor: pointer; - font-size: 0.8em; -} -/* IGNORED BY IE6 */ -div.vectorMenu li > a { - display: block; -} -div.vectorMenu li.selected a, -div.vectorMenu li.selected a:visited { - color: #333333; - text-decoration: none; -} -/* Search */ -#p-search h5 { - display: none; -} -/* @noflip */ -#p-search { - float: left; -} -#p-search { - margin-right: 0.5em; - margin-left: 0.5em; -} -#p-search form, -#p-search input { - margin: 0; - margin-top: 0.4em; -} -div#simpleSearch { - display: block; - width: 14em; - height: 1.4em; - margin-top: 0.65em; - position: relative; - min-height: 1px; /* Gotta trigger hasLayout for IE7 */ - border: solid 1px #AAAAAA; - color: black; - background-color: white; - /* @embed */ - background-image: url(images/search-fade.png); - background-position: top left; - background-repeat: repeat-x; -} -div#simpleSearch label { - /* - * DON'T PANIC! Browsers that won't scale this properly are the same browsers that have JS issues that prevent - * this from ever being shown anyways. - */ - font-size: 13px; - top: 0.25em; - direction: ltr; -} -div#simpleSearch input { - color: black; - direction: ltr; -} -div#simpleSearch input:focus { - outline: none; -} -div#simpleSearch input.placeholder { - color: #999999; -} -div#simpleSearch input::-webkit-input-placeholder { - color: #999999; -} -div#simpleSearch input#searchInput { - position: absolute; - top: 0; - left: 0; - width: 90%; - margin: 0; - padding: 0; - padding-left: 0.2em; - padding-top: 0.2em; - padding-bottom: 0.2em; - outline: none; - border: none; - /* - * DON'T PANIC! Browsers that won't scale this properly are the same browsers that have JS issues that prevent - * this from ever being shown anyways. - */ - font-size: 13px; - background-color: transparent; - direction: ltr; -} -div#simpleSearch button#searchButton { - position: absolute; - width: 10%; - right: 0; - top: 0; - padding: 0; - padding-top: 0.3em; - padding-bottom: 0.2em; - padding-right: 0.4em; - margin: 0; - border: none; - cursor: pointer; - background-color: transparent; - background-image: none; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -div#simpleSearch button#searchButton img { - border: none; - margin: 0; - margin-top: -3px; - padding: 0; -} -/* IGNORED BY IE6 */ -div#simpleSearch button#searchButton > img { - margin: 0; -} -/* Panel */ -div#mw-panel { - position: absolute; - top: 160px; - padding-top: 1em; - width: 10em; - left: 0; -} -div#mw-panel div.portal { - padding-bottom: 1.5em; - direction: ltr; -} -div#mw-panel div.portal h5 { - font-weight: normal; - color: #444444; - padding: 0.25em; - padding-top: 0; - padding-left: 1.75em; - cursor: default; - border: none; - font-size: 0.75em; -} -div#mw-panel div.portal div.body { - margin: 0; - padding-top: 0.5em; - margin-left: 1.25em; - /* @embed */ - background-image: url(images/portal-break.png); - background-repeat: no-repeat; - background-position: top left; -} -div#mw-panel div.portal div.body ul { - list-style: none; - list-style-image: none; - list-style-type: none; - padding: 0; - margin: 0; -} -div#mw-panel div.portal div.body ul li { - line-height: 1.125em; - padding: 0; - padding-bottom: 0.5em; - margin: 0; - overflow: hidden; - font-size: 0.75em; -} -div#mw-panel div.portal div.body ul li a { - color: #0645ad; -} -div#mw-panel div.portal div.body ul li a:visited { - color: #0b0080; -} -/* Footer */ -div#footer { - margin-left: 10em; - margin-top: 0; - padding: 0.75em; - /* @embed */ - background-image: url(images/border.png); - background-position: top left; - background-repeat: repeat-x; - direction: ltr; -} -div#footer ul { - list-style: none; - list-style-image: none; - list-style-type: none; - margin: 0; - padding: 0; -} -div#footer ul li { - margin: 0; - padding: 0; - padding-top: 0.5em; - padding-bottom: 0.5em; - color: #333333; - font-size: 0.7em; -} -div#footer #footer-icons { - float: right; -} -/* @noflip */ -body.ltr div#footer #footer-places { - float: left; -} -div#footer #footer-info li { - line-height: 1.4em; -} -div#footer #footer-icons li { - float: left; - margin-left: 0.5em; - line-height: 2em; - text-align: right; -} -div#footer #footer-places li { - float: left; - margin-right: 1em; - line-height: 2em; -} -/* Logo */ -#p-logo { - position: absolute; - top: -160px; - left: 0; - width: 10em; - height: 160px; -} -#p-logo a { - display: block; - width: 10em; - height: 160px; - background-repeat: no-repeat; - background-position: center center; - text-decoration: none; -} - -/* - * - * The following code is highly modified from monobook. It would be nice if the - * preftoc id was more human readable like preferences-toc for instance, - * howerver this would require backporting the other skins. - */ - -/* Preferences */ -#preftoc { - /* Tabs */ - width: 100%; - float: left; - clear: both; - margin: 0 !important; - padding: 0 !important; - /* @embed */ - background-image: url(images/preferences-break.png); - background-position: bottom left; - background-repeat: no-repeat; -} - #preftoc li { - /* Tab */ - float: left; - margin: 0; - padding: 0; - padding-right: 1px; - height: 2.25em; - white-space: nowrap; - list-style-type: none; - list-style-image: none; - /* @embed */ - background-image: url(images/preferences-break.png); - background-position: bottom right; - background-repeat: no-repeat; - } - /* Sadly, IE6 won't understand this */ - #preftoc li:first-child { - margin-left: 1px; - } - #preftoc a, - #preftoc a:active { - display: inline-block; - position: relative; - color: #0645ad; - padding: 0.5em; - text-decoration: none; - background-image: none; - font-size: 0.9em; - } - #preftoc a:hover, - #preftoc a:focus { - text-decoration: underline; - } - #preftoc li.selected a { - /* @embed */ - background-image: url(images/preferences-fade.png); - background-position: bottom; - background-repeat: repeat-x; - color: #333333; - text-decoration: none; - } -#preferences { - float: left; - width: 100%; - margin: 0; - margin-top: -2px; - clear: both; - border: solid 1px #cccccc; - background-color: #f9f9f9; - /* @embed */ - background-image: url(images/preferences-base.png); -} -#preferences fieldset { - border: none; - border-top: solid 1px #cccccc; -} -#preferences fieldset.prefsection { - border: none; - padding: 0; - margin: 1em; -} -#preferences legend { - color: #666666; -} -#preferences fieldset.prefsection legend.mainLegend { - display: none; -} -#preferences td { - padding-left: 0.5em; - padding-right: 0.5em; -} -#preferences td.htmlform-tip { - font-size: x-small; - padding: .2em 2em; - color: #666666; -} -#preferences div.mw-prefs-buttons { - padding: 1em; -} -#preferences div.mw-prefs-buttons input { - margin-right: 0.25em; -} - -/** - * The following code is slightly modified from monobook - */ -div#content { - line-height: 1.5em; -} -#bodyContent { - font-size: 0.8em; -} - -.editsection { - float: right; -} - -ul { - /* @embed */ - list-style-image: url(images/bullet-icon.png); -} - -pre { - line-height: 1.3em; -} - -/* Site Notice (includes notices from CentralNotice extension) */ -#siteNotice { - font-size: 0.8em; -} -#firstHeading { - padding-top: 0; - margin-top: 0; - padding-top: 0; - font-size: 1.6em; -} -div#content a.external, -div#content a.external[href ^="gopher://"] { - /* @embed */ - background: url(images/external-link-ltr-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href ^="https://"], -.link-https { - /* @embed */ - background: url(images/lock-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href ^="mailto:"], -.link-mailto { - /* @embed */ - background: url(images/mail-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href ^="news:"] { - /* @embed */ - background: url(images/news-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href ^="ftp://"], -.link-ftp { - /* @embed */ - background: url(images/file-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href ^="irc://"], -div#content a.external[href ^="ircs://"], -.link-irc { - /* @embed */ - background: url(images/talk-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"], -div#content a.external[href $=".mid"], div#content a.external[href $=".MID"], -div#content a.external[href $=".midi"], div#content a.external[href $=".MIDI"], -div#content a.external[href $=".mp3"], div#content a.external[href $=".MP3"], -div#content a.external[href $=".wav"], div#content a.external[href $=".WAV"], -div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"], -.link-audio { - /* @embed */ - background: url(images/audio-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"], -div#content a.external[href $=".avi"], div#content a.external[href $=".AVI"], -div#content a.external[href $=".mpeg"], div#content a.external[href $=".MPEG"], -div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"], -.link-video { - /* @embed */ - background: url(images/video-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"], -div#content a.external[href *=".pdf#"], div#content a.external[href *=".PDF#"], -div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"], -.link-document { - /* @embed */ - background: url(images/document-icon.png) center right no-repeat; - padding-right: 13px; -} - -/* Icon for Usernames */ -#pt-userpage, -#pt-anonuserpage, -#pt-login { - /* @embed */ - background: url(images/user-icon.png) left top no-repeat; - padding-left: 15px !important; - text-transform: none; -} - -.redirectText { - font-size: 140%; -} - -.redirectMsg img { - vertical-align: text-bottom; -} - -#bodyContent { - position: relative; - width: 100%; -} -#mw-js-message { - font-size: 0.8em; -} -div#bodyContent { - line-height: 1.5em; -} - -/* Watch/Unwatch Icon Styling */ -#ca-unwatch.icon a, -#ca-watch.icon a { - margin: 0; - padding: 0; - outline: none; - display: block; - width: 26px; - /* This hides the text but shows the background image */ - padding-top: 3.1em; - margin-top: 0; - /* Only applied in IE6 */ - margin-top: -0.8em !ie; - height: 0; - overflow: hidden; - /* @embed */ - background-image: url(images/watch-icons.png); -} -#ca-unwatch.icon a { - background-position: -43px 60%; -} -#ca-watch.icon a { - background-position: 5px 60%; -} -#ca-unwatch.icon a:hover, -#ca-unwatch.icon a:focus { - background-position: -67px 60%; -} -#ca-watch.icon a:hover, -#ca-watch.icon a:focus { - background-position: -19px 60%; -} -#ca-unwatch.icon a.loading, -#ca-watch.icon a.loading { - /* @embed */ - background-image: url(images/watch-icon-loading.gif); - background-position: 5px 60%; -} -#ca-unwatch.icon a span, -#ca-watch.icon a span { - display: none; -} -div.vectorTabs ul { - /* @embed */ - background-image:url(images/tab-break.png); - background-position:right bottom; - background-repeat:no-repeat; -} - -/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */ -.tipsy { - font-size: 0.8em; -} -/** - * CSS in this file is used by *all* skins (that have any CSS at all). Be - * careful what you put in here, since what looks good in one skin may not in - * another, but don't ignore the poor pre-Monobook users either. - */ - -/* GENERAL CLASSES FOR DIRECTIONALITY SUPPORT */ - -/** - * These classes should be used for text depending on the content direction. - * Content stuff like editsection, ul/ol and TOC depend on this. - */ -.mw-content-ltr { - /* @noflip */ - direction: ltr; -} -.mw-content-rtl { - /* @noflip */ - direction: rtl; -} - -/* Most input fields should be in site direction */ -.sitedir-ltr textarea, -.sitedir-ltr input { - /* @noflip */ - direction: ltr; -} -.sitedir-rtl textarea, -.sitedir-rtl input { - /* @noflip */ - direction: rtl; -} - -/* Input types that should follow user direction, like buttons */ -/* TODO: What about buttons in wikipage content ? */ -input[type="submit"], -input[type="button"], -input[type="reset"], -input[type="file"] { - direction: ltr; -} - -/* Override default values */ -textarea[dir="ltr"], -input[dir="ltr"] { - /* @noflip */ - direction: ltr; -} -textarea[dir="rtl"], -input[dir="rtl"] { - /* @noflip */ - direction: rtl; -} - -/* Default style for semantic tags */ -abbr, -acronym, -.explain { - border-bottom: 1px dotted; - cursor: help; -} - -/* Colored watchlist and recent changes numbers */ -.mw-plusminus-pos { - color: #006400; /* dark green */ -} -.mw-plusminus-neg { - color: #8b0000; /* dark red */ -} -.mw-plusminus-null { - color: #aaa; /* gray */ -} - -/** - * Links to redirects appear italicized on [[Special:AllPages]], [[Special:PrefixIndex]], - * [[Special:Watchlist/edit]] and in category listings. - */ -.allpagesredirect, -.redirect-in-category, -.watchlistredir { - font-style: italic; -} - -/* Comment and username portions of RC entries */ -span.comment { - font-style: italic; -} - -span.changedby { - font-size: 95%; -} - -/* Math */ -.texvc { - direction: ltr; - unicode-bidi: embed; -} -img.tex { - vertical-align: middle; -} -span.texhtml { - font-family: serif; -} - -/** - * Add a bit of margin space between the preview and the toolbar. - * This replaces the ugly <p><br /></p> we used to insert into the page source - */ -#wikiPreview.ontop { - margin-bottom: 1em; -} - -/* Stop floats from intruding into edit area in previews */ -#editform, -#toolbar, -#wpTextbox1 { - clear: both; -} -#toolbar img { - cursor: pointer; -} -div#mw-js-message { - margin: 1em 5%; - padding: 0.5em 2.5%; - border: solid 1px #ddd; - background-color: #fcfcfc; -} - -/* Edit section links */ -.editsection { - float: right; - margin-left: 5px; -} -/* Correct directionality when page dir is different from site/user dir */ -.mw-content-ltr .editsection, -.mw-content-rtl .mw-content-ltr .editsection { - /* @noflip */ - float: right; -} -.mw-content-rtl .editsection, -.mw-content-ltr .mw-content-rtl .editsection { - /* @noflip */ - float: left; -} - -/** - * File description page - */ - -div.mw-filepage-resolutioninfo { - font-size: smaller; -} - -/** - * File histories - */ -h2#filehistory { - clear: both; -} - -table.filehistory th, -table.filehistory td { - vertical-align: top; -} -table.filehistory th { - text-align: left; -} -table.filehistory td.mw-imagepage-filesize, -table.filehistory th.mw-imagepage-filesize { - white-space: nowrap; -} - -table.filehistory td.filehistory-selected { - font-weight: bold; -} - -/** - * Add a checkered background image on hover for file - * description pages. (bug 26470) - */ -.filehistory a img, -#file img:hover { - /* @embed */ - background: white url(images/Checker-16x16.png) repeat; -} - -/** - * rev_deleted stuff - */ -li span.deleted, -span.history-deleted { - text-decoration: line-through; - color: #888; - font-style: italic; -} - -/** - * Patrol stuff - */ -.not-patrolled { - background-color: #ffa; -} - -.unpatrolled { - font-weight: bold; - color: red; -} - -div.patrollink { - font-size: 75%; - text-align: right; -} - -/** - * Forms - */ -td.mw-label { - text-align: right; -} -td.mw-input { - text-align: left; -} -td.mw-submit { - text-align: left; -} - -td.mw-label { - vertical-align: top; -} -.prefsection td.mw-label { - width: 20%; -} -.prefsection table { - width: 100%; -} -td.mw-submit { - white-space: nowrap; -} - -table.mw-htmlform-nolabel td.mw-label { - width: 1px; -} - -tr.mw-htmlform-vertical-label td.mw-label { - text-align: left !important; -} - -.mw-htmlform-invalid-input td.mw-input input { - border-color: red; -} - -.mw-htmlform-flatlist div.mw-htmlform-flatlist-item { - display: inline; - margin-right: 1em; - white-space: nowrap; -} - -input#wpSummary { - width: 80%; -} - -/** - * Image captions - */ -.thumbcaption { - text-align: left; -} -.magnify { - float: right; -} - -/** - * Categories - */ -#catlinks { - /** - * Overrides text justification (user preference) - * See bug 31990 - */ - text-align: left; -} -.catlinks ul { - display: inline; - margin: 0; - padding: 0; - list-style: none; - list-style-type: none; - list-style-image: none; - vertical-align: middle !ie; -} - -.catlinks li { - display: inline-block; - line-height: 1.25em; - border-left: 1px solid #AAA; - margin: 0.125em 0; - padding: 0 0.5em; - zoom: 1; - display: inline !ie; -} - -.catlinks li:first-child { - padding-left: 0.25em; - border-left: none; -} -/** - * Hidden categories - */ -.mw-hidden-cats-hidden { - display: none; -} -.catlinks-allhidden { - display: none; -} - -/* Convenience links to edit block, delete and protect reasons */ -p.mw-ipb-conveniencelinks, -p.mw-protect-editreasons, -p.mw-filedelete-editreasons, -p.mw-delete-editreasons, -p.mw-revdel-editreasons { - font-size: 90%; - text-align: right; -} - -/** - * OpenSearch ajax suggestions - */ -.os-suggest { - overflow: auto; - overflow-x: hidden; - position: absolute; - top: 0; - left: 0; - width: 0; - background-color: white; - border-style: solid; - border-color: #AAAAAA; - border-width: 1px; - z-index:99; - font-size:95%; -} - -table.os-suggest-results { - font-size: 95%; - cursor: pointer; - border: 0; - border-collapse: collapse; - width: 100%; -} - -.os-suggest-result, -.os-suggest-result-hl { - white-space: nowrap; - background-color: white; - color: black; - padding: 2px; -} -.os-suggest-result-hl, -.os-suggest-result-hl-webkit { - background-color: #4C59A6; - color: white; -} - -.os-suggest-toggle { - position: relative; - left: 1ex; - font-size: 65%; -} -.os-suggest-toggle-def { - position: absolute; - top: 0; - left: 0; - font-size: 65%; - visibility: hidden; -} - -/* Page history styling */ - -/* The auto-generated edit comments */ -.autocomment { - color: gray; -} -#pagehistory .history-user { - margin-left: 0.4em; - margin-right: 0.2em; -} -#pagehistory span.minor { - font-weight: bold; -} -#pagehistory li { - border: 1px solid white; -} -#pagehistory li.selected { - background-color: #f9f9f9; - border: 1px dashed #aaa; -} - -.mw-history-revisiondelete-button, #mw-fileduplicatesearch-icon { - float: right; -} - -/** Generic minor/bot/newpage styling (recent changes) */ -.newpage, -.minoredit, -.botedit { - font-weight: bold; -} - -#shared-image-dup, -#shared-image-conflict { - font-style: italic; -} - -/** - * Recreating deleted page warning - * Reupload file warning - * Page protection warning - * incl. log entries for these warnings - */ -div.mw-warning-with-logexcerpt { - padding: 3px; - margin-bottom: 3px; - border: 2px solid #2F6FAB; - clear: both; -} -div.mw-warning-with-logexcerpt ul li { - font-size: 90%; -} - -/* (show/hide) revision deletion links */ -span.mw-revdelundel-link, -strong.mw-revdelundel-link { - font-size: 90%; -} -span.mw-revdelundel-hidden, -input.mw-revdelundel-hidden { - visibility: hidden; -} - -td.mw-revdel-checkbox, -th.mw-revdel-checkbox { - padding-right: 10px; - text-align: center; -} - -/* feed links */ -a.feedlink { - /* @embed */ - background: url(images/feed-icon.png) center left no-repeat; - padding-left: 16px; -} - -/* Plainlinks - this can be used to switch - * off special external link styling */ -.plainlinks a { - background: none !important; - padding: 0 !important; -} -/* External URLs should always be treated as LTR (bug 4330) */ -/* @noflip */ .rtl a.external.free, -.rtl a.external.autonumber { - direction: ltr; - unicode-bidi: embed; -} - -/** - * wikitable class for skinning normal tables - * keep in sync with commonPrint.css - */ -table.wikitable { - margin: 1em 1em 1em 0; - background-color: #f9f9f9; - border: 1px #aaa solid; - border-collapse: collapse; - color: black; -} -table.wikitable > tr > th, -table.wikitable > tr > td, -table.wikitable > * > tr > th, -table.wikitable > * > tr > td { - border: 1px #aaa solid; - padding: 0.2em; -} -table.wikitable > tr > th, -table.wikitable > * > tr > th { - background-color: #f2f2f2; - text-align: center; -} -table.wikitable > caption { - font-weight: bold; -} - -/* hide initially collapsed collapsable tables */ -table.collapsed tr.collapsable { - display: none; -} - -/* success and error messages */ -.success { - color: green; - font-size: larger; -} -.warning { - color: #FFA500; /* orange */ - font-size: larger; -} -.error { - color: red; - font-size: larger; -} -.errorbox, -.warningbox, -.successbox { - font-size: larger; - border: 2px solid; - padding: .5em 1em; - float: left; - margin-bottom: 2em; - color: #000; -} -.errorbox { - border-color: red; - background-color: #fff2f2; -} -.warningbox { - border-color: #FF8C00; /* darkorange */ - background-color: #FFFFC0; -} -.successbox { - border-color: green; - background-color: #dfd; -} -.errorbox h2, -.warningbox h2, -.successbox h2 { - font-size: 1em; - font-weight: bold; - display: inline; - margin: 0 .5em 0 0; - border: none; -} - -/* general info/warning box for SP */ -.mw-infobox { - border: 2px solid #ff7f00; - margin: 0.5em; - clear: left; - overflow: hidden; -} - -.mw-infobox-left { - margin: 7px; - float: left; - width: 35px; -} - -.mw-infobox-right { - margin: 0.5em 0.5em 0.5em 49px; -} - -/* Note on preview page */ -.previewnote { - color: #c00; - margin-bottom: 1em; -} - -.previewnote p { - text-indent: 3em; - margin: 0.8em 0; -} - -.visualClear { - clear: both; -} - -#mw_trackbacks { - border: solid 1px #bbbbff; - background-color: #eeeeff; - padding: 0.2em; -} - -/** - * Data table style - * - * Transparent table with suddle borders - * and blue row-highlighting. - */ -.mw-datatable { - border-collapse: collapse; -} -.mw-datatable, -.mw-datatable td, -.mw-datatable th { - border: 1px solid #aaaaaa; - padding: 0 0.15em 0 0.15em; -} -.mw-datatable th { - background-color: #ddddff; -} -.mw-datatable td { - background-color: #ffffff; -} -.mw-datatable tr:hover td { - background-color: #eeeeff; -} - - -/** - * TablePager tables generated by the TablePager PHP class - * in MediaWiki (e.g. Special:ListFiles). - */ -.TablePager { - min-width: 80%; -} -.TablePager_nav { - margin: 0 auto; -} -.TablePager_nav td { - padding: 3px; - text-align: center; -} -.TablePager_nav a { - text-decoration: none; -} - -.imagelist td, -.imagelist th { - white-space: nowrap; -} -.imagelist .TablePager_col_links { - background-color: #eeeeff; -} -.imagelist .TablePager_col_img_description { - white-space: normal; -} -.imagelist th.TablePager_sort { - background-color: #ccccff; -} - -/* filetoc */ -ul#filetoc { - text-align: center; - border: 1px solid #aaaaaa; - background-color: #f9f9f9; - padding: 5px; - font-size: 95%; - margin-bottom: 0.5em; - margin-left: 0; - margin-right: 0; -} - -#filetoc li { - display: inline; - list-style-type: none; - padding-right: 2em; -} - -/* Classes for EXIF data display */ -table.mw_metadata { - font-size: 0.8em; - margin-left: 0.5em; - margin-bottom: 0.5em; - width: 400px; -} - -table.mw_metadata caption { - font-weight: bold; -} - -table.mw_metadata th { - font-weight: normal; -} - -table.mw_metadata td { - padding: 0.1em; -} - -table.mw_metadata { - border: none; - border-collapse: collapse; -} - -table.mw_metadata td, -table.mw_metadata th { - text-align: center; - border: 1px solid #aaaaaa; - padding-left: 5px; - padding-right: 5px; -} - -table.mw_metadata th { - background-color: #f9f9f9; -} - -table.mw_metadata td { - background-color: #fcfcfc; -} - -table.mw_metadata ul.metadata-langlist { - list-style-type: none; - list-style-image: none; - padding-right: 5px; - padding-left: 5px; - margin: 0; -} - -/* Correct directionality when page dir is different from site/user dir */ -.mw-content-ltr ul, -.mw-content-rtl .mw-content-ltr ul { - /* @noflip */ - margin: 0.3em 0 0 1.6em; - padding: 0; -} -.mw-content-rtl ul, -.mw-content-ltr .mw-content-rtl ul { - /* @noflip */ - margin: 0.3em 1.6em 0 0; - padding: 0; -} -.mw-content-ltr ol, -.mw-content-rtl .mw-content-ltr ol { - /* @noflip */ - margin: 0.3em 0 0 3.2em; - padding: 0; -} -.mw-content-rtl ol, -.mw-content-ltr .mw-content-rtl ol { - /* @noflip */ - margin: 0.3em 3.2em 0 0; - padding: 0; -} -/* @noflip */ -.mw-content-ltr dd, -.mw-content-rtl .mw-content-ltr dd { - margin-left: 1.6em; - margin-right: 0; -} -/* @noflip */ -.mw-content-rtl dd, -.mw-content-ltr .mw-content-rtl dd { - margin-right: 1.6em; - margin-left: 0; -} - -/* Galleries */ -/* These display attributes look nonsensical, but are needed to support IE and FF2 */ -/* Don't forget to update commonPrint.css */ -li.gallerybox { - vertical-align: top; - border: solid 2px white; - display: -moz-inline-box; - display: inline-block; -} - -ul.gallery, -li.gallerybox { - zoom: 1; - *display: inline; -} - -ul.gallery { - margin: 2px; - padding: 2px; - display: block; -} - -li.gallerycaption { - font-weight: bold; - text-align: center; - display: block; - word-wrap: break-word; -} - -li.gallerybox div.thumb { - text-align: center; - border: 1px solid #ccc; - background-color: #f9f9f9; - margin: 2px; -} - -li.gallerybox div.thumb img { - display: block; - margin: 0 auto; -} - -div.gallerytext { - overflow: hidden; - font-size: 94%; - padding: 2px 4px; - word-wrap: break-word; -} - -.mw-ajax-loader { - /* @embed */ - background-image: url(images/ajax-loader.gif); - background-position: center center; - background-repeat: no-repeat; - padding: 16px; - position: relative; - top: -16px; -} - -.mw-small-spinner { - padding: 10px !important; - margin-right: 0.6em; - /* @embed */ - background-image: url(images/spinner.gif); - background-position: center center; - background-repeat: no-repeat; -} - -/* Language specific height correction for titles. Ref Bug 29405 and Bug 30809 */ -/* Languages like hi or ml require slightly more vertical space to show diacritics properly */ -h1:lang(as), -h1:lang(bh), /* Macrolanguage, used on bh.wikipedia.org, should be removed one day */ -h1:lang(bho), -h1:lang(bn), -h1:lang(gu), -h1:lang(hi), -h1:lang(kn), -h1:lang(ml), -h1:lang(mr), -h1:lang(or), -h1:lang(pa), -h1:lang(sa), -h1:lang(ta), -h1:lang(te) { - line-height: 1.5em !important; -} -h2:lang(as), h3:lang(as), h4:lang(as), h5:lang(as), h6:lang(as), -h2:lang(bho), h3:lang(bho), h4:lang(bho), h5:lang(bho), h6:lang(bho), -h2:lang(bh), h3:lang(bh), h4:lang(bh), h5:lang(bh), h6:lang(bh), -h2:lang(bn), h3:lang(bn), h4:lang(bn), h5:lang(bn), h6:lang(bn), -h2:lang(gu), h3:lang(gu), h4:lang(gu), h5:lang(gu), h6:lang(gu), -h2:lang(hi), h3:lang(hi), h4:lang(hi), h5:lang(hi), h6:lang(hi), -h2:lang(kn), h3:lang(kn), h4:lang(kn), h5:lang(kn), h6:lang(kn), -h2:lang(ml), h3:lang(ml), h4:lang(ml), h5:lang(ml), h6:lang(ml), -h2:lang(mr), h3:lang(mr), h4:lang(mr), h5:lang(mr), h6:lang(mr), -h2:lang(or), h3:lang(or), h4:lang(or), h5:lang(or), h6:lang(or), -h2:lang(pa), h3:lang(pa), h4:lang(pa), h5:lang(pa), h6:lang(pa), -h2:lang(sa), h3:lang(sa), h4:lang(sa), h5:lang(sa), h6:lang(sa), -h2:lang(ta), h3:lang(ta), h4:lang(ta), h5:lang(ta), h6:lang(ta), -h2:lang(te), h3:lang(te), h4:lang(te), h5:lang(te), h6:lang(te) { - line-height: 1.2em; -} - -/* Localised ordered list numbering for some languages */ -ol:lang(bcc) li, -ol:lang(bqi) li, -ol:lang(fa) li, -ol:lang(glk) li, -ol:lang(kk-arab) li, -ol:lang(mzn) li { - list-style-type: -moz-persian; - list-style-type: persian; -} - -ol:lang(ckb) li { - list-style-type: -moz-arabic-indic; - list-style-type: arabic-indic; -} - -ol:lang(hi) li, -ol:lang(mr) li { - list-style-type: -moz-devanagari; - list-style-type: devanagari; -} - -ol:lang(as) li, -ol:lang(bn) li { - list-style-type: -moz-bengali; - list-style-type: bengali; -} - -ol:lang(or) li { - list-style-type: -moz-oriya; - list-style-type: oriya; -} - -#toc ul, .toc ul { - margin: .3em 0; -} - -/* Correct directionality when page dir is different from site/user dir */ -/* @noflip */ .mw-content-ltr .toc ul, -.mw-content-ltr #toc ul, -.mw-content-rtl .mw-content-ltr .toc ul, -.mw-content-rtl .mw-content-ltr #toc ul { - text-align: left; -} -/* @noflip */ .mw-content-rtl .toc ul, -.mw-content-rtl #toc ul, -.mw-content-ltr .mw-content-rtl .toc ul, -.mw-content-ltr .mw-content-rtl #toc ul { - text-align: right; -} -/* @noflip */ .mw-content-ltr .toc ul ul, -.mw-content-ltr #toc ul ul, -.mw-content-rtl .mw-content-ltr .toc ul ul, -.mw-content-rtl .mw-content-ltr #toc ul ul { - margin: 0 0 0 2em; -} -/* @noflip */ .mw-content-rtl .toc ul ul, -.mw-content-rtl #toc ul ul, -.mw-content-ltr .mw-content-rtl .toc ul ul, -.mw-content-ltr .mw-content-rtl #toc ul ul { - margin: 0 2em 0 0; -} - -#toc #toctitle, -.toc #toctitle, -#toc .toctitle, -.toc .toctitle { - direction: ltr; -} - -/* tooltip styles */ -.mw-help-field-hint { - display: none; - margin-left: 2px; - margin-bottom: -8px; - padding: 0 0 0 15px; - /* @embed */ - background-image: url('images/help-question.gif'); - background-position: left center; - background-repeat: no-repeat; - cursor: pointer; - font-size: .8em; - text-decoration: underline; - color: #0645ad; -} -.mw-help-field-hint:hover { - /* @embed */ - background-image: url('images/help-question-hover.gif'); -} -.mw-help-field-data { - display: block; - background-color: #d6f3ff; - padding:5px 8px 4px 8px; - border: 1px solid #5dc9f4; - margin-left: 20px; -} -.tipsy { - padding: 5px 5px 10px; - font-size: 12px; - position: absolute; - z-index: 100000; - overflow: visible; -} -.tipsy-inner { - padding: 5px 8px 4px 8px; - background-color: #d6f3ff; - color: black; - border: 1px solid #5dc9f4; - max-width: 300px; - text-align: left; -} -.tipsy-arrow { - position: absolute; - /* @embed */ - background: url(images/tipsy-arrow.gif) no-repeat top left; - width: 13px; - height: 13px; -} -.tipsy-se .tipsy-arrow { - bottom: -2px; - right: 10px; - background-position: 0% 100%; -} - -#mw-clearyourcache, -#mw-sitecsspreview, -#mw-sitejspreview, -#mw-usercsspreview, -#mw-userjspreview { - direction: ltr; - unicode-bidi: embed; -} - -/* Correct user & content directionality when viewing a diff */ -.diff-currentversion-title, -.diff { - direction: ltr; - unicode-bidi: embed; -} -/* @noflip */ .diff-contentalign-right td { - direction: rtl; - unicode-bidi: embed; -} -/* @noflip */ .diff-contentalign-left td { - direction: ltr; - unicode-bidi: embed; -} -.diff-otitle, -.diff-ntitle, -.diff-lineno { - direction: ltr !important; - unicode-bidi: embed; -} - -#mw-revision-info, -#mw-revision-info-current, -#mw-revision-nav { - direction: ltr; - display: inline; -} - -/* Images */ - -/* @noflip */ div.tright, -div.floatright, -table.floatright { - clear: right; - float: right; -} -/* @noflip */ div.tleft, -div.floatleft, -table.floatleft { - float: left; - clear: left; -} -div.floatright, -table.floatright, -div.floatleft, -table.floatleft { - position: relative; -} - -/* bug 12205 */ -#mw-credits a { - unicode-bidi: embed; -} - -/* Accessibility */ -.mw-jump, -#jump-to-nav { - overflow: hidden; - height: 0; - zoom: 1; /* http://webaim.org/techniques/skipnav/#iequirk */ -} - -/* Print footer should be hidden by default in screen. */ -.printfooter { - display: none; -} - -/* For developpers */ -.xdebug-error { - position: absolute; - z-index: 99; -} - -.editsection, .toctoggle { - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; -} -/** - * MediaWiki Print style sheet for CSS2-capable browsers. - * Copyright Gabriel Wicke, http://www.aulinx.de/ - * - * Derived from the plone (http://plone.org/) styles - * Copyright Alexander Limi - */ - -/* Thanks to A List Apart (http://alistapart.com/) for useful extras */ -a.stub, -a.new { - color: #ba0000; - text-decoration: none; -} - -#toc { - border: 1px solid #aaaaaa; - background-color: #f9f9f9; - padding: 5px; -} - -/* images */ -div.floatright { - float: right; - clear: right; - position: relative; - margin: 0.5em 0 0.8em 1.4em; -} -div.floatright p { - font-style: italic; -} -div.floatleft { - float: left; - clear: left; - position: relative; - margin: 0.5em 1.4em 0.8em 0; -} -div.floatleft p { - font-style: italic; -} -div.center { - text-align: center; -} - -/* thumbnails */ -div.thumb { - border: none; - width: auto; - margin-top: 0.5em; - margin-bottom: 0.8em; - background-color: transparent; -} -div.thumbinner { - border:1px solid #cccccc; - padding: 3px !important; - background-color: White; - font-size: 94%; - text-align: center; - overflow: hidden; -} -html .thumbimage { - border: 1px solid #cccccc; -} -html .thumbcaption { - border: none; - text-align: left; - line-height: 1.4em; - padding: 3px !important; - font-size: 94%; -} - -div.magnify { - display: none; -} -/* @noflip */ -div.tright { - float: right; - clear: right; - margin: 0.5em 0 0.8em 1.4em; -} -/* @noflip */ -div.tleft { - float: left; - clear: left; - margin: 0.5em 1.4em 0.8em 0; -} -img.thumbborder { - border: 1px solid #dddddd; -} - -/* table standards */ -table.rimage { - float: right; - width: 1pt; - position: relative; - margin-left: 1em; - margin-bottom: 1em; - text-align: center; -} - -body { - background: white; - color: black; - margin: 0; - padding: 0; -} - -.noprint, -div#jump-to-nav, -.mw-jump, -div.top, -div#column-one, -#colophon, -.editsection, -.toctoggle, -.tochidden, -div#f-poweredbyico, -div#f-copyrightico, -li#viewcount, -li#about, -li#disclaimer, -li#mobileview, -li#privacy, -#footer-places, -.mw-hidden-catlinks, -tr.mw-metadata-show-hide-extended, -span.mw-filepage-other-resolutions, -#filetoc { - /* Hides all the elements irrelevant for printing */ - display: none; -} - -ul { - list-style-type: square; -} - -#content { - background: none; - border: none !important; - padding: 0 !important; - margin: 0 !important; - direction: ltr; -} -#footer { - background : white; - color : black; - margin-top: 1em; - border-top: 1px solid #AAA; - direction: ltr; -} - -h1, h2, h3, h4, h5, h6 { - font-weight: bold; -} - -p { - margin: 1em 0; - line-height: 1.2em; -} - -pre { - border: 1pt dashed black; - white-space: pre; - font-size: 8pt; - overflow: auto; - padding: 1em 0; - background: white; - color: black; -} - -table.listing, -table.listing td { - border: 1pt solid black; - border-collapse: collapse; -} - -a { - color: black !important; - background: none !important; - padding: 0 !important; -} - -a:link, a:visited { - color: #520; - background: transparent; - text-decoration: underline; -} - -#content a.external.text:after, -#content a.external.autonumber:after { - /* Expand URLs for printing */ - content: " (" attr(href) ") "; -} - -#globalWrapper { - width: 100% !important; - min-width: 0 !important; -} - -#content { - background: white; - color: black; -} - -#column-content { - margin: 0 !important; -} - -#column-content #content { - padding: 1em; - margin: 0 !important; -} - -/* MSIE/Win doesn't understand 'inherit' */ -a, -a.external, -a.new, -a.stub { - color: black !important; - text-decoration: none !important; -} - -/* Continue ... */ -a, -a.external, -a.new, -a.stub { - color: inherit !important; - text-decoration: inherit !important; -} - -img { - border: none; - vertical-align: middle; -} - -/* math */ -span.texhtml { - font-family: serif; -} - -#siteNotice { - display: none; -} - -/* Galleries (see shared.css for more info) */ -li.gallerybox { - vertical-align: top; - border: solid 2px white; - display: -moz-inline-box; - display: inline-block; -} - -ul.gallery, li.gallerybox { - zoom: 1; - *display: inline; -} - -ul.gallery { - margin: 2px; - padding: 2px; - display: block; -} - -li.gallerycaption { - font-weight: bold; - text-align: center; - display: block; - word-wrap: break-word; -} - -li.gallerybox div.thumb { - text-align: center; - border: 1px solid #ccc; - margin: 2px; -} - -div.gallerytext { - overflow: hidden; - font-size: 94%; - padding: 2px 4px; - word-wrap: break-word; -} - -/** - * Diff rendering - */ -table.diff { - background: white; -} -td.diff-otitle { - background: #ffffff; -} -td.diff-ntitle { - background: #ffffff; -} -td.diff-addedline { - background: #ccffcc; - font-size: smaller; - border: solid 2px black; -} -td.diff-deletedline { - background: #ffffaa; - font-size: smaller; - border: dotted 2px black; -} -td.diff-context { - background: #eeeeee; - font-size: smaller; -} -.diffchange { - color: silver; - font-weight: bold; - text-decoration: underline; -} - -/** - * Table rendering - * As on shared.css but with white background. - */ -table.wikitable, -table.mw_metadata { - margin: 1em 1em 1em 0; - border: 1px #aaa solid; - background: white; - border-collapse: collapse; -} -table.wikitable > tr > th, table.wikitable > tr > td, -table.wikitable > * > tr > th, table.wikitable > * > tr > td, -.mw_metadata th, .mw_metadata td { - border: 1px #aaa solid; - padding: 0.2em; -} -table.wikitable > tr > th, -table.wikitable > * > tr > th, -.mw_metadata th { - text-align: center; - background: white; - font-weight: bold; -} -table.wikitable > caption, -.mw_metadata caption { - font-weight: bold; -} - -a.sortheader { - margin: 0 0.3em; -} - -/* Some pagination options */ -.wikitable, .thumb, img { - page-break-inside: avoid; -} -h2, h3, h4, h5, h6, h7 { - page-break-after: avoid; -} -p { - widows: 3; - orphans: 3; -} - -/** - * Categories - */ -.catlinks ul { - display: inline; - margin: 0; - padding: 0; - list-style: none; - list-style-type: none; - list-style-image: none; - vertical-align: middle !ie; -} - -.catlinks li { - display: inline-block; - line-height: 1.15em; - padding: 0 .4em; - border-left: 1px solid #AAA; - margin: 0.1em 0; - zoom: 1; - display: inline !ie; -} - -.catlinks li:first-child { - padding-left: .2em; - border-left: none; -} -/* Default styling for HTML elements */ -dfn { - font-style: inherit; /* Reset default styling for <dfn> */ -} -sup, sub { - line-height: 1em; /* Reduce line-height for <sup> and <sub> */ -} - -/* Main page fixes */ -#interwiki-completelist { - font-weight: bold; -} -body.page-Main_Page #ca-delete { - display: none !important; -} -body.page-Main_Page #mp-topbanner { - clear: both; -} - -/* Edit window toolbar */ -#toolbar { - height: 22px; - margin-bottom: 6px; -} - -/* Highlight data points in the info action if specified in the URL */ -body.action-info :target { - background: #DEF; -} - -/* Make the list of references smaller */ -ol.references, -div.reflist, -div.refbegin { - font-size: 90%; /* Default font-size */ - margin-bottom: 0.5em; -} -div.refbegin-100 { - font-size: 100%; /* Option for normal fontsize in {{refbegin}} */ -} -div.reflist ol.references { - font-size: 100%; /* Reset font-size when nested in div.reflist */ - list-style-type: inherit; /* Enable custom list style types */ -} - -/* Reset top margin for lists embedded in columns */ -div.columns { - margin-top: 0.3em; -} -div.columns dl, -div.columns ol, -div.columns ul { - margin-top: 0; -} - -/* Avoid list items from breaking between columns */ -div.columns li, -div.columns dd dd { - -webkit-column-break-inside: avoid; - page-break-inside: avoid; - break-inside: avoid-column; -} - -/* Highlight clicked reference in blue to help navigation */ -ol.references li:target, -sup.reference:target, -span.citation:target { - background-color: #DEF; -} - -/* Ensure refs in table headers and the like aren't bold or italic */ -sup.reference { - font-weight: normal; - font-style: normal; -} - -/* Allow hidden ref errors to be shown by user CSS */ -span.brokenref { - display: none; -} - -/* Styling for citations (CSS3). Breaks long urls, etc., rather than overflowing box */ -.citation { - word-wrap: break-word; -} - -/* For linked citation numbers and document IDs, where - the number need not be shown on a screen or a handheld, - but should be included in the printed version */ -@media screen, handheld { - .citation *.printonly { - display: none; - } -} - -/* Style for [[Template:Flowlist]] that Lets lists flow around floating objecs */ -.flowlist ul { - overflow-x: hidden; - margin-left: 0em; - padding-left: 1.6em; -} -.flowlist ol { - overflow-x: hidden; - margin-left: 0em; - padding-left: 3.2em; -} -.flowlist dl { - overflow-x: hidden; -} - -/* Style for horizontal lists (separator following item). - IE8-specific classes are assigned in [[MediaWiki:Common.js/IEFixes.js]]. - @source mediawiki.org/wiki/Snippets/Horizontal_lists - @revision 4.3 (2014-01-06) - @author [[User:Edokter]] - */ -.hlist dl, -.hlist ol, -.hlist ul { - margin: 0; - padding: 0; -} -/* Display list items inline */ -.hlist dd, -.hlist dt, -.hlist li { - margin: 0; - display: inline; -} -/* Display nested lists inline */ -.hlist dl dl, .hlist dl ol, .hlist dl ul, -.hlist ol dl, .hlist ol ol, .hlist ol ul, -.hlist ul dl, .hlist ul ol, .hlist ul ul { - display: inline; -} -/* Generate interpuncts */ -.hlist dt:after { - content: ": "; -} -.hlist dd:after, -.hlist li:after { - content: " · "; - font-weight: bold; -} -.hlist dd:last-child:after, -.hlist dt:last-child:after, -.hlist li:last-child:after { - content: none; -} -/* For IE8 */ -.hlist dd.hlist-last-child:after, -.hlist dt.hlist-last-child:after, -.hlist li.hlist-last-child:after { - content: none; -} -/* Add parentheses around nested lists */ -.hlist dd dd:first-child:before, .hlist dd dt:first-child:before, .hlist dd li:first-child:before, -.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before, -.hlist li dd:first-child:before, .hlist li dt:first-child:before, .hlist li li:first-child:before { - content: " ("; - font-weight: normal; -} -.hlist dd dd:last-child:after, .hlist dd dt:last-child:after, .hlist dd li:last-child:after, -.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after, -.hlist li dd:last-child:after, .hlist li dt:last-child:after, .hlist li li:last-child:after { - content: ") "; - font-weight: normal; -} -/* For IE8 */ -.hlist dd dd.hlist-last-child:after, .hlist dd dt.hlist-last-child:after, .hlist dd li.hlist-last-child:after, -.hlist dt dd.hlist-last-child:after, .hlist dt dt.hlist-last-child:after, .hlist dt li.hlist-last-child:after, -.hlist li dd.hlist-last-child:after, .hlist li dt.hlist-last-child:after, .hlist li li.hlist-last-child:after { - content: ") "; - font-weight: normal; -} -/* Put ordinals in front of ordered list items */ -.hlist ol { - counter-reset: listitem; -} -.hlist ol > li { - counter-increment: listitem; -} -.hlist ol > li:before { - content: " " counter(listitem) " "; -} -.hlist dd ol > li:first-child:before, -.hlist dt ol > li:first-child:before, -.hlist li ol > li:first-child:before { - content: " (" counter(listitem) " "; -} - -/* Unbulleted lists */ -.plainlist ul { - line-height: inherit; - list-style: none none; - margin: 0; -} -.plainlist ul li { - margin-bottom: 0; -} - -/* Default style for navigation boxes */ -.navbox { /* Navbox container style */ - border: 1px solid #aaa; - width: 100%; - margin: auto; - clear: both; - font-size: 88%; - text-align: center; - padding: 1px; -} -.navbox-inner, -.navbox-subgroup { - width: 100%; -} -.navbox-group, -.navbox-title, -.navbox-abovebelow { - padding: 0.25em 1em; /* Title, group and above/below styles */ - line-height: 1.5em; - text-align: center; -} -th.navbox-group { /* Group style */ - white-space: nowrap; - /* @noflip */ - text-align: right; -} -.navbox, -.navbox-subgroup { - background: #fdfdfd; /* Background color */ -} -.navbox-list { - line-height: 1.8em; - border-color: #fdfdfd; /* Must match background color */ -} -.navbox th, -.navbox-title { - background: #ccccff; /* Level 1 color */ -} -.navbox-abovebelow, -th.navbox-group, -.navbox-subgroup .navbox-title { - background: #ddddff; /* Level 2 color */ -} -.navbox-subgroup .navbox-group, -.navbox-subgroup .navbox-abovebelow { - background: #e6e6ff; /* Level 3 color */ -} -.navbox-even { - background: #f7f7f7; /* Even row striping */ -} -.navbox-odd { - background: transparent; /* Odd row striping */ -} -table.navbox + table.navbox { /* Single pixel border between adjacent navboxes */ - margin-top: -1px; /* (doesn't work for IE6, but that's okay) */ -} -.navbox .hlist td dl, -.navbox .hlist td ol, -.navbox .hlist td ul, -.navbox td.hlist dl, -.navbox td.hlist ol, -.navbox td.hlist ul { - padding: 0.125em 0; /* Adjust hlist padding in navboxes */ -} -ol + table.navbox, -ul + table.navbox { - margin-top: 0.5em; /* Prevent lists from clinging to navboxes */ -} - -/* Default styling for Navbar template */ -.navbar { - display: inline; - font-size: 88%; - font-weight: normal; -} -.navbar ul { - display: inline; - white-space: nowrap; -} -.navbar li { - word-spacing: -0.125em; -} -.navbar.mini li span { - font-variant: small-caps; -} -/* Navbar styling when nested in infobox and navbox */ -.infobox .navbar { - font-size: 100%; -} -.navbox .navbar { - display: block; - font-size: 100%; -} -.navbox-title .navbar { - /* @noflip */ - float: left; - /* @noflip */ - text-align: left; - /* @noflip */ - margin-right: 0.5em; - width: 6em; -} - -/* 'show'/'hide' buttons created dynamically by the CollapsibleTables javascript - in [[MediaWiki:Common.js]] are styled here so they can be customised. */ -.collapseButton { - /* @noflip */ - float: right; - font-weight: normal; - /* @noflip */ - margin-left: 0.5em; - /* @noflip */ - text-align: right; - width: auto; -} -/* In navboxes, the show/hide button balances the v·d·e links - from [[Template:Navbar]], so they need to be the same width. */ -.navbox .collapseButton { - width: 6em; -} - -/* Styling for JQuery makeCollapsible, matching that of collapseButton */ -.mw-collapsible-toggle { - font-weight: normal; - /* @noflip */ - text-align: right; -} -.navbox .mw-collapsible-toggle { - width: 6em; -} - -/* Infobox template style */ -.infobox { - border: 1px solid #aaa; - background-color: #f9f9f9; - color: black; - /* @noflip */ - margin: 0.5em 0 0.5em 1em; - padding: 0.2em; - /* @noflip */ - float: right; - /* @noflip */ - clear: right; - /* @noflip */ - text-align: left; - font-size: 88%; - line-height: 1.5em; -} -.infobox caption { - font-size: 125%; - font-weight: bold; -} -.infobox td, -.infobox th { - vertical-align: top; -} -.infobox.bordered { - border-collapse: collapse; -} -.infobox.bordered td, -.infobox.bordered th { - border: 1px solid #aaa; -} -.infobox.bordered .borderless td, -.infobox.bordered .borderless th { - border: 0; -} - -.infobox.sisterproject { - width: 20em; - font-size: 90%; -} - -.infobox.standard-talk { - border: 1px solid #c0c090; - background-color: #f8eaba; -} -.infobox.standard-talk.bordered td, -.infobox.standard-talk.bordered th { - border: 1px solid #c0c090; -} - -/* styles for bordered infobox with merged rows */ -.infobox.bordered .mergedtoprow td, -.infobox.bordered .mergedtoprow th { - border: 0; - border-top: 1px solid #aaa; - /* @noflip */ - border-right: 1px solid #aaa; -} - -.infobox.bordered .mergedrow td, -.infobox.bordered .mergedrow th { - border: 0; - /* @noflip */ - border-right: 1px solid #aaa; -} - -/* Styles for geography infoboxes, eg countries, - country subdivisions, cities, etc. */ -.infobox.geography { - border-collapse: collapse; - line-height: 1.2em; - font-size: 90%; -} - -.infobox.geography td, -.infobox.geography th { - border-top: 1px solid #aaa; - padding: 0.4em 0.6em 0.4em 0.6em; -} -.infobox.geography .mergedtoprow td, -.infobox.geography .mergedtoprow th { - border-top: 1px solid #aaa; - padding: 0.4em 0.6em 0.2em 0.6em; -} - -.infobox.geography .mergedrow td, -.infobox.geography .mergedrow th { - border: 0; - padding: 0 0.6em 0.2em 0.6em; -} - -.infobox.geography .mergedbottomrow td, -.infobox.geography .mergedbottomrow th { - border-top: 0; - border-bottom: 1px solid #aaa; - padding: 0 0.6em 0.4em 0.6em; -} - -.infobox.geography .maptable td, -.infobox.geography .maptable th { - border: 0; - padding: 0; -} - -/* Normal font styling for table row headers with scope="row" tag */ -.wikitable.plainrowheaders th[scope=row] { - font-weight: normal; - /* @noflip */ - text-align: left; -} - -/* Lists in data cells are always left-aligned */ -.wikitable td ul, -.wikitable td ol, -.wikitable td dl { - /* @noflip */ - text-align: left; -} -/* ...unless they also use the hlist class */ -.wikitable.hlist td ul, -.wikitable.hlist td ol, -.wikitable.hlist td dl { - text-align: inherit; -} - -/* Icons for medialist templates [[Template:Listen]], - [[Template:Multi-listen_start]], [[Template:Video]], - [[Template:Multi-video_start]] */ -div.listenlist { - background: url("//upload.wikimedia.org/wikipedia/commons/4/47/Sound-icon.svg") no-repeat scroll 0% 0% transparent; - background-size: 30px; - padding-left: 40px; -} - -/* Fix for hieroglyphs specificality issue in infoboxes ([[Bugzilla:41869]]) */ -table.mw-hiero-table td { - vertical-align: middle; -} - -/* Style rules for media list templates */ -div.medialist { - min-height: 50px; - margin: 1em; - /* @noflip */ - background-position: top left; - background-repeat: no-repeat; -} -div.medialist ul { - list-style-type: none; - list-style-image: none; - margin: 0; -} -div.medialist ul li { - padding-bottom: 0.5em; -} -div.medialist ul li li { - font-size: 91%; - padding-bottom: 0; -} - -/* Change the external link icon to an Adobe icon for all PDF files - in browsers that support these CSS selectors, like Mozilla and Opera */ -div#content a[href$=".pdf"].external, -div#content a[href*=".pdf?"].external, -div#content a[href*=".pdf#"].external, -div#content a[href$=".PDF"].external, -div#content a[href*=".PDF?"].external, -div#content a[href*=".PDF#"].external, -div#mw_content a[href$=".pdf"].external, -div#mw_content a[href*=".pdf?"].external, -div#mw_content a[href*=".pdf#"].external, -div#mw_content a[href$=".PDF"].external, -div#mw_content a[href*=".PDF?"].external, -div#mw_content a[href*=".PDF#"].external { - background: url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") no-repeat right; - /* @noflip */ - padding-right: 18px; -} - -/* Change the external link icon to an Adobe icon anywhere the PDFlink class - is used (notably Template:PDFlink). This works in IE, unlike the above. */ -div#content span.PDFlink a, -div#mw_content span.PDFlink a { - background: url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") no-repeat right; - /* @noflip */ - padding-right: 18px; -} - -/* Content in columns with CSS instead of tables ([[Template:Columns]]) */ -div.columns-2 div.column { - /* @noflip */ - float: left; - width: 50%; - min-width: 300px; -} -div.columns-3 div.column { - /* @noflip */ - float: left; - width: 33.3%; - min-width: 200px; -} -div.columns-4 div.column { - /* @noflip */ - float: left; - width: 25%; - min-width: 150px; -} -div.columns-5 div.column { - /* @noflip */ - float: left; - width: 20%; - min-width: 120px; -} - -/* Messagebox templates */ -.messagebox { - border: 1px solid #aaa; - background-color: #f9f9f9; - width: 80%; - margin: 0 auto 1em auto; - padding: .2em; -} -.messagebox.merge { - border: 1px solid #c0b8cc; - background-color: #f0e5ff; - text-align: center; -} -.messagebox.cleanup { - border: 1px solid #9f9fff; - background-color: #efefff; - text-align: center; -} -.messagebox.standard-talk { - border: 1px solid #c0c090; - background-color: #f8eaba; - margin: 4px auto; -} -/* For old WikiProject banners inside banner shells. */ -.mbox-inside .standard-talk, -.messagebox.nested-talk { - border: 1px solid #c0c090; - background-color: #f8eaba; - width: 100%; - margin: 2px 0; - padding: 2px; -} -.messagebox.small { - width: 238px; - font-size: 85%; - /* @noflip */ - float: right; - clear: both; - /* @noflip */ - margin: 0 0 1em 1em; - line-height: 1.25em; -} -.messagebox.small-talk { - width: 238px; - font-size: 85%; - /* @noflip */ - float: right; - clear: both; - /* @noflip */ - margin: 0 0 1em 1em; - line-height: 1.25em; - background: #F8EABA; -} - -/* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ -th.mbox-text, td.mbox-text { /* The message body cell(s) */ - border: none; - /* @noflip */ - padding: 0.25em 0.9em; /* 0.9em left/right */ - width: 100%; /* Make all mboxes the same width regardless of text length */ -} -td.mbox-image { /* The left image cell */ - border: none; - /* @noflip */ - padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ - text-align: center; -} -td.mbox-imageright { /* The right image cell */ - border: none; - /* @noflip */ - padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ - text-align: center; -} -td.mbox-empty-cell { /* An empty narrow cell */ - border: none; - padding: 0px; - width: 1px; -} - -/* Article message box styles */ -table.ambox { - margin: 0px 10%; /* 10% = Will not overlap with other elements */ - border: 1px solid #aaa; - /* @noflip */ - border-left: 10px solid #1e90ff; /* Default "notice" blue */ - background: #fbfbfb; -} -table.ambox + table.ambox { /* Single border between stacked boxes. */ - margin-top: -1px; -} -.ambox th.mbox-text, -.ambox td.mbox-text { /* The message body cell(s) */ - padding: 0.25em 0.5em; /* 0.5em left/right */ -} -.ambox td.mbox-image { /* The left image cell */ - /* @noflip */ - padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ -} -.ambox td.mbox-imageright { /* The right image cell */ - /* @noflip */ - padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ -} - -table.ambox-notice { - /* @noflip */ - border-left: 10px solid #1e90ff; /* Blue */ -} -table.ambox-speedy { - /* @noflip */ - border-left: 10px solid #b22222; /* Red */ - background: #fee; /* Pink */ -} -table.ambox-delete { - /* @noflip */ - border-left: 10px solid #b22222; /* Red */ -} -table.ambox-content { - /* @noflip */ - border-left: 10px solid #f28500; /* Orange */ -} -table.ambox-style { - /* @noflip */ - border-left: 10px solid #f4c430; /* Yellow */ -} -table.ambox-move { - /* @noflip */ - border-left: 10px solid #9932cc; /* Purple */ -} -table.ambox-protection { - /* @noflip */ - border-left: 10px solid #bba; /* Gray-gold */ -} - -/* Image message box styles */ -table.imbox { - margin: 4px 10%; - border-collapse: collapse; - border: 3px solid #1e90ff; /* Default "notice" blue */ - background: #fbfbfb; -} -.imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ - margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ - display: block; /* Fix for webkit to force 100% width. */ -} -.mbox-inside .imbox { /* For imboxes inside other templates. */ - margin: 4px; -} - -table.imbox-notice { - border: 3px solid #1e90ff; /* Blue */ -} -table.imbox-speedy { - border: 3px solid #b22222; /* Red */ - background: #fee; /* Pink */ -} -table.imbox-delete { - border: 3px solid #b22222; /* Red */ -} -table.imbox-content { - border: 3px solid #f28500; /* Orange */ -} -table.imbox-style { - border: 3px solid #f4c430; /* Yellow */ -} -table.imbox-move { - border: 3px solid #9932cc; /* Purple */ -} -table.imbox-protection { - border: 3px solid #bba; /* Gray-gold */ -} -table.imbox-license { - border: 3px solid #88a; /* Dark gray */ - background: #f7f8ff; /* Light gray */ -} -table.imbox-featured { - border: 3px solid #cba135; /* Brown-gold */ -} - -/* Category message box styles */ -table.cmbox { - margin: 3px 10%; - border-collapse: collapse; - border: 1px solid #aaa; - background: #DFE8FF; /* Default "notice" blue */ -} - -table.cmbox-notice { - background: #D8E8FF; /* Blue */ -} -table.cmbox-speedy { - margin-top: 4px; - margin-bottom: 4px; - border: 4px solid #b22222; /* Red */ - background: #FFDBDB; /* Pink */ -} -table.cmbox-delete { - background: #FFDBDB; /* Red */ -} -table.cmbox-content { - background: #FFE7CE; /* Orange */ -} -table.cmbox-style { - background: #FFF9DB; /* Yellow */ -} -table.cmbox-move { - background: #E4D8FF; /* Purple */ -} -table.cmbox-protection { - background: #EFEFE1; /* Gray-gold */ -} - -/* Other pages message box styles */ -table.ombox { - margin: 4px 10%; - border-collapse: collapse; - border: 1px solid #aaa; /* Default "notice" gray */ - background: #f9f9f9; -} - -table.ombox-notice { - border: 1px solid #aaa; /* Gray */ -} -table.ombox-speedy { - border: 2px solid #b22222; /* Red */ - background: #fee; /* Pink */ -} -table.ombox-delete { - border: 2px solid #b22222; /* Red */ -} -table.ombox-content { - border: 1px solid #f28500; /* Orange */ -} -table.ombox-style { - border: 1px solid #f4c430; /* Yellow */ -} -table.ombox-move { - border: 1px solid #9932cc; /* Purple */ -} -table.ombox-protection { - border: 2px solid #bba; /* Gray-gold */ -} - -/* Talk page message box styles */ -table.tmbox { - margin: 4px 10%; - border-collapse: collapse; - border: 1px solid #c0c090; /* Default "notice" gray-brown */ - background: #f8eaba; -} -.mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */ - margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */ - width: 100%; /* For Safari and Opera */ -} -.mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ - line-height: 1.5em; /* also "nested", so reset styles that are */ - font-size: 100%; /* set in "mbox-small" above. */ -} - -table.tmbox-speedy { - border: 2px solid #b22222; /* Red */ - background: #fee; /* Pink */ -} -table.tmbox-delete { - border: 2px solid #b22222; /* Red */ -} -table.tmbox-content { - border: 2px solid #f28500; /* Orange */ -} -table.tmbox-style { - border: 2px solid #f4c430; /* Yellow */ -} -table.tmbox-move { - border: 2px solid #9932cc; /* Purple */ -} -table.tmbox-protection, -table.tmbox-notice { - border: 1px solid #c0c090; /* Gray-brown */ -} - -/* Disambig and set index box styles */ -table.dmbox { - clear: both; - margin: 0.9em 1em; - border-top: 1px solid #ccc; - border-bottom: 1px solid #ccc; - background: transparent; -} - -/* Footer and header message box styles */ -table.fmbox { - clear: both; - margin: 0.2em 0; - width: 100%; - border: 1px solid #aaa; - background: #f9f9f9; /* Default "system" gray */ -} -table.fmbox-system { - background: #f9f9f9; -} -table.fmbox-warning { - border: 1px solid #bb7070; /* Dark pink */ - background: #ffdbdb; /* Pink */ -} -table.fmbox-editnotice { - background: transparent; -} -/* Div based "warning" style fmbox messages. */ -div.mw-warning-with-logexcerpt, -div.mw-lag-warn-high, -div.mw-cascadeprotectedwarning, -div#mw-protect-cascadeon { - clear: both; - margin: 0.2em 0; - border: 1px solid #bb7070; - background: #ffdbdb; - padding: 0.25em 0.9em; -} -/* Div based "system" style fmbox messages. - Used in [[MediaWiki:Readonly lag]]. */ -div.mw-lag-warn-normal, -div.fmbox-system { - clear: both; - margin: 0.2em 0; - border: 1px solid #aaa; - background: #f9f9f9; - padding: 0.25em 0.9em; -} - -/* These mbox-small classes must be placed after all other - ambox/tmbox/ombox etc classes. "body.mediawiki" is so - they override "table.ambox + table.ambox" above. */ -body.mediawiki table.mbox-small { /* For the "small=yes" option. */ - /* @noflip */ - clear: right; - /* @noflip */ - float: right; - /* @noflip */ - margin: 4px 0 4px 1em; - width: 238px; - font-size: 88%; - line-height: 1.25em; -} -body.mediawiki table.mbox-small-left { /* For the "small=left" option. */ - /* @noflip */ - margin: 4px 1em 4px 0; - width: 238px; - border-collapse: collapse; - font-size: 88%; - line-height: 1.25em; -} - -/* Style for compact ambox */ -/* Hide the images */ -.compact-ambox table .mbox-image, -.compact-ambox table .mbox-imageright, -.compact-ambox table .mbox-empty-cell { - display: none; -} -/* Remove borders, backgrounds, padding, etc. */ -.compact-ambox table.ambox { - border: none; - border-collapse: collapse; - background: transparent; - margin: 0 0 0 1.6em !important; - padding: 0 !important; - width: auto; - display: block; -} -body.mediawiki .compact-ambox table.mbox-small-left { - font-size: 100%; - width: auto; - margin: 0; -} -/* Style the text cell as a list item and remove its padding */ -.compact-ambox table .mbox-text { - padding: 0 !important; - margin: 0 !important; -} -.compact-ambox table .mbox-text-span { - display: list-item; - line-height: 1.5em; - list-style-type: square; - list-style-image: url(//bits.wikimedia.org/skins/common/images/bullet.gif); -} -.skin-vector .compact-ambox table .mbox-text-span { - list-style-type: circle; - list-style-image: url(//bits.wikimedia.org/skins/vector/images/bullet-icon.png) -} -/* Allow for hiding text in compact form */ -.compact-ambox .hide-when-compact { - display: none; -} - -/* Remove default styles for [[MediaWiki:Noarticletext]]. */ -div.noarticletext { - border: none; - background: transparent; - padding: 0; -} - -/* Hide (formatting) elements from screen, but not from screenreaders */ -.visualhide { - position: absolute; - left: -10000px; - top: auto; - width: 1px; - height: 1px; - overflow: hidden; -} - -/* Bold save button */ -#wpSave { - font-weight: bold; -} - -/* class hiddenStructure is defunct. See [[Wikipedia:hiddenStructure]] */ -.hiddenStructure { - display: inline !important; - color: #f00; - background-color: #0f0; -} - -/* suppress missing interwiki image links where #ifexist cannot - be used due to high number of requests see .hidden-redlink on - [[m:MediaWiki:Common.css]] */ -.check-icon a.new { - display: none; - speak: none; -} - -/* Removes underlines from certain links */ -.nounderlines a, -.IPA a:link, .IPA a:visited { - text-decoration: none !important; -} - -/* Standard Navigationsleisten, aka box hiding thingy - from .de. Documentation at [[Wikipedia:NavFrame]]. */ -div.NavFrame { - margin: 0; - padding: 4px; - border: 1px solid #aaa; - text-align: center; - border-collapse: collapse; - font-size: 95%; -} -div.NavFrame + div.NavFrame { - border-top-style: none; - border-top-style: hidden; -} -div.NavPic { - background-color: #fff; - margin: 0; - padding: 2px; - /* @noflip */ - float: left; -} -div.NavFrame div.NavHead { - height: 1.6em; - font-weight: bold; - background-color: #ccf; - position: relative; -} -div.NavFrame p, -div.NavFrame div.NavContent, -div.NavFrame div.NavContent p { - font-size: 100%; -} -div.NavEnd { - margin: 0; - padding: 0; - line-height: 1px; - clear: both; -} -a.NavToggle { - position: absolute; - top: 0; - /* @noflip */ - right: 3px; - font-weight: normal; - font-size: 90%; -} - -/* Hatnotes and disambiguation notices */ -.rellink, -.dablink { - font-style: italic; - /* @noflip */ - padding-left: 1.6em; - margin-bottom: 0.5em; -} -.rellink i, -.dablink i { - font-style: normal; -} - -/* Allow transcluded pages to display in lists rather than a table. - Compatible in Firefox; incompatible in IE6. */ -.listify td { display: list-item; } -.listify tr { display: block; } -.listify table { display: block; } - -/* Geographical coordinates defaults. See [[Template:Coord/link]] - for how these are used. The classes "geo", "longitude", and - "latitude" are used by the [[Geo microformat]]. */ -.geo-default, .geo-dms, .geo-dec { display: inline; } -.geo-nondefault, .geo-multi-punct { display: none; } -.longitude, .latitude { white-space: nowrap; } - -/* When <div class="nonumtoc"> is used on the table of contents, - the ToC will display without numbers */ -.nonumtoc .tocnumber { display: none; } -.nonumtoc #toc ul, -.nonumtoc .toc ul { - line-height: 1.5em; - list-style: none none; - margin: .3em 0 0; - padding: 0; -} -.nonumtoc #toc ul ul, -.nonumtoc .toc ul ul { - /* @noflip */ - margin: 0 0 0 2em; -} - -/* Allow limiting of which header levels are shown in a TOC; - <div class="toclimit-3">, for instance, will limit to - showing ==headings== and ===headings=== but no further - (as long as there are no =headings= on the page, which - there shouldn't be according to the MoS). */ -.toclimit-2 .toclevel-1 ul, -.toclimit-3 .toclevel-2 ul, -.toclimit-4 .toclevel-3 ul, -.toclimit-5 .toclevel-4 ul, -.toclimit-6 .toclevel-5 ul, -.toclimit-7 .toclevel-6 ul { - display: none; -} - -/* Styling for Template:Quote */ -blockquote.templatequote { - margin-top: 0; -} -blockquote.templatequote div.templatequotecite { - line-height: 1em; - /* @noflip */ - text-align: left; - /* @noflip */ - padding-left: 2em; - margin-top: 0; -} -blockquote.templatequote div.templatequotecite cite { - font-size: 85%; -} - -/* User block messages */ -div.user-block { - padding: 5px; - margin-bottom: 0.5em; - border: 1px solid #A9A9A9; - background-color: #FFEFD5; -} - -/* Prevent line breaks in silly places: - 1) Where desired - 2) Links when we don't want them to - 3) Bold "links" to the page itself - 4) Ref tags with group names <ref group="Note"> --> "[Note 1]" */ -.nowrap, -.nowraplinks a, -.nowraplinks .selflink, -sup.reference a { - white-space: nowrap; -} -/* But allow wrapping where desired: */ -.wrap, -.wraplinks a { - white-space: normal; -} - -/* For template documentation */ -.template-documentation { - clear: both; - margin: 1em 0 0 0; - border: 1px solid #aaa; - background-color: #ecfcf4; - padding: 1em; -} - -/* Inline divs in ImageMaps (code borrowed from de.wiki) */ -.imagemap-inline div { - display: inline; -} - -/* Increase the height of the image upload box */ -#wpUploadDescription { - height: 13em; -} - -/* Minimum thumb width */ -.thumbinner { - min-width: 100px; -} - -/* Makes the background of a framed image white instead of gray. - Only visible with transparent images. */ -div.thumb .thumbimage { - background-color: #fff; -} - -/* The backgrounds for galleries. */ -div#content .gallerybox div.thumb { - /* Light gray padding */ - background-color: #F9F9F9; -} -/* Put a chequered background behind images, only visible if they have transparency. - '.filehistory a img' and '#file img:hover' are handled by MediaWiki core (as of 1.19) */ -.gallerybox .thumb img { - background: #fff url(//bits.wikimedia.org/skins/common/images/Checker-16x16.png) repeat; -} -/* But not on articles, user pages, portals or with opt-out. */ -.ns-0 .gallerybox .thumb img, -.ns-2 .gallerybox .thumb img, -.ns-100 .gallerybox .thumb img, -.nochecker .gallerybox .thumb img { - background: #fff; -} - -/* Prevent floating boxes from overlapping any category listings, - file histories, edit previews, and edit [Show changes] views. */ -#mw-subcategories, #mw-pages, #mw-category-media, -#filehistory, #wikiPreview, #wikiDiff { - clear: both; -} - -body.rtl #mw-articlefeedbackv5, body.rtl #mw-articlefeedback { - display: block; /* Override inline block mode */ - margin-bottom: 1em; - /* @noflip */ - clear: right; /* Clear any info boxes that stick out */ - /* @noflip */ - float: right; /* Prevents margin collapsing */ -} - -/* Selectively hide headers in WikiProject banners */ -.wpb .wpb-header { display: none; } -.wpbs-inner .wpb .wpb-header { display: block; } /* for IE */ -.wpbs-inner .wpb .wpb-header { display: table-row; } /* for real browsers */ -.wpbs-inner .wpb-outside { display: none; } /* hide things that should only display outside shells */ - -/* Styling for Abuse Filter tags */ -.mw-tag-markers { - font-family:sans-serif; - font-style:italic; - font-size:90%; -} - -/* Hide stuff meant for accounts with special permissions. Made visible again in - [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-accountcreator.css]], - [[MediaWiki:Group-templateeditor.css]] and [[Mediawiki:Group-autoconfirmed.css]]. */ -.sysop-show, -.accountcreator-show, -.templateeditor-show, -.autoconfirmed-show { - display: none; -} - -/** - * Hide the redlink generated by {{Editnotice}}, - * this overrides the ".sysop-show { display: none; }" above that applies - * to the same link as well. - */ -.ve-init-mw-viewPageTarget-toolbar-editNotices-notice .editnotice-redlink { - display: none !important; -} - -/* Remove bullets when there are multiple edit page warnings */ -ul.permissions-errors > li { - list-style: none none; -} -ul.permissions-errors { - margin: 0; -} - -/* No linewrap on the labels of the login/signup page */ -body.page-Special_UserLogin .mw-label label, -body.page-Special_UserLogin_signup .mw-label label { - white-space: nowrap; -} - -/* Pie chart test: Transparent borders */ -.transborder { - border: solid transparent; -} -* html .transborder { /* IE6 */ - border: solid #000001; - filter: chroma(color=#000001); -} - -/* Styling for updated markers on watchlist, history and recent/related changes. - Bullets are handled in skin-specific stylesheets. */ -.updatedmarker { - background-color: transparent; - color: #006400; -} -li.mw-changeslist-line-watched .mw-title, -table.mw-changeslist-line-watched .mw-title, -table.mw-enhanced-watch .mw-enhanced-rctime { - font-weight: normal; -} - -/* Adjust font for inline HTML generated formulae */ -span.texhtml { - font-family: "Times New Roman", "Nimbus Roman No9 L", Times, serif; - font-size: 118%; - white-space: nowrap; -} -span.texhtml span.texhtml { - font-size: 100%; -} - -/* Fix so <syntaxhighlight> tags and .css and .js pages get normal text size. - [[Bugzilla:26204]]. See also [[Wikipedia:Typography#The monospace 'bug']] */ -div.mw-geshi div, -div.mw-geshi div pre, -span.mw-geshi, -pre.source-css, -pre.source-javascript, -pre.source-lua { - font-family: monospace, Courier !important; -} - -/* Fix styling of transcluded prefindex tables */ -table#mw-prefixindex-list-table, -table#mw-prefixindex-nav-table { - width: 98%; -} - -/* For portals, added 2011-12-07 -bv - On wide screens, show these as two columns - On narrow and mobile screens, let them collapse into a single column */ -.portal-column-left { - float: left; - width: 50%; -} -.portal-column-right { - float: right; - width: 49%; -} -.portal-column-left-wide { - float: left; - width: 60%; -} -.portal-column-right-narrow { - float: right; - width: 39%; -} -.portal-column-left-extra-wide { - float: left; - width: 70%; -} -.portal-column-right-extra-narrow { - float: right; - width: 29%; -} -@media only screen and (max-width: 800px) { - /* Decouple the columns on narrow screens */ - .portal-column-left, - .portal-column-right, - .portal-column-left-wide, - .portal-column-right-narrow, - .portal-column-left-extra-wide, - .portal-column-right-extra-narrow { - float: inherit; - width: inherit; - } -} - -/* For announcements */ -#bodyContent .letterhead { - background-image:url('//upload.wikimedia.org/wikipedia/commons/e/e0/Tan-page-corner.png'); - background-repeat:no-repeat; - padding: 2em; - background-color: #faf9f2; -} - -/* Tree style lists */ -.treeview ul { - padding: 0; - margin: 0; -} -.treeview li { - padding: 0; - margin: 0; - list-style-type: none; - list-style-image: none; - zoom: 1; /* BE KIND TO IE6 */; -} -.treeview li li { - background: url("//upload.wikimedia.org/wikipedia/commons/f/f2/Treeview-grey-line.png") no-repeat 0 -2981px; - /* @noflip */ - padding-left: 20px; - text-indent: 0.3em; -} -.treeview li li.lastline { - background-position: 0 -5971px -} -.treeview li.emptyline > ul { - /* @noflip */ - margin-left: -1px; -} -.treeview li.emptyline > ul > li:first-child { - background-position: 0 9px -} - -/* hidden sortkey for tablesorter */ -td .sortkey, -th .sortkey { - display: none; - speak: none; -} - -/* Make it possible to hide checkboxes in <inputbox> */ -.inputbox-hidecheckboxes form .inputbox-element { - display: none !important; -} - -/* Hide charinsert base for those not using the gadget */ -#editpage-specialchars { - display: none; -} - -/* work-around for [[bugzilla:23965]] (Kaltura advertisement) */ -.k-player .k-attribution { - visibility: hidden; -} - -/* [[MediaZilla:35337]] */ -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (min-resolution: 1.5dppx), (min-resolution: 144dpi) { - #p-logo a { - background-image: url("//upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Wikipedia-logo-v2-en.svg/204px-Wikipedia-logo-v2-en.svg.png") !important; - background-size: 136px auto; - } -} -@media (-webkit-min-device-pixel-ratio: 2), (min--moz-device-pixel-ratio: 2), (min-resolution: 2dppx), (min-resolution: 192dpi) { - #p-logo a { - background-image: url("//upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Wikipedia-logo-v2-en.svg/270px-Wikipedia-logo-v2-en.svg.png") !important; - background-size: 135px auto; - } -} -/* Do not print: - 1: When in mainspace: Article message boxes, - navboxes, sister project boxes, disambig links, - and items marked as metadata. - 2: section edit links. - 3: navbar links. - 4: Show/hide toggles for collapsible items. -*/ -.ns-0 .ambox, -.ns-0 .navbox, -.ns-0 .vertical-navbox, -.ns-0 .infobox.sisterproject, -.ns-0 .dablink, -.ns-0 .metadata, -.editlink, -.navbar, -a.NavToggle, span.collapseButton, span.mw-collapsible-toggle, -th .sortkey, td .sortkey { - display: none !important; -} - -/* Add formatting to make sure that "external references" from templates - like [[Template:Ref]] do not get URL expansion, not even when printed. - The anchor itself has class "external autonumber" and the url expansion - is inserted when printing (see the common printing style sheet at - http://en.wikipedia.org/skins-1.5/common/commonPrint.css) using the - ":after" pseudo-element of CSS. Also hide in <cite> elements. -*/ -#content cite a.external.text:after, -.nourlexpansion a.external.text:after, -.nourlexpansion a.external.autonumber:after { - display: none !important; -} - -/* Uncollapse collapsible tables/divs. - The proper way to do this for tables is to use display:table-row, - but this is not supported by all browsers, so use display:block as fallback. -*/ -table.collapsible tr, div.NavPic, div.NavContent { - display: block !important; -} -table.collapsible tr { - display: table-row !important; -} - -/* On websites with siteSub visible, the margin on the firstHeading is not needed. */ -#firstHeading { - margin: 0px; -} - -/* We don't want very long URLs (that are added to the content in print) to widen the canvas */ -#content a.external.text:after, -#content a.external.autonumber:after { - word-wrap: break-word; -} -/* Don't display some stuff on the main page */ -body.page-Main_Page #deleteconfirm, -body.page-Main_Page #t-cite, -body.page-Main_Page #footer-info-lastmod, -body.action-view.page-Main_Page #siteSub, -body.action-view.page-Main_Page #contentSub, -body.action-view.page-Main_Page h1.firstHeading { - display: none !important; -} - -/* Position Main Page top banner */ -body.page-Main_Page #mp-topbanner { - margin-top: 0 !important; -} - -/* Position coordinates */ -#coordinates { - position: absolute; - top: 0em; - right: 0em; - float: right; - margin: 0em; - padding: 0em; - line-height: 1.5em; - text-align: right; - text-indent: 0; - font-size: 85%; - text-transform: none; - white-space: nowrap; -} - -/* For positioning icons at top-right, used in Templates - "Spoken Article" and "Featured Article" */ -div.topicon { - position: absolute; - top: -2em; - margin-right: -10px; - display: block !important; -} - -/* FR topicon position */ -div.flaggedrevs_short { - position: absolute; - top: -3em; - right: 80px; - z-index: 1; - margin-left: 0; - /* Because this is not yet a topicon, we emulate it's behavior, - this ensure compatibility with edit lead section gadget. */ - margin-right: -10px; -} - -/* On rtl interfaces, we need to override the defaults. - It is content included (so ltr), but positioned in part of the rtl interface. */ -body.rtl #protected-icon { - /* @noflip */ - left: 55px; -} -body.rtl #spoken-icon, -body.rtl #commons-icon { - /* @noflip */ - left: 30px; -} -body.rtl #featured-star { - /* @noflip */ - left: 10px; -} - -/* Menu over FR box */ -div.vectorMenu div { - z-index: 2; -} - -/* Display "From Wikipedia, the free encyclopedia" */ -#siteSub { - display: inline; - font-size: 92%; -} - -/* Bullets for Good and Featured interwiki links */ -li.GA { - list-style-image: url(//upload.wikimedia.org/wikipedia/commons/4/42/Monobook-bullet-ga.png); -} -li.FA { - list-style-image: url(//upload.wikimedia.org/wikipedia/commons/d/d4/Monobook-bullet-star.png); -} - -/* Styling for updated markers on watchlist, history and recent/related changes */ -li.mw-changeslist-line-watched, -li.mw-history-line-updated { - list-style-image: url(//upload.wikimedia.org/wikipedia/commons/c/c2/ChangedBulletVector.png); -} - -/* Blue instead of yellow padlock for secure links. */ -#bodyContent a.external[href ^="https://"], -.link-https { - background: url(//upload.wikimedia.org/wikipedia/en/0/00/Lock_icon_blue.gif) center right no-repeat; - /* @noflip */ - padding-right: 16px; -} - -/* (Soft) redirect styling (bug:26544) */ -div.redirectMsg img { - vertical-align: text-bottom; -} -.redirectText { - font-size: 150%; - margin: 5px; -} diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/wikipedia.min.css b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/wikipedia.min.css deleted file mode 100644 index eecfc919430..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/wikipedia.min.css +++ /dev/null @@ -1 +0,0 @@ -html,body{height:100%;margin:0;padding:0;font-family:sans-serif;font-size:1em}body{background-color:#f3f3f3;background-image:url(images/page-base.png)}div#content{margin-left:10em;padding:1em;background-image:url(images/border.png);background-position:top left;background-repeat:repeat-y;background-color:white;color:black;direction:ltr}#mw-page-base{height:5em;background-color:white;background-image:url(images/page-fade.png);background-position:bottom left;background-repeat:repeat-x}#mw-head-base{margin-top:-5em;margin-left:10em;height:5em;background-image:url(images/border.png);background-position:bottom left;background-repeat:repeat-x}div#mw-head{position:absolute;top:0;right:0;width:100%}div#mw-head h5{margin:0;padding:0}div.emptyPortlet{display:none}#p-personal{position:absolute;top:0;right:.75em}#p-personal h5{display:none}#p-personal ul{list-style:none;margin:0;padding-left:10em}#p-personal li{line-height:1.125em;float:left}#p-personal li{margin-left:.75em;margin-top:.5em;font-size:.75em;white-space:nowrap}#left-navigation{position:absolute;left:10em;top:2.5em}#right-navigation{float:right;margin-top:2.5em}div.vectorTabs h5,div.vectorMenu h5 span{display:none}div.vectorTabs{float:left;height:2.5em}div.vectorTabs{background-image:url(images/tab-break.png);background-position:bottom left;background-repeat:no-repeat;padding-left:1px}div.vectorTabs ul{float:left}div.vectorTabs ul{height:100%;list-style:none;margin:0;padding:0}div.vectorTabs ul li{float:left}div.vectorTabs ul li{line-height:1.125em;display:inline-block;height:100%;margin:0;padding:0;background-color:#f3f3f3;background-image:url(images/tab-normal-fade.png);background-position:bottom left;background-repeat:repeat-x;white-space:nowrap}div.vectorTabs ul>li{display:block}div.vectorTabs li.selected{background-image:url(images/tab-current-fade.png)}div.vectorTabs li a{display:inline-block;height:1.9em;padding-left:.5em;padding-right:.5em;color:#0645ad;cursor:pointer;font-size:.8em}div.vectorTabs li>a{display:block}div.vectorTabs li.icon a{background-position:bottom right;background-repeat:no-repeat}div.vectorTabs span a{display:inline-block;padding-top:1.25em}div.vectorTabs span>a{float:left;display:block}div.vectorTabs span{display:inline-block;background-image:url(images/tab-break.png);background-position:bottom right;background-repeat:no-repeat}div.vectorTabs li.selected a,div.vectorTabs li.selected a:visited{color:#333;text-decoration:none}div.vectorTabs li.new a,div.vectorTabs li.new a:visited{color:#a55858}div.vectorMenu{direction:ltr;float:left;background-image:url(images/arrow-down-icon.png);background-position:100% 60%;background-repeat:no-repeat;cursor:pointer}div.vectorMenuFocus{background-image:url(images/arrow-down-focus-icon.png);background-position:100% 60%}body.rtl div.vectorMenu{direction:rtl}div#mw-head div.vectorMenu h5{float:left;background-image:url(images/tab-break.png);background-repeat:no-repeat}div#mw-head div.vectorMenu h5{background-position:bottom left;margin-left:-1px}div#mw-head div.vectorMenu>h5{background-image:none}div#mw-head div.vectorMenu h4{display:inline-block;float:left;font-size:.8em;padding-left:.5em;padding-top:1.375em;font-weight:normal;border:none}div.vectorMenu h5 a{display:inline-block;width:24px;height:2.5em;text-decoration:none;background-image:url(images/tab-break.png);background-repeat:no-repeat}div.vectorMenu h5 a{background-position:bottom right}div.vectorMenu h5>a{display:block}div.vectorMenu div.menu{position:relative;display:none;clear:both;text-align:left}body.rtl div.vectorMenu div.menu{margin-left:24px}body.rtl div.vectorMenu>div.menu{margin-left:auto}body.rtl div.vectorMenu>div.menu,x:-moz-any-link{margin-left:23px}div.vectorMenu:hover div.menu,div.vectorMenu div.menuForceShow{display:block}div.vectorMenu ul{position:absolute;background-color:white;border:solid 1px silver;border-top-width:0;list-style:none;list-style-image:none;list-style-type:none;padding:0;margin:0;margin-left:-1px;text-align:left}div.vectorMenu ul,x:-moz-any-link{min-width:5em}div.vectorMenu ul,x:-moz-any-link,x:default{min-width:0}div.vectorMenu li{padding:0;margin:0;text-align:left;line-height:1em}div.vectorMenu li a{display:inline-block;padding:.5em;white-space:nowrap;color:#0645ad;cursor:pointer;font-size:.8em}div.vectorMenu li>a{display:block}div.vectorMenu li.selected a,div.vectorMenu li.selected a:visited{color:#333;text-decoration:none}#p-search h5{display:none}#p-search{float:left}#p-search{margin-right:.5em;margin-left:.5em}#p-search form,#p-search input{margin:0;margin-top:.4em}div#simpleSearch{display:block;width:14em;height:1.4em;margin-top:.65em;position:relative;min-height:1px;border:solid 1px #AAA;color:black;background-color:white;background-image:url(images/search-fade.png);background-position:top left;background-repeat:repeat-x}div#simpleSearch label{font-size:13px;top:.25em;direction:ltr}div#simpleSearch input{color:black;direction:ltr}div#simpleSearch input:focus{outline:none}div#simpleSearch input.placeholder{color:#999}div#simpleSearch input::-webkit-input-placeholder{color:#999}div#simpleSearch input#searchInput{position:absolute;top:0;left:0;width:90%;margin:0;padding:0;padding-left:.2em;padding-top:.2em;padding-bottom:.2em;outline:none;border:none;font-size:13px;background-color:transparent;direction:ltr}div#simpleSearch button#searchButton{position:absolute;width:10%;right:0;top:0;padding:0;padding-top:.3em;padding-bottom:.2em;padding-right:.4em;margin:0;border:none;cursor:pointer;background-color:transparent;background-image:none}div#simpleSearch button#searchButton img{border:none;margin:0;margin-top:-3px;padding:0}div#simpleSearch button#searchButton>img{margin:0}div#mw-panel{position:absolute;top:160px;padding-top:1em;width:10em;left:0}div#mw-panel div.portal{padding-bottom:1.5em;direction:ltr}div#mw-panel div.portal h5{font-weight:normal;color:#444;padding:.25em;padding-top:0;padding-left:1.75em;cursor:default;border:none;font-size:.75em}div#mw-panel div.portal div.body{margin:0;padding-top:.5em;margin-left:1.25em;background-image:url(images/portal-break.png);background-repeat:no-repeat;background-position:top left}div#mw-panel div.portal div.body ul{list-style:none;list-style-image:none;list-style-type:none;padding:0;margin:0}div#mw-panel div.portal div.body ul li{line-height:1.125em;padding:0;padding-bottom:.5em;margin:0;overflow:hidden;font-size:.75em}div#mw-panel div.portal div.body ul li a{color:#0645ad}div#mw-panel div.portal div.body ul li a:visited{color:#0b0080}div#footer{margin-left:10em;margin-top:0;padding:.75em;background-image:url(images/border.png);background-position:top left;background-repeat:repeat-x;direction:ltr}div#footer ul{list-style:none;list-style-image:none;list-style-type:none;margin:0;padding:0}div#footer ul li{margin:0;padding:0;padding-top:.5em;padding-bottom:.5em;color:#333;font-size:.7em}div#footer #footer-icons{float:right}body.ltr div#footer #footer-places{float:left}div#footer #footer-info li{line-height:1.4em}div#footer #footer-icons li{float:left;margin-left:.5em;line-height:2em;text-align:right}div#footer #footer-places li{float:left;margin-right:1em;line-height:2em}#p-logo{position:absolute;top:-160px;left:0;width:10em;height:160px}#p-logo a{display:block;width:10em;height:160px;background-repeat:no-repeat;background-position:center center;text-decoration:none}#preftoc{width:100%;float:left;clear:both;margin:0!important;padding:0!important;background-image:url(images/preferences-break.png);background-position:bottom left;background-repeat:no-repeat}#preftoc li{float:left;margin:0;padding:0;padding-right:1px;height:2.25em;white-space:nowrap;list-style-type:none;list-style-image:none;background-image:url(images/preferences-break.png);background-position:bottom right;background-repeat:no-repeat}#preftoc li:first-child{margin-left:1px}#preftoc a,#preftoc a:active{display:inline-block;position:relative;color:#0645ad;padding:.5em;text-decoration:none;background-image:none;font-size:.9em}#preftoc a:hover,#preftoc a:focus{text-decoration:underline}#preftoc li.selected a{background-image:url(images/preferences-fade.png);background-position:bottom;background-repeat:repeat-x;color:#333;text-decoration:none}#preferences{float:left;width:100%;margin:0;margin-top:-2px;clear:both;border:solid 1px #ccc;background-color:#f9f9f9;background-image:url(images/preferences-base.png)}#preferences fieldset{border:none;border-top:solid 1px #ccc}#preferences fieldset.prefsection{border:none;padding:0;margin:1em}#preferences legend{color:#666}#preferences fieldset.prefsection legend.mainLegend{display:none}#preferences td{padding-left:.5em;padding-right:.5em}#preferences td.htmlform-tip{font-size:x-small;padding:.2em 2em;color:#666}#preferences div.mw-prefs-buttons{padding:1em}#preferences div.mw-prefs-buttons input{margin-right:.25em}div#content{line-height:1.5em}#bodyContent{font-size:.8em}.editsection{float:right}ul{list-style-image:url(images/bullet-icon.png)}pre{line-height:1.3em}#siteNotice{font-size:.8em}#firstHeading{padding-top:0;margin-top:0;padding-top:0;font-size:1.6em}div#content a.external,div#content a.external[href ^="gopher://"]{background:url(images/external-link-ltr-icon.png) center right no-repeat;padding-right:13px}div#content a.external[href ^="https://"],.link-https{background:url(images/lock-icon.png) center right no-repeat;padding-right:13px}div#content a.external[href ^="mailto:"],.link-mailto{background:url(images/mail-icon.png) center right no-repeat;padding-right:13px}div#content a.external[href ^="news:"]{background:url(images/news-icon.png) center right no-repeat;padding-right:13px}div#content a.external[href ^="ftp://"],.link-ftp{background:url(images/file-icon.png) center right no-repeat;padding-right:13px}div#content a.external[href ^="irc://"],div#content a.external[href ^="ircs://"],.link-irc{background:url(images/talk-icon.png) center right no-repeat;padding-right:13px}div#content a.external[href $=".ogg"],div#content a.external[href $=".OGG"],div#content a.external[href $=".mid"],div#content a.external[href $=".MID"],div#content a.external[href $=".midi"],div#content a.external[href $=".MIDI"],div#content a.external[href $=".mp3"],div#content a.external[href $=".MP3"],div#content a.external[href $=".wav"],div#content a.external[href $=".WAV"],div#content a.external[href $=".wma"],div#content a.external[href $=".WMA"],.link-audio{background:url(images/audio-icon.png) center right no-repeat;padding-right:13px}div#content a.external[href $=".ogm"],div#content a.external[href $=".OGM"],div#content a.external[href $=".avi"],div#content a.external[href $=".AVI"],div#content a.external[href $=".mpeg"],div#content a.external[href $=".MPEG"],div#content a.external[href $=".mpg"],div#content a.external[href $=".MPG"],.link-video{background:url(images/video-icon.png) center right no-repeat;padding-right:13px}div#content a.external[href $=".pdf"],div#content a.external[href $=".PDF"],div#content a.external[href *=".pdf#"],div#content a.external[href *=".PDF#"],div#content a.external[href *=".pdf?"],div#content a.external[href *=".PDF?"],.link-document{background:url(images/document-icon.png) center right no-repeat;padding-right:13px}#pt-userpage,#pt-anonuserpage,#pt-login{background:url(images/user-icon.png) left top no-repeat;padding-left:15px!important;text-transform:none}.redirectText{font-size:140%}.redirectMsg img{vertical-align:text-bottom}#bodyContent{position:relative;width:100%}#mw-js-message{font-size:.8em}div#bodyContent{line-height:1.5em}#ca-unwatch.icon a,#ca-watch.icon a{margin:0;padding:0;outline:none;display:block;width:26px;padding-top:3.1em;margin-top:0;margin-top:-0.8em!ie;height:0;overflow:hidden;background-image:url(images/watch-icons.png)}#ca-unwatch.icon a{background-position:-43px 60%}#ca-watch.icon a{background-position:5px 60%}#ca-unwatch.icon a:hover,#ca-unwatch.icon a:focus{background-position:-67px 60%}#ca-watch.icon a:hover,#ca-watch.icon a:focus{background-position:-19px 60%}#ca-unwatch.icon a.loading,#ca-watch.icon a.loading{background-image:url(images/watch-icon-loading.gif);background-position:5px 60%}#ca-unwatch.icon a span,#ca-watch.icon a span{display:none}div.vectorTabs ul{background-image:url(images/tab-break.png);background-position:right bottom;background-repeat:no-repeat}.tipsy{font-size:.8em}.mw-content-ltr{direction:ltr}.mw-content-rtl{direction:rtl}.sitedir-ltr textarea,.sitedir-ltr input{direction:ltr}.sitedir-rtl textarea,.sitedir-rtl input{direction:rtl}input[type="submit"],input[type="button"],input[type="reset"],input[type="file"]{direction:ltr}textarea[dir="ltr"],input[dir="ltr"]{direction:ltr}textarea[dir="rtl"],input[dir="rtl"]{direction:rtl}abbr,acronym,.explain{border-bottom:1px dotted;cursor:help}.mw-plusminus-pos{color:#006400}.mw-plusminus-neg{color:#8b0000}.mw-plusminus-null{color:#aaa}.allpagesredirect,.redirect-in-category,.watchlistredir{font-style:italic}span.comment{font-style:italic}span.changedby{font-size:95%}.texvc{direction:ltr;unicode-bidi:embed}img.tex{vertical-align:middle}span.texhtml{font-family:serif}#wikiPreview.ontop{margin-bottom:1em}#editform,#toolbar,#wpTextbox1{clear:both}#toolbar img{cursor:pointer}div#mw-js-message{margin:1em 5%;padding:.5em 2.5%;border:solid 1px #ddd;background-color:#fcfcfc}.editsection{float:right;margin-left:5px}.mw-content-ltr .editsection,.mw-content-rtl .mw-content-ltr .editsection{float:right}.mw-content-rtl .editsection,.mw-content-ltr .mw-content-rtl .editsection{float:left}div.mw-filepage-resolutioninfo{font-size:smaller}h2#filehistory{clear:both}table.filehistory th,table.filehistory td{vertical-align:top}table.filehistory th{text-align:left}table.filehistory td.mw-imagepage-filesize,table.filehistory th.mw-imagepage-filesize{white-space:nowrap}table.filehistory td.filehistory-selected{font-weight:bold}.filehistory a img,#file img:hover{background:white url(images/Checker-16x16.png) repeat}li span.deleted,span.history-deleted{text-decoration:line-through;color:#888;font-style:italic}.not-patrolled{background-color:#ffa}.unpatrolled{font-weight:bold;color:red}div.patrollink{font-size:75%;text-align:right}td.mw-label{text-align:right}td.mw-input{text-align:left}td.mw-submit{text-align:left}td.mw-label{vertical-align:top}.prefsection td.mw-label{width:20%}.prefsection table{width:100%}td.mw-submit{white-space:nowrap}table.mw-htmlform-nolabel td.mw-label{width:1px}tr.mw-htmlform-vertical-label td.mw-label{text-align:left!important}.mw-htmlform-invalid-input td.mw-input input{border-color:red}.mw-htmlform-flatlist div.mw-htmlform-flatlist-item{display:inline;margin-right:1em;white-space:nowrap}input#wpSummary{width:80%}.thumbcaption{text-align:left}.magnify{float:right}#catlinks{text-align:left}.catlinks ul{display:inline;margin:0;padding:0;list-style:none;list-style-type:none;list-style-image:none;vertical-align:middle!ie}.catlinks li{display:inline-block;line-height:1.25em;border-left:1px solid #AAA;margin:.125em 0;padding:0 .5em;zoom:1;display:inline!ie}.catlinks li:first-child{padding-left:.25em;border-left:none}.mw-hidden-cats-hidden{display:none}.catlinks-allhidden{display:none}p.mw-ipb-conveniencelinks,p.mw-protect-editreasons,p.mw-filedelete-editreasons,p.mw-delete-editreasons,p.mw-revdel-editreasons{font-size:90%;text-align:right}.os-suggest{overflow:auto;overflow-x:hidden;position:absolute;top:0;left:0;width:0;background-color:white;border-style:solid;border-color:#AAA;border-width:1px;z-index:99;font-size:95%}table.os-suggest-results{font-size:95%;cursor:pointer;border:0;border-collapse:collapse;width:100%}.os-suggest-result,.os-suggest-result-hl{white-space:nowrap;background-color:white;color:black;padding:2px}.os-suggest-result-hl,.os-suggest-result-hl-webkit{background-color:#4C59A6;color:white}.os-suggest-toggle{position:relative;left:1ex;font-size:65%}.os-suggest-toggle-def{position:absolute;top:0;left:0;font-size:65%;visibility:hidden}.autocomment{color:gray}#pagehistory .history-user{margin-left:.4em;margin-right:.2em}#pagehistory span.minor{font-weight:bold}#pagehistory li{border:1px solid white}#pagehistory li.selected{background-color:#f9f9f9;border:1px dashed #aaa}.mw-history-revisiondelete-button,#mw-fileduplicatesearch-icon{float:right}.newpage,.minoredit,.botedit{font-weight:bold}#shared-image-dup,#shared-image-conflict{font-style:italic}div.mw-warning-with-logexcerpt{padding:3px;margin-bottom:3px;border:2px solid #2F6FAB;clear:both}div.mw-warning-with-logexcerpt ul li{font-size:90%}span.mw-revdelundel-link,strong.mw-revdelundel-link{font-size:90%}span.mw-revdelundel-hidden,input.mw-revdelundel-hidden{visibility:hidden}td.mw-revdel-checkbox,th.mw-revdel-checkbox{padding-right:10px;text-align:center}a.feedlink{background:url(images/feed-icon.png) center left no-repeat;padding-left:16px}.plainlinks a{background:none!important;padding:0!important}.rtl a.external.free,.rtl a.external.autonumber{direction:ltr;unicode-bidi:embed}table.wikitable{margin:1em 1em 1em 0;background-color:#f9f9f9;border:1px #aaa solid;border-collapse:collapse;color:black}table.wikitable>tr>th,table.wikitable>tr>td,table.wikitable>*>tr>th,table.wikitable>*>tr>td{border:1px #aaa solid;padding:.2em}table.wikitable>tr>th,table.wikitable>*>tr>th{background-color:#f2f2f2;text-align:center}table.wikitable>caption{font-weight:bold}table.collapsed tr.collapsable{display:none}.success{color:green;font-size:larger}.warning{color:#FFA500;font-size:larger}.error{color:red;font-size:larger}.errorbox,.warningbox,.successbox{font-size:larger;border:2px solid;padding:.5em 1em;float:left;margin-bottom:2em;color:#000}.errorbox{border-color:red;background-color:#fff2f2}.warningbox{border-color:#FF8C00;background-color:#FFFFC0}.successbox{border-color:green;background-color:#dfd}.errorbox h2,.warningbox h2,.successbox h2{font-size:1em;font-weight:bold;display:inline;margin:0 .5em 0 0;border:none}.mw-infobox{border:2px solid #ff7f00;margin:.5em;clear:left;overflow:hidden}.mw-infobox-left{margin:7px;float:left;width:35px}.mw-infobox-right{margin:.5em .5em .5em 49px}.previewnote{color:#c00;margin-bottom:1em}.previewnote p{text-indent:3em;margin:.8em 0}.visualClear{clear:both}#mw_trackbacks{border:solid 1px #bbf;background-color:#eef;padding:.2em}.mw-datatable{border-collapse:collapse}.mw-datatable,.mw-datatable td,.mw-datatable th{border:1px solid #aaa;padding:0 .15em 0 .15em}.mw-datatable th{background-color:#ddf}.mw-datatable td{background-color:#fff}.mw-datatable tr:hover td{background-color:#eef}.TablePager{min-width:80%}.TablePager_nav{margin:0 auto}.TablePager_nav td{padding:3px;text-align:center}.TablePager_nav a{text-decoration:none}.imagelist td,.imagelist th{white-space:nowrap}.imagelist .TablePager_col_links{background-color:#eef}.imagelist .TablePager_col_img_description{white-space:normal}.imagelist th.TablePager_sort{background-color:#ccf}ul#filetoc{text-align:center;border:1px solid #aaa;background-color:#f9f9f9;padding:5px;font-size:95%;margin-bottom:.5em;margin-left:0;margin-right:0}#filetoc li{display:inline;list-style-type:none;padding-right:2em}table.mw_metadata{font-size:.8em;margin-left:.5em;margin-bottom:.5em;width:400px}table.mw_metadata caption{font-weight:bold}table.mw_metadata th{font-weight:normal}table.mw_metadata td{padding:.1em}table.mw_metadata{border:none;border-collapse:collapse}table.mw_metadata td,table.mw_metadata th{text-align:center;border:1px solid #aaa;padding-left:5px;padding-right:5px}table.mw_metadata th{background-color:#f9f9f9}table.mw_metadata td{background-color:#fcfcfc}table.mw_metadata ul.metadata-langlist{list-style-type:none;list-style-image:none;padding-right:5px;padding-left:5px;margin:0}.mw-content-ltr ul,.mw-content-rtl .mw-content-ltr ul{margin:.3em 0 0 1.6em;padding:0}.mw-content-rtl ul,.mw-content-ltr .mw-content-rtl ul{margin:.3em 1.6em 0 0;padding:0}.mw-content-ltr ol,.mw-content-rtl .mw-content-ltr ol{margin:.3em 0 0 3.2em;padding:0}.mw-content-rtl ol,.mw-content-ltr .mw-content-rtl ol{margin:.3em 3.2em 0 0;padding:0}.mw-content-ltr dd,.mw-content-rtl .mw-content-ltr dd{margin-left:1.6em;margin-right:0}.mw-content-rtl dd,.mw-content-ltr .mw-content-rtl dd{margin-right:1.6em;margin-left:0}li.gallerybox{vertical-align:top;border:solid 2px white;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;background-color:#f9f9f9;margin:2px}li.gallerybox div.thumb img{display:block;margin:0 auto}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}.mw-ajax-loader{background-image:url(images/ajax-loader.gif);background-position:center center;background-repeat:no-repeat;padding:16px;position:relative;top:-16px}.mw-small-spinner{padding:10px!important;margin-right:.6em;background-image:url(images/spinner.gif);background-position:center center;background-repeat:no-repeat}h1:lang(as),h1:lang(bh),h1:lang(bho),h1:lang(bn),h1:lang(gu),h1:lang(hi),h1:lang(kn),h1:lang(ml),h1:lang(mr),h1:lang(or),h1:lang(pa),h1:lang(sa),h1:lang(ta),h1:lang(te){line-height:1.5em!important}h2:lang(as),h3:lang(as),h4:lang(as),h5:lang(as),h6:lang(as),h2:lang(bho),h3:lang(bho),h4:lang(bho),h5:lang(bho),h6:lang(bho),h2:lang(bh),h3:lang(bh),h4:lang(bh),h5:lang(bh),h6:lang(bh),h2:lang(bn),h3:lang(bn),h4:lang(bn),h5:lang(bn),h6:lang(bn),h2:lang(gu),h3:lang(gu),h4:lang(gu),h5:lang(gu),h6:lang(gu),h2:lang(hi),h3:lang(hi),h4:lang(hi),h5:lang(hi),h6:lang(hi),h2:lang(kn),h3:lang(kn),h4:lang(kn),h5:lang(kn),h6:lang(kn),h2:lang(ml),h3:lang(ml),h4:lang(ml),h5:lang(ml),h6:lang(ml),h2:lang(mr),h3:lang(mr),h4:lang(mr),h5:lang(mr),h6:lang(mr),h2:lang(or),h3:lang(or),h4:lang(or),h5:lang(or),h6:lang(or),h2:lang(pa),h3:lang(pa),h4:lang(pa),h5:lang(pa),h6:lang(pa),h2:lang(sa),h3:lang(sa),h4:lang(sa),h5:lang(sa),h6:lang(sa),h2:lang(ta),h3:lang(ta),h4:lang(ta),h5:lang(ta),h6:lang(ta),h2:lang(te),h3:lang(te),h4:lang(te),h5:lang(te),h6:lang(te){line-height:1.2em}ol:lang(bcc) li,ol:lang(bqi) li,ol:lang(fa) li,ol:lang(glk) li,ol:lang(kk-arab) li,ol:lang(mzn) li{list-style-type:-moz-persian;list-style-type:persian}ol:lang(ckb) li{list-style-type:-moz-arabic-indic;list-style-type:arabic-indic}ol:lang(hi) li,ol:lang(mr) li{list-style-type:-moz-devanagari;list-style-type:devanagari}ol:lang(as) li,ol:lang(bn) li{list-style-type:-moz-bengali;list-style-type:bengali}ol:lang(or) li{list-style-type:-moz-oriya;list-style-type:oriya}#toc ul,.toc ul{margin:.3em 0}.mw-content-ltr .toc ul,.mw-content-ltr #toc ul,.mw-content-rtl .mw-content-ltr .toc ul,.mw-content-rtl .mw-content-ltr #toc ul{text-align:left}.mw-content-rtl .toc ul,.mw-content-rtl #toc ul,.mw-content-ltr .mw-content-rtl .toc ul,.mw-content-ltr .mw-content-rtl #toc ul{text-align:right}.mw-content-ltr .toc ul ul,.mw-content-ltr #toc ul ul,.mw-content-rtl .mw-content-ltr .toc ul ul,.mw-content-rtl .mw-content-ltr #toc ul ul{margin:0 0 0 2em}.mw-content-rtl .toc ul ul,.mw-content-rtl #toc ul ul,.mw-content-ltr .mw-content-rtl .toc ul ul,.mw-content-ltr .mw-content-rtl #toc ul ul{margin:0 2em 0 0}#toc #toctitle,.toc #toctitle,#toc .toctitle,.toc .toctitle{direction:ltr}.mw-help-field-hint{display:none;margin-left:2px;margin-bottom:-8px;padding:0 0 0 15px;background-image:url('images/help-question.gif');background-position:left center;background-repeat:no-repeat;cursor:pointer;font-size:.8em;text-decoration:underline;color:#0645ad}.mw-help-field-hint:hover{background-image:url('images/help-question-hover.gif')}.mw-help-field-data{display:block;background-color:#d6f3ff;padding:5px 8px 4px 8px;border:1px solid #5dc9f4;margin-left:20px}.tipsy{padding:5px 5px 10px;font-size:12px;position:absolute;z-index:100000;overflow:visible}.tipsy-inner{padding:5px 8px 4px 8px;background-color:#d6f3ff;color:black;border:1px solid #5dc9f4;max-width:300px;text-align:left}.tipsy-arrow{position:absolute;background:url(images/tipsy-arrow.gif) no-repeat top left;width:13px;height:13px}.tipsy-se .tipsy-arrow{bottom:-2px;right:10px;background-position:0 100%}#mw-clearyourcache,#mw-sitecsspreview,#mw-sitejspreview,#mw-usercsspreview,#mw-userjspreview{direction:ltr;unicode-bidi:embed}.diff-currentversion-title,.diff{direction:ltr;unicode-bidi:embed}.diff-contentalign-right td{direction:rtl;unicode-bidi:embed}.diff-contentalign-left td{direction:ltr;unicode-bidi:embed}.diff-otitle,.diff-ntitle,.diff-lineno{direction:ltr!important;unicode-bidi:embed}#mw-revision-info,#mw-revision-info-current,#mw-revision-nav{direction:ltr;display:inline}div.tright,div.floatright,table.floatright{clear:right;float:right}div.tleft,div.floatleft,table.floatleft{float:left;clear:left}div.floatright,table.floatright,div.floatleft,table.floatleft{position:relative}#mw-credits a{unicode-bidi:embed}.mw-jump,#jump-to-nav{overflow:hidden;height:0;zoom:1}.printfooter{display:none}.xdebug-error{position:absolute;z-index:99}.editsection,.toctoggle{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}a.stub,a.new{color:#ba0000;text-decoration:none}#toc{border:1px solid #aaa;background-color:#f9f9f9;padding:5px}div.floatright{float:right;clear:right;position:relative;margin:.5em 0 .8em 1.4em}div.floatright p{font-style:italic}div.floatleft{float:left;clear:left;position:relative;margin:.5em 1.4em .8em 0}div.floatleft p{font-style:italic}div.center{text-align:center}div.thumb{border:none;width:auto;margin-top:.5em;margin-bottom:.8em;background-color:transparent}div.thumbinner{border:1px solid #ccc;padding:3px!important;background-color:White;font-size:94%;text-align:center;overflow:hidden}html .thumbimage{border:1px solid #ccc}html .thumbcaption{border:none;text-align:left;line-height:1.4em;padding:3px!important;font-size:94%}div.magnify{display:none}div.tright{float:right;clear:right;margin:.5em 0 .8em 1.4em}div.tleft{float:left;clear:left;margin:.5em 1.4em .8em 0}img.thumbborder{border:1px solid #ddd}table.rimage{float:right;width:1pt;position:relative;margin-left:1em;margin-bottom:1em;text-align:center}body{background:white;color:black;margin:0;padding:0}.noprint,div#jump-to-nav,.mw-jump,div.top,div#column-one,#colophon,.editsection,.toctoggle,.tochidden,div#f-poweredbyico,div#f-copyrightico,li#viewcount,li#about,li#disclaimer,li#mobileview,li#privacy,#footer-places,.mw-hidden-catlinks,tr.mw-metadata-show-hide-extended,span.mw-filepage-other-resolutions,#filetoc{display:none}ul{list-style-type:square}#content{background:none;border:none!important;padding:0!important;margin:0!important;direction:ltr}#footer{background:white;color:black;margin-top:1em;border-top:1px solid #AAA;direction:ltr}h1,h2,h3,h4,h5,h6{font-weight:bold}p{margin:1em 0;line-height:1.2em}pre{border:1pt dashed black;white-space:pre;font-size:8pt;overflow:auto;padding:1em 0;background:white;color:black}table.listing,table.listing td{border:1pt solid black;border-collapse:collapse}a{color:black!important;background:none!important;padding:0!important}a:link,a:visited{color:#520;background:transparent;text-decoration:underline}#content a.external.text:after,#content a.external.autonumber:after{content:"(" attr(href) ") "}#globalWrapper{width:100%!important;min-width:0!important}#content{background:white;color:black}#column-content{margin:0!important}#column-content #content{padding:1em;margin:0!important}a,a.external,a.new,a.stub{color:black!important;text-decoration:none!important}a,a.external,a.new,a.stub{color:inherit!important;text-decoration:inherit!important}img{border:none;vertical-align:middle}span.texhtml{font-family:serif}#siteNotice{display:none}li.gallerybox{vertical-align:top;border:solid 2px white;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;margin:2px}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}table.diff{background:white}td.diff-otitle{background:#fff}td.diff-ntitle{background:#fff}td.diff-addedline{background:#cfc;font-size:smaller;border:solid 2px black}td.diff-deletedline{background:#ffa;font-size:smaller;border:dotted 2px black}td.diff-context{background:#eee;font-size:smaller}.diffchange{color:silver;font-weight:bold;text-decoration:underline}table.wikitable,table.mw_metadata{margin:1em 1em 1em 0;border:1px #aaa solid;background:white;border-collapse:collapse}table.wikitable>tr>th,table.wikitable>tr>td,table.wikitable>*>tr>th,table.wikitable>*>tr>td,.mw_metadata th,.mw_metadata td{border:1px #aaa solid;padding:.2em}table.wikitable>tr>th,table.wikitable>*>tr>th,.mw_metadata th{text-align:center;background:white;font-weight:bold}table.wikitable>caption,.mw_metadata caption{font-weight:bold}a.sortheader{margin:0 .3em}.wikitable,.thumb,img{page-break-inside:avoid}h2,h3,h4,h5,h6,h7{page-break-after:avoid}p{widows:3;orphans:3}.catlinks ul{display:inline;margin:0;padding:0;list-style:none;list-style-type:none;list-style-image:none;vertical-align:middle!ie}.catlinks li{display:inline-block;line-height:1.15em;padding:0 .4em;border-left:1px solid #AAA;margin:.1em 0;zoom:1;display:inline!ie}.catlinks li:first-child{padding-left:.2em;border-left:none}dfn{font-style:inherit}sup,sub{line-height:1em}#interwiki-completelist{font-weight:bold}body.page-Main_Page #ca-delete{display:none!important}body.page-Main_Page #mp-topbanner{clear:both}#toolbar{height:22px;margin-bottom:6px}body.action-info :target{background:#DEF}ol.references,div.reflist,div.refbegin{font-size:90%;margin-bottom:.5em}div.refbegin-100{font-size:100%}div.reflist ol.references{font-size:100%;list-style-type:inherit}div.columns{margin-top:.3em}div.columns dl,div.columns ol,div.columns ul{margin-top:0}div.columns li,div.columns dd dd{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid-column}ol.references li:target,sup.reference:target,span.citation:target{background-color:#DEF}sup.reference{font-weight:normal;font-style:normal}span.brokenref{display:none}.citation{word-wrap:break-word}@media screen,handheld{.citation *.printonly{display:none}}.flowlist ul{overflow-x:hidden;margin-left:0;padding-left:1.6em}.flowlist ol{overflow-x:hidden;margin-left:0;padding-left:3.2em}.flowlist dl{overflow-x:hidden}.hlist dl,.hlist ol,.hlist ul{margin:0;padding:0}.hlist dd,.hlist dt,.hlist li{margin:0;display:inline}.hlist dl dl,.hlist dl ol,.hlist dl ul,.hlist ol dl,.hlist ol ol,.hlist ol ul,.hlist ul dl,.hlist ul ol,.hlist ul ul{display:inline}.hlist dt:after{content:":"}.hlist dd:after,.hlist li:after{content:" · ";font-weight:bold}.hlist dd:last-child:after,.hlist dt:last-child:after,.hlist li:last-child:after{content:none}.hlist dd.hlist-last-child:after,.hlist dt.hlist-last-child:after,.hlist li.hlist-last-child:after{content:none}.hlist dd dd:first-child:before,.hlist dd dt:first-child:before,.hlist dd li:first-child:before,.hlist dt dd:first-child:before,.hlist dt dt:first-child:before,.hlist dt li:first-child:before,.hlist li dd:first-child:before,.hlist li dt:first-child:before,.hlist li li:first-child:before{content:"(";font-weight:normal}.hlist dd dd:last-child:after,.hlist dd dt:last-child:after,.hlist dd li:last-child:after,.hlist dt dd:last-child:after,.hlist dt dt:last-child:after,.hlist dt li:last-child:after,.hlist li dd:last-child:after,.hlist li dt:last-child:after,.hlist li li:last-child:after{content:") ";font-weight:normal}.hlist dd dd.hlist-last-child:after,.hlist dd dt.hlist-last-child:after,.hlist dd li.hlist-last-child:after,.hlist dt dd.hlist-last-child:after,.hlist dt dt.hlist-last-child:after,.hlist dt li.hlist-last-child:after,.hlist li dd.hlist-last-child:after,.hlist li dt.hlist-last-child:after,.hlist li li.hlist-last-child:after{content:") ";font-weight:normal}.hlist ol{counter-reset:listitem}.hlist ol>li{counter-increment:listitem}.hlist ol>li:before{content:" " counter(listitem) " "}.hlist dd ol>li:first-child:before,.hlist dt ol>li:first-child:before,.hlist li ol>li:first-child:before{content:"(" counter(listitem) " "}.plainlist ul{line-height:inherit;list-style:none none;margin:0}.plainlist ul li{margin-bottom:0}.navbox{border:1px solid #aaa;width:100%;margin:auto;clear:both;font-size:88%;text-align:center;padding:1px}.navbox-inner,.navbox-subgroup{width:100%}.navbox-group,.navbox-title,.navbox-abovebelow{padding:.25em 1em;line-height:1.5em;text-align:center}th.navbox-group{white-space:nowrap;text-align:right}.navbox,.navbox-subgroup{background:#fdfdfd}.navbox-list{line-height:1.8em;border-color:#fdfdfd}.navbox th,.navbox-title{background:#ccf}.navbox-abovebelow,th.navbox-group,.navbox-subgroup .navbox-title{background:#ddf}.navbox-subgroup .navbox-group,.navbox-subgroup .navbox-abovebelow{background:#e6e6ff}.navbox-even{background:#f7f7f7}.navbox-odd{background:transparent}table.navbox+table.navbox{margin-top:-1px}.navbox .hlist td dl,.navbox .hlist td ol,.navbox .hlist td ul,.navbox td.hlist dl,.navbox td.hlist ol,.navbox td.hlist ul{padding:.125em 0}ol+table.navbox,ul+table.navbox{margin-top:.5em}.navbar{display:inline;font-size:88%;font-weight:normal}.navbar ul{display:inline;white-space:nowrap}.navbar li{word-spacing:-0.125em}.navbar.mini li span{font-variant:small-caps}.infobox .navbar{font-size:100%}.navbox .navbar{display:block;font-size:100%}.navbox-title .navbar{float:left;text-align:left;margin-right:.5em;width:6em}.collapseButton{float:right;font-weight:normal;margin-left:.5em;text-align:right;width:auto}.navbox .collapseButton{width:6em}.mw-collapsible-toggle{font-weight:normal;text-align:right}.navbox .mw-collapsible-toggle{width:6em}.infobox{border:1px solid #aaa;background-color:#f9f9f9;color:black;margin:.5em 0 .5em 1em;padding:.2em;float:right;clear:right;text-align:left;font-size:88%;line-height:1.5em}.infobox caption{font-size:125%;font-weight:bold}.infobox td,.infobox th{vertical-align:top}.infobox.bordered{border-collapse:collapse}.infobox.bordered td,.infobox.bordered th{border:1px solid #aaa}.infobox.bordered .borderless td,.infobox.bordered .borderless th{border:0}.infobox.sisterproject{width:20em;font-size:90%}.infobox.standard-talk{border:1px solid #c0c090;background-color:#f8eaba}.infobox.standard-talk.bordered td,.infobox.standard-talk.bordered th{border:1px solid #c0c090}.infobox.bordered .mergedtoprow td,.infobox.bordered .mergedtoprow th{border:0;border-top:1px solid #aaa;border-right:1px solid #aaa}.infobox.bordered .mergedrow td,.infobox.bordered .mergedrow th{border:0;border-right:1px solid #aaa}.infobox.geography{border-collapse:collapse;line-height:1.2em;font-size:90%}.infobox.geography td,.infobox.geography th{border-top:1px solid #aaa;padding:.4em .6em .4em .6em}.infobox.geography .mergedtoprow td,.infobox.geography .mergedtoprow th{border-top:1px solid #aaa;padding:.4em .6em .2em .6em}.infobox.geography .mergedrow td,.infobox.geography .mergedrow th{border:0;padding:0 .6em .2em .6em}.infobox.geography .mergedbottomrow td,.infobox.geography .mergedbottomrow th{border-top:0;border-bottom:1px solid #aaa;padding:0 .6em .4em .6em}.infobox.geography .maptable td,.infobox.geography .maptable th{border:0;padding:0}.wikitable.plainrowheaders th[scope=row]{font-weight:normal;text-align:left}.wikitable td ul,.wikitable td ol,.wikitable td dl{text-align:left}.wikitable.hlist td ul,.wikitable.hlist td ol,.wikitable.hlist td dl{text-align:inherit}div.listenlist{background:url("//upload.wikimedia.org/wikipedia/commons/4/47/Sound-icon.svg") no-repeat scroll 0 0 transparent;background-size:30px;padding-left:40px}table.mw-hiero-table td{vertical-align:middle}div.medialist{min-height:50px;margin:1em;background-position:top left;background-repeat:no-repeat}div.medialist ul{list-style-type:none;list-style-image:none;margin:0}div.medialist ul li{padding-bottom:.5em}div.medialist ul li li{font-size:91%;padding-bottom:0}div#content a[href$=".pdf"].external,div#content a[href*=".pdf?"].external,div#content a[href*=".pdf#"].external,div#content a[href$=".PDF"].external,div#content a[href*=".PDF?"].external,div#content a[href*=".PDF#"].external,div#mw_content a[href$=".pdf"].external,div#mw_content a[href*=".pdf?"].external,div#mw_content a[href*=".pdf#"].external,div#mw_content a[href$=".PDF"].external,div#mw_content a[href*=".PDF?"].external,div#mw_content a[href*=".PDF#"].external{background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") no-repeat right;padding-right:18px}div#content span.PDFlink a,div#mw_content span.PDFlink a{background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") no-repeat right;padding-right:18px}div.columns-2 div.column{float:left;width:50%;min-width:300px}div.columns-3 div.column{float:left;width:33.3%;min-width:200px}div.columns-4 div.column{float:left;width:25%;min-width:150px}div.columns-5 div.column{float:left;width:20%;min-width:120px}.messagebox{border:1px solid #aaa;background-color:#f9f9f9;width:80%;margin:0 auto 1em auto;padding:.2em}.messagebox.merge{border:1px solid #c0b8cc;background-color:#f0e5ff;text-align:center}.messagebox.cleanup{border:1px solid #9f9fff;background-color:#efefff;text-align:center}.messagebox.standard-talk{border:1px solid #c0c090;background-color:#f8eaba;margin:4px auto}.mbox-inside .standard-talk,.messagebox.nested-talk{border:1px solid #c0c090;background-color:#f8eaba;width:100%;margin:2px 0;padding:2px}.messagebox.small{width:238px;font-size:85%;float:right;clear:both;margin:0 0 1em 1em;line-height:1.25em}.messagebox.small-talk{width:238px;font-size:85%;float:right;clear:both;margin:0 0 1em 1em;line-height:1.25em;background:#F8EABA}th.mbox-text,td.mbox-text{border:none;padding:.25em .9em;width:100%}td.mbox-image{border:none;padding:2px 0 2px .9em;text-align:center}td.mbox-imageright{border:none;padding:2px .9em 2px 0;text-align:center}td.mbox-empty-cell{border:none;padding:0;width:1px}table.ambox{margin:0 10%;border:1px solid #aaa;border-left:10px solid #1e90ff;background:#fbfbfb}table.ambox+table.ambox{margin-top:-1px}.ambox th.mbox-text,.ambox td.mbox-text{padding:.25em .5em}.ambox td.mbox-image{padding:2px 0 2px .5em}.ambox td.mbox-imageright{padding:2px .5em 2px 0}table.ambox-notice{border-left:10px solid #1e90ff}table.ambox-speedy{border-left:10px solid #b22222;background:#fee}table.ambox-delete{border-left:10px solid #b22222}table.ambox-content{border-left:10px solid #f28500}table.ambox-style{border-left:10px solid #f4c430}table.ambox-move{border-left:10px solid #9932cc}table.ambox-protection{border-left:10px solid #bba}table.imbox{margin:4px 10%;border-collapse:collapse;border:3px solid #1e90ff;background:#fbfbfb}.imbox .mbox-text .imbox{margin:0 -0.5em;display:block}.mbox-inside .imbox{margin:4px}table.imbox-notice{border:3px solid #1e90ff}table.imbox-speedy{border:3px solid #b22222;background:#fee}table.imbox-delete{border:3px solid #b22222}table.imbox-content{border:3px solid #f28500}table.imbox-style{border:3px solid #f4c430}table.imbox-move{border:3px solid #9932cc}table.imbox-protection{border:3px solid #bba}table.imbox-license{border:3px solid #88a;background:#f7f8ff}table.imbox-featured{border:3px solid #cba135}table.cmbox{margin:3px 10%;border-collapse:collapse;border:1px solid #aaa;background:#DFE8FF}table.cmbox-notice{background:#D8E8FF}table.cmbox-speedy{margin-top:4px;margin-bottom:4px;border:4px solid #b22222;background:#FFDBDB}table.cmbox-delete{background:#FFDBDB}table.cmbox-content{background:#FFE7CE}table.cmbox-style{background:#FFF9DB}table.cmbox-move{background:#E4D8FF}table.cmbox-protection{background:#EFEFE1}table.ombox{margin:4px 10%;border-collapse:collapse;border:1px solid #aaa;background:#f9f9f9}table.ombox-notice{border:1px solid #aaa}table.ombox-speedy{border:2px solid #b22222;background:#fee}table.ombox-delete{border:2px solid #b22222}table.ombox-content{border:1px solid #f28500}table.ombox-style{border:1px solid #f4c430}table.ombox-move{border:1px solid #9932cc}table.ombox-protection{border:2px solid #bba}table.tmbox{margin:4px 10%;border-collapse:collapse;border:1px solid #c0c090;background:#f8eaba}.mediawiki .mbox-inside .tmbox{margin:2px 0;width:100%}.mbox-inside .tmbox.mbox-small{line-height:1.5em;font-size:100%}table.tmbox-speedy{border:2px solid #b22222;background:#fee}table.tmbox-delete{border:2px solid #b22222}table.tmbox-content{border:2px solid #f28500}table.tmbox-style{border:2px solid #f4c430}table.tmbox-move{border:2px solid #9932cc}table.tmbox-protection,table.tmbox-notice{border:1px solid #c0c090}table.dmbox{clear:both;margin:.9em 1em;border-top:1px solid #ccc;border-bottom:1px solid #ccc;background:transparent}table.fmbox{clear:both;margin:.2em 0;width:100%;border:1px solid #aaa;background:#f9f9f9}table.fmbox-system{background:#f9f9f9}table.fmbox-warning{border:1px solid #bb7070;background:#ffdbdb}table.fmbox-editnotice{background:transparent}div.mw-warning-with-logexcerpt,div.mw-lag-warn-high,div.mw-cascadeprotectedwarning,div#mw-protect-cascadeon{clear:both;margin:.2em 0;border:1px solid #bb7070;background:#ffdbdb;padding:.25em .9em}div.mw-lag-warn-normal,div.fmbox-system{clear:both;margin:.2em 0;border:1px solid #aaa;background:#f9f9f9;padding:.25em .9em}body.mediawiki table.mbox-small{clear:right;float:right;margin:4px 0 4px 1em;width:238px;font-size:88%;line-height:1.25em}body.mediawiki table.mbox-small-left{margin:4px 1em 4px 0;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.compact-ambox table .mbox-image,.compact-ambox table .mbox-imageright,.compact-ambox table .mbox-empty-cell{display:none}.compact-ambox table.ambox{border:none;border-collapse:collapse;background:transparent;margin:0 0 0 1.6em!important;padding:0!important;width:auto;display:block}body.mediawiki .compact-ambox table.mbox-small-left{font-size:100%;width:auto;margin:0}.compact-ambox table .mbox-text{padding:0!important;margin:0!important}.compact-ambox table .mbox-text-span{display:list-item;line-height:1.5em;list-style-type:square;list-style-image:url(//bits.wikimedia.org/skins/common/images/bullet.gif)}.skin-vector .compact-ambox table .mbox-text-span{list-style-type:circle;list-style-image:url(//bits.wikimedia.org/skins/vector/images/bullet-icon.png)}.compact-ambox .hide-when-compact{display:none}div.noarticletext{border:none;background:transparent;padding:0}.visualhide{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}#wpSave{font-weight:bold}.hiddenStructure{display:inline!important;color:#f00;background-color:#0f0}.check-icon a.new{display:none;speak:none}.nounderlines a,.IPA a:link,.IPA a:visited{text-decoration:none!important}div.NavFrame{margin:0;padding:4px;border:1px solid #aaa;text-align:center;border-collapse:collapse;font-size:95%}div.NavFrame+div.NavFrame{border-top-style:none;border-top-style:hidden}div.NavPic{background-color:#fff;margin:0;padding:2px;float:left}div.NavFrame div.NavHead{height:1.6em;font-weight:bold;background-color:#ccf;position:relative}div.NavFrame p,div.NavFrame div.NavContent,div.NavFrame div.NavContent p{font-size:100%}div.NavEnd{margin:0;padding:0;line-height:1px;clear:both}a.NavToggle{position:absolute;top:0;right:3px;font-weight:normal;font-size:90%}.rellink,.dablink{font-style:italic;padding-left:1.6em;margin-bottom:.5em}.rellink i,.dablink i{font-style:normal}.listify td{display:list-item}.listify tr{display:block}.listify table{display:block}.geo-default,.geo-dms,.geo-dec{display:inline}.geo-nondefault,.geo-multi-punct{display:none}.longitude,.latitude{white-space:nowrap}.nonumtoc .tocnumber{display:none}.nonumtoc #toc ul,.nonumtoc .toc ul{line-height:1.5em;list-style:none none;margin:.3em 0 0;padding:0}.nonumtoc #toc ul ul,.nonumtoc .toc ul ul{margin:0 0 0 2em}.toclimit-2 .toclevel-1 ul,.toclimit-3 .toclevel-2 ul,.toclimit-4 .toclevel-3 ul,.toclimit-5 .toclevel-4 ul,.toclimit-6 .toclevel-5 ul,.toclimit-7 .toclevel-6 ul{display:none}blockquote.templatequote{margin-top:0}blockquote.templatequote div.templatequotecite{line-height:1em;text-align:left;padding-left:2em;margin-top:0}blockquote.templatequote div.templatequotecite cite{font-size:85%}div.user-block{padding:5px;margin-bottom:.5em;border:1px solid #A9A9A9;background-color:#FFEFD5}.nowrap,.nowraplinks a,.nowraplinks .selflink,sup.reference a{white-space:nowrap}.wrap,.wraplinks a{white-space:normal}.template-documentation{clear:both;margin:1em 0 0 0;border:1px solid #aaa;background-color:#ecfcf4;padding:1em}.imagemap-inline div{display:inline}#wpUploadDescription{height:13em}.thumbinner{min-width:100px}div.thumb .thumbimage{background-color:#fff}div#content .gallerybox div.thumb{background-color:#F9F9F9}.gallerybox .thumb img{background:#fff url(//bits.wikimedia.org/skins/common/images/Checker-16x16.png) repeat}.ns-0 .gallerybox .thumb img,.ns-2 .gallerybox .thumb img,.ns-100 .gallerybox .thumb img,.nochecker .gallerybox .thumb img{background:#fff}#mw-subcategories,#mw-pages,#mw-category-media,#filehistory,#wikiPreview,#wikiDiff{clear:both}body.rtl #mw-articlefeedbackv5,body.rtl #mw-articlefeedback{display:block;margin-bottom:1em;clear:right;float:right}.wpb .wpb-header{display:none}.wpbs-inner .wpb .wpb-header{display:block}.wpbs-inner .wpb .wpb-header{display:table-row}.wpbs-inner .wpb-outside{display:none}.mw-tag-markers{font-family:sans-serif;font-style:italic;font-size:90%}.sysop-show,.accountcreator-show,.templateeditor-show,.autoconfirmed-show{display:none}.ve-init-mw-viewPageTarget-toolbar-editNotices-notice .editnotice-redlink{display:none!important}ul.permissions-errors>li{list-style:none none}ul.permissions-errors{margin:0}body.page-Special_UserLogin .mw-label label,body.page-Special_UserLogin_signup .mw-label label{white-space:nowrap}.transborder{border:solid transparent}* html .transborder{border:solid #000001;filter:chroma(color=#000001)}.updatedmarker{background-color:transparent;color:#006400}li.mw-changeslist-line-watched .mw-title,table.mw-changeslist-line-watched .mw-title,table.mw-enhanced-watch .mw-enhanced-rctime{font-weight:normal}span.texhtml{font-family:"Times New Roman","Nimbus Roman No9 L",Times,serif;font-size:118%;white-space:nowrap}span.texhtml span.texhtml{font-size:100%}div.mw-geshi div,div.mw-geshi div pre,span.mw-geshi,pre.source-css,pre.source-javascript,pre.source-lua{font-family:monospace,Courier!important}table#mw-prefixindex-list-table,table#mw-prefixindex-nav-table{width:98%}.portal-column-left{float:left;width:50%}.portal-column-right{float:right;width:49%}.portal-column-left-wide{float:left;width:60%}.portal-column-right-narrow{float:right;width:39%}.portal-column-left-extra-wide{float:left;width:70%}.portal-column-right-extra-narrow{float:right;width:29%}@media only screen and (max-width:800px){.portal-column-left,.portal-column-right,.portal-column-left-wide,.portal-column-right-narrow,.portal-column-left-extra-wide,.portal-column-right-extra-narrow{float:inherit;width:inherit}}#bodyContent .letterhead{background-image:url('//upload.wikimedia.org/wikipedia/commons/e/e0/Tan-page-corner.png');background-repeat:no-repeat;padding:2em;background-color:#faf9f2}.treeview ul{padding:0;margin:0}.treeview li{padding:0;margin:0;list-style-type:none;list-style-image:none;zoom:1}.treeview li li{background:url("//upload.wikimedia.org/wikipedia/commons/f/f2/Treeview-grey-line.png") no-repeat 0 -2981px;padding-left:20px;text-indent:.3em}.treeview li li.lastline{background-position:0 -5971px}.treeview li.emptyline>ul{margin-left:-1px}.treeview li.emptyline>ul>li:first-child{background-position:0 9px}td .sortkey,th .sortkey{display:none;speak:none}.inputbox-hidecheckboxes form .inputbox-element{display:none!important}#editpage-specialchars{display:none}.k-player .k-attribution{visibility:hidden}@media(-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(min-resolution:1.5dppx),(min-resolution:144dpi){#p-logo a{background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Wikipedia-logo-v2-en.svg/204px-Wikipedia-logo-v2-en.svg.png")!important;background-size:136px auto}}@media(-webkit-min-device-pixel-ratio:2),(min--moz-device-pixel-ratio:2),(min-resolution:2dppx),(min-resolution:192dpi){#p-logo a{background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Wikipedia-logo-v2-en.svg/270px-Wikipedia-logo-v2-en.svg.png")!important;background-size:135px auto}}.ns-0 .ambox,.ns-0 .navbox,.ns-0 .vertical-navbox,.ns-0 .infobox.sisterproject,.ns-0 .dablink,.ns-0 .metadata,.editlink,.navbar,a.NavToggle,span.collapseButton,span.mw-collapsible-toggle,th .sortkey,td .sortkey{display:none!important}#content cite a.external.text:after,.nourlexpansion a.external.text:after,.nourlexpansion a.external.autonumber:after{display:none!important}table.collapsible tr,div.NavPic,div.NavContent{display:block!important}table.collapsible tr{display:table-row!important}#firstHeading{margin:0}#content a.external.text:after,#content a.external.autonumber:after{word-wrap:break-word}body.page-Main_Page #deleteconfirm,body.page-Main_Page #t-cite,body.page-Main_Page #footer-info-lastmod,body.action-view.page-Main_Page #siteSub,body.action-view.page-Main_Page #contentSub,body.action-view.page-Main_Page h1.firstHeading{display:none!important}body.page-Main_Page #mp-topbanner{margin-top:0!important}#coordinates{position:absolute;top:0;right:0;float:right;margin:0;padding:0;line-height:1.5em;text-align:right;text-indent:0;font-size:85%;text-transform:none;white-space:nowrap}div.topicon{position:absolute;top:-2em;margin-right:-10px;display:block!important}div.flaggedrevs_short{position:absolute;top:-3em;right:80px;z-index:1;margin-left:0;margin-right:-10px}body.rtl #protected-icon{left:55px}body.rtl #spoken-icon,body.rtl #commons-icon{left:30px}body.rtl #featured-star{left:10px}div.vectorMenu div{z-index:2}#siteSub{display:inline;font-size:92%}li.GA{list-style-image:url(//upload.wikimedia.org/wikipedia/commons/4/42/Monobook-bullet-ga.png)}li.FA{list-style-image:url(//upload.wikimedia.org/wikipedia/commons/d/d4/Monobook-bullet-star.png)}li.mw-changeslist-line-watched,li.mw-history-line-updated{list-style-image:url(//upload.wikimedia.org/wikipedia/commons/c/c2/ChangedBulletVector.png)}#bodyContent a.external[href ^="https://"],.link-https{background:url(//upload.wikimedia.org/wikipedia/en/0/00/Lock_icon_blue.gif) center right no-repeat;padding-right:16px}div.redirectMsg img{vertical-align:text-bottom}.redirectText{font-size:150%;margin:5px}
\ No newline at end of file diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/write.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/write.py deleted file mode 100644 index 939e11d5910..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/bench/write.py +++ /dev/null @@ -1,344 +0,0 @@ -#!/usr/bin/env python -# -*- coding: ascii -*- -r""" -========================= - Write benchmark results -========================= - -Write benchmark results. - -:Copyright: - - Copyright 2014 - Andr\xe9 Malo or his licensors, as applicable - -:License: - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -Usage:: - - python -mbench.write [-p plain] [-t table] <pickled - - -p plain Plain file to write to (like docs/BENCHMARKS). - -t table Table file to write to (like docs/_userdoc/benchmark.txt). - -""" -if __doc__: - __doc__ = __doc__.encode('ascii').decode('unicode_escape') -__author__ = r"Andr\xe9 Malo".encode('ascii').decode('unicode_escape') -__docformat__ = "restructuredtext en" -__license__ = "Apache License, Version 2.0" -__version__ = "1.0.0" - -import os as _os -import re as _re -import sys as _sys - - -try: - unicode -except NameError: - def uni(v): - if hasattr(v, 'decode'): - return v.decode('latin-1') - return str(v) -else: - def uni(v): - if isinstance(v, unicode): - return v.encode('utf-8') - return str(v) - - -def write_table(filename, results): - """ - Output tabled benchmark results - - :Parameters: - `filename` : ``str`` - Filename to write to - - `results` : ``list`` - Results - """ - try: - next - except NameError: - next = lambda i: (getattr(i, 'next', None) or i.__next__)() - try: - cmp - except NameError: - cmp = lambda a, b: (a > b) - (a < b) - - names = [ - ('cssmin', 'YUI Port'), - ('rcssmin', '|rcssmin|'), - ('_rcssmin', r'_\ |rcssmin|'), - ] - benched_per_table = 2 - - results = sorted(results, reverse=True) - - # First we transform our data into a table (list of lists) - pythons, widths = [], [0] * (benched_per_table + 1) - last_version = None - for version, _, result in results: - version = uni(version) - if not(last_version is None or version.startswith('2.')): - continue - last_version = version - - namesub = _re.compile(r'(?:-\d+(?:\.\d+)*)?\.css$').sub - result = iter(result) - tables = [] - - # given our data it's easier to create the table transposed... - for benched in result: - rows = [['Name'] + [desc for _, desc in names]] - for _ in range(benched_per_table): - if _: - try: - benched = next(result) - except StopIteration: - rows.append([''] + ['' for _ in names]) - continue - - times = dict(( - uni(port), (time, benched['sizes'][idx]) - ) for idx, (port, time) in enumerate(benched['times'])) - columns = ['%s (%.1f)' % ( - namesub('', _os.path.basename(uni(benched['filename']))), - benched['size'] / 1024.0, - )] - for idx, (port, _) in enumerate(names): - if port not in times: - columns.append('n/a') - continue - time, size = times[port] - if time is None: - columns.append('(failed)') - continue - columns.append('%s%.2f ms (%.1f %s)' % ( - idx == 0 and ' ' or '', - time, - size / 1024.0, - idx == 0 and '\\*' or ['=', '>', '<'][ - cmp(size, benched['sizes'][0]) - ], - )) - rows.append(columns) - - # calculate column widths (global for all tables) - for idx, row in enumerate(rows): - widths[idx] = max(widths[idx], max(map(len, row))) - - # ... and transpose it back. - tables.append(zip(*rows)) - pythons.append((version, tables)) - - if last_version.startswith('2.'): - break - - # Second we create a rest table from it - lines = [] - separator = lambda c='-': '+'.join([''] + [ - c * (width + 2) for width in widths - ] + ['']) - - for idx, (version, tables) in enumerate(pythons): - if idx: - lines.append('') - lines.append('') - - line = 'Python %s' % (version,) - lines.append(line) - lines.append('~' * len(line)) - - for table in tables: - lines.append('') - lines.append('.. rst-class:: benchmark') - lines.append('') - - for idx, row in enumerate(table): - if idx == 0: - # header - lines.append(separator()) - lines.append('|'.join([''] + [ - ' %s%*s ' % (col, len(col) - width, '') - for width, col in zip(widths, row) - ] + [''])) - lines.append(separator('=')) - else: # data - lines.append('|'.join([''] + [ - j == 0 and ( - ' %s%*s ' % (col, len(col) - widths[j], '') - ) or ( - ['%*s ', ' %*s '][idx == 1] % (widths[j], col) - ) - for j, col in enumerate(row) - ] + [''])) - lines.append(separator()) - - fplines = [] - fp = open(filename) - try: - fpiter = iter(fp) - for line in fpiter: - line = line.rstrip() - if line == '.. begin tables': - buf = [] - for line in fpiter: - line = line.rstrip() - if line == '.. end tables': - fplines.append('.. begin tables') - fplines.append('') - fplines.extend(lines) - fplines.append('') - fplines.append('.. end tables') - buf = [] - break - else: - buf.append(line) - else: - fplines.extend(buf) - _sys.stderr.write("Placeholder container not found!\n") - else: - fplines.append(line) - finally: - fp.close() - - fp = open(filename, 'w') - try: - fp.write('\n'.join(fplines) + '\n') - finally: - fp.close() - - -def write_plain(filename, results): - """ - Output plain benchmark results - - :Parameters: - `filename` : ``str`` - Filename to write to - - `results` : ``list`` - Results - """ - lines = [] - results = sorted(results, reverse=True) - for idx, (version, import_notes, result) in enumerate(results): - if idx: - lines.append('') - lines.append('') - - lines.append('$ python%s -OO bench/main.py bench/*.css' % ( - '.'.join(version.split('.')[:2]) - )) - lines.append('~' * 72) - for note in import_notes: - lines.append(uni(note)) - lines.append('Python Release: %s' % (version,)) - - for single in result: - lines.append('') - lines.append('Benchmarking %r... (%.1f KiB)' % ( - uni(single['filename']), single['size'] / 1024.0 - )) - for msg in single['messages']: - lines.append(msg) - times = [] - space = max([len(uni(port)) for port, _ in single['times']]) - for idx, (port, time) in enumerate(single['times']): - port = uni(port) - if time is None: - lines.append(" FAILED %s" % (port,)) - else: - times.append(time) - lines.append( - " Timing %s%s ... (%5.1f KiB %s) %8.2f ms" % ( - port, - " " * (space - len(port)), - single['sizes'][idx] / 1024.0, - idx == 0 and '*' or ['=', '>', '<'][ - cmp(single['sizes'][idx], single['sizes'][0]) - ], - time - ) - ) - if len(times) > 1: - lines[-1] += " (factor: %s)" % (', '.join([ - '%.2f' % (timed / time) for timed in times[:-1] - ])) - - lines.append('') - lines.append('') - lines.append('# vim: nowrap') - fp = open(filename, 'w') - try: - fp.write('\n'.join(lines) + '\n') - finally: - fp.close() - - -def main(argv=None): - """ Main """ - import getopt as _getopt - import pickle as _pickle - - if argv is None: - argv = _sys.argv[1:] - try: - opts, args = _getopt.getopt(argv, "hp:t:", ["help"]) - except getopt.GetoptError: - e = _sys.exc_info()[0](_sys.exc_info()[1]) - print >> _sys.stderr, "%s\nTry %s -mbench.write --help" % ( - e, - _os.path.basename(_sys.executable), - ) - _sys.exit(2) - - plain, table = None, None - for key, value in opts: - if key in ("-h", "--help"): - print >> _sys.stderr, ( - "%s -mbench.write [-p plain] [-t table] <pickled" % ( - _os.path.basename(_sys.executable), - ) - ) - _sys.exit(0) - elif key == '-p': - plain = str(value) - elif key == '-t': - table = str(value) - - struct = [] - _sys.stdin = getattr(_sys.stdin, 'detach', lambda: _sys.stdin)() - try: - while True: - version, import_notes, result = _pickle.load(_sys.stdin) - if hasattr(version, 'decode'): - version = version.decode('latin-1') - struct.append((version, import_notes, result)) - except EOFError: - pass - - if plain: - write_plain(plain, struct) - - if table: - write_table(table, struct) - - -if __name__ == '__main__': - main() diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/BENCHMARKS b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/BENCHMARKS deleted file mode 100644 index 9a49e9b51bf..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/BENCHMARKS +++ /dev/null @@ -1,61 +0,0 @@ -$ python3.4 -OO bench/main.py bench/*.css -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Python Release: 3.4.2 - -Benchmarking 'bench/wikipedia.css'... (81.0 KiB) - Timing cssmin ... ( 49.4 KiB *) 163.11 ms - Timing rcssmin ... ( 49.6 KiB >) 45.48 ms (factor: 3.59) - Timing _rcssmin ... ( 49.6 KiB >) 0.43 ms (factor: 378.93, 105.66) - -Benchmarking 'bench/wikipedia.min.css'... (49.4 KiB) - Timing cssmin ... ( 49.4 KiB *) 119.00 ms - Timing rcssmin ... ( 49.4 KiB =) 20.94 ms (factor: 5.68) - Timing _rcssmin ... ( 49.4 KiB =) 0.26 ms (factor: 454.45, 79.98) - - -$ python3.3 -OO bench/main.py bench/*.css -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Python Release: 3.3.5 - -Benchmarking 'bench/wikipedia.css'... (81.0 KiB) - Timing cssmin ... ( 49.4 KiB *) 185.01 ms - Timing rcssmin ... ( 49.6 KiB >) 59.30 ms (factor: 3.12) - Timing _rcssmin ... ( 49.6 KiB >) 0.52 ms (factor: 356.38, 114.23) - -Benchmarking 'bench/wikipedia.min.css'... (49.4 KiB) - Timing cssmin ... ( 49.4 KiB *) 136.26 ms - Timing rcssmin ... ( 49.4 KiB =) 25.51 ms (factor: 5.34) - Timing _rcssmin ... ( 49.4 KiB =) 0.26 ms (factor: 515.24, 96.47) - - -$ python3.2 -OO bench/main.py bench/*.css -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Python Release: 3.2.5 - -Benchmarking 'bench/wikipedia.css'... (81.0 KiB) - Timing cssmin ... ( 49.4 KiB *) 225.32 ms - Timing rcssmin ... ( 49.6 KiB >) 57.51 ms (factor: 3.92) - Timing _rcssmin ... ( 49.6 KiB >) 0.43 ms (factor: 527.98, 134.77) - -Benchmarking 'bench/wikipedia.min.css'... (49.4 KiB) - Timing cssmin ... ( 49.4 KiB *) 129.43 ms - Timing rcssmin ... ( 49.4 KiB =) 24.45 ms (factor: 5.29) - Timing _rcssmin ... ( 49.4 KiB =) 0.25 ms (factor: 526.94, 99.55) - - -$ python2.7 -OO bench/main.py bench/*.css -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Python Release: 2.7.7 - -Benchmarking 'bench/wikipedia.css'... (81.0 KiB) - Timing cssmin ... ( 49.4 KiB *) 175.98 ms - Timing rcssmin ... ( 49.6 KiB >) 46.22 ms (factor: 3.81) - Timing _rcssmin ... ( 49.6 KiB >) 0.45 ms (factor: 390.95, 102.68) - -Benchmarking 'bench/wikipedia.min.css'... (49.4 KiB) - Timing cssmin ... ( 49.4 KiB *) 126.19 ms - Timing rcssmin ... ( 49.4 KiB =) 19.92 ms (factor: 6.33) - Timing _rcssmin ... ( 49.4 KiB =) 0.27 ms (factor: 469.78, 74.17) - - -# vim: nowrap diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/CHANGES b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/CHANGES deleted file mode 100644 index e179dce99dd..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/CHANGES +++ /dev/null @@ -1,42 +0,0 @@ -Changes with version 1.0.5 - - *) Added support for pypy 2.2 - - *) Updated benchmarks - - *) Relint with newer pylint - - *) Fix locale problem with the setup script on python3. - Submitted by https://github.com/svenstaro - - -Changes with version 1.0.4 - - *) Documentation and benchmark updates - - -Changes with version 1.0.3 - - *) Added support for the following grouping @-rules: - @supports, @document, @keyframes - - *) Added support for Python 3.4 and Jython 2.7 - - -Changes with version 1.0.2 - - *) Added compat option to setup.py supporting the pip installer - - *) Added support for pypy (1.9, 2.0) - - *) Added support for jython (2.5) - - -Changes with version 1.0.1 - - *) Added support for Python 3.3 - - -Changes with version 1.0.0 - - *) First stable release. diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/CLASSIFIERS b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/CLASSIFIERS deleted file mode 100644 index 10d59650380..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/CLASSIFIERS +++ /dev/null @@ -1,19 +0,0 @@ -Development Status :: 5 - Production/Stable -Environment :: Web Environment -Intended Audience :: Developers -License :: OSI Approved -License :: OSI Approved :: Apache License, Version 2.0 -Operating System :: OS Independent -Programming Language :: C -Programming Language :: Python -Programming Language :: Python :: 2 -Programming Language :: Python :: 3 -Programming Language :: Python :: Implementation :: CPython -Programming Language :: Python :: Implementation :: Jython -Programming Language :: Python :: Implementation :: PyPy -Topic :: Internet :: WWW/HTTP :: Dynamic Content -Topic :: Software Development :: Libraries -Topic :: Software Development :: Libraries :: Python Modules -Topic :: Text Processing -Topic :: Text Processing :: Filters -Topic :: Utilities diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/DESCRIPTION b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/DESCRIPTION deleted file mode 100644 index b51a7fdb837..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/DESCRIPTION +++ /dev/null @@ -1,85 +0,0 @@ -============== - CSS Minifier -============== - -RCSSmin is a CSS minifier. - -The minifier is based on the semantics of the `YUI compressor`_\, which itself -is based on `the rule list by Isaac Schlueter`_\. - -This module is a re-implementation aiming for speed instead of maximum -compression, so it can be used at runtime (rather than during a preprocessing -step). RCSSmin does syntactical compression only (removing spaces, comments -and possibly semicolons). It does not provide semantic compression (like -removing empty blocks, collapsing redundant properties etc). It does, however, -support various CSS hacks (by keeping them working as intended). - -Here's a feature list: - -- Strings are kept, except that escaped newlines are stripped -- Space/Comments before the very end or before various characters are - stripped: ``:{});=>+],!`` (The colon (``:``) is a special case, a single - space is kept if it's outside a ruleset.) -- Space/Comments at the very beginning or after various characters are - stripped: ``{}(=:>+[,!`` -- Optional space after unicode escapes is kept, resp. replaced by a simple - space -- whitespaces inside ``url()`` definitions are stripped -- Comments starting with an exclamation mark (``!``) can be kept optionally. -- All other comments and/or whitespace characters are replaced by a single - space. -- Multiple consecutive semicolons are reduced to one -- The last semicolon within a ruleset is stripped -- CSS Hacks supported: - - - IE7 hack (``>/**/``) - - Mac-IE5 hack (``/*\*/.../**/``) - - The boxmodelhack is supported naturally because it relies on valid CSS2 - strings - - Between ``:first-line`` and the following comma or curly brace a space is - inserted. (apparently it's needed for IE6) - - Same for ``:first-letter`` - -rcssmin.c is a reimplementation of rcssmin.py in C and improves runtime up to -factor 100 or so (depending on the input). docs/BENCHMARKS in the source -distribution contains the details. - -Both python 2 (>= 2.4) and python 3 are supported. - -.. _YUI compressor: https://github.com/yui/yuicompressor/ - -.. _the rule list by Isaac Schlueter: https://github.com/isaacs/cssmin/ - - -Copyright and License -~~~~~~~~~~~~~~~~~~~~~ - -Copyright 2011 - 2014 -André Malo or his licensors, as applicable. - -The whole package (except for the files in the bench/ directory) is -distributed under the Apache License Version 2.0. You'll find a copy in the -root directory of the distribution or online at: -<http://www.apache.org/licenses/LICENSE-2.0>. - - -Bugs -~~~~ - -No bugs, of course. ;-) -But if you've found one or have an idea how to improve rcssmin, feel free -to send a pull request on `github <https://github.com/ndparker/rcssmin>`_ -or send a mail to <rcssmin-bugs@perlig.de>. - - -Author Information -~~~~~~~~~~~~~~~~~~ - -André "nd" Malo <nd perlig.de> -GPG: 0x8103A37E - - - If God intended people to be naked, they would be born that way. - -- Oscar Wilde - -.. vim:tw=72 syntax=rest diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/PROVIDES b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/PROVIDES deleted file mode 100644 index d6d4e9ebe93..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/PROVIDES +++ /dev/null @@ -1 +0,0 @@ -rcssmin (1.0) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/SUMMARY b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/SUMMARY deleted file mode 100644 index 490e5373442..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/SUMMARY +++ /dev/null @@ -1 +0,0 @@ -CSS Minifier diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/api-objects.txt b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/api-objects.txt deleted file mode 100644 index f4ed223ee65..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/api-objects.txt +++ /dev/null @@ -1,6 +0,0 @@ -rcssmin rcssmin-module.html -rcssmin.__license__ rcssmin-module.html#__license__ -rcssmin._make_cssmin rcssmin-module.html#_make_cssmin -rcssmin.__doc__ rcssmin-module.html#__doc__ -rcssmin.__package__ rcssmin-module.html#__package__ -rcssmin.cssmin rcssmin-module.html#cssmin diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/crarr.png b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/crarr.png Binary files differdeleted file mode 100644 index 26b43c52433..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/crarr.png +++ /dev/null diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/epydoc.css b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/epydoc.css deleted file mode 100644 index 86d41706824..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/epydoc.css +++ /dev/null @@ -1,322 +0,0 @@ - - -/* Epydoc CSS Stylesheet - * - * This stylesheet can be used to customize the appearance of epydoc's - * HTML output. - * - */ - -/* Default Colors & Styles - * - Set the default foreground & background color with 'body'; and - * link colors with 'a:link' and 'a:visited'. - * - Use bold for decision list terms. - * - The heading styles defined here are used for headings *within* - * docstring descriptions. All headings used by epydoc itself use - * either class='epydoc' or class='toc' (CSS styles for both - * defined below). - */ -body { background: #ffffff; color: #000000; } -p { margin-top: 0.5em; margin-bottom: 0.5em; } -a:link { color: #0000ff; } -a:visited { color: #204080; } -dt { font-weight: bold; } -h1 { font-size: +140%; font-style: italic; - font-weight: bold; } -h2 { font-size: +125%; font-style: italic; - font-weight: bold; } -h3 { font-size: +110%; font-style: italic; - font-weight: normal; } -code { font-size: 100%; } -/* N.B.: class, not pseudoclass */ -a.link { font-family: monospace; } - -/* Page Header & Footer - * - The standard page header consists of a navigation bar (with - * pointers to standard pages such as 'home' and 'trees'); a - * breadcrumbs list, which can be used to navigate to containing - * classes or modules; options links, to show/hide private - * variables and to show/hide frames; and a page title (using - * <h1>). The page title may be followed by a link to the - * corresponding source code (using 'span.codelink'). - * - The footer consists of a navigation bar, a timestamp, and a - * pointer to epydoc's homepage. - */ -h1.epydoc { margin: 0; font-size: +140%; font-weight: bold; } -h2.epydoc { font-size: +130%; font-weight: bold; } -h3.epydoc { font-size: +115%; font-weight: bold; - margin-top: 0.2em; } -td h3.epydoc { font-size: +115%; font-weight: bold; - margin-bottom: 0; } -table.navbar { background: #a0c0ff; color: #000000; - border: 2px groove #c0d0d0; } -table.navbar table { color: #000000; } -th.navbar-select { background: #70b0ff; - color: #000000; } -table.navbar a { text-decoration: none; } -table.navbar a:link { color: #0000ff; } -table.navbar a:visited { color: #204080; } -span.breadcrumbs { font-size: 85%; font-weight: bold; } -span.options { font-size: 70%; } -span.codelink { font-size: 85%; } -td.footer { font-size: 85%; } - -/* Table Headers - * - Each summary table and details section begins with a 'header' - * row. This row contains a section title (marked by - * 'span.table-header') as well as a show/hide private link - * (marked by 'span.options', defined above). - * - Summary tables that contain user-defined groups mark those - * groups using 'group header' rows. - */ -td.table-header { background: #70b0ff; color: #000000; - border: 1px solid #608090; } -td.table-header table { color: #000000; } -td.table-header table a:link { color: #0000ff; } -td.table-header table a:visited { color: #204080; } -span.table-header { font-size: 120%; font-weight: bold; } -th.group-header { background: #c0e0f8; color: #000000; - text-align: left; font-style: italic; - font-size: 115%; - border: 1px solid #608090; } - -/* Summary Tables (functions, variables, etc) - * - Each object is described by a single row of the table with - * two cells. The left cell gives the object's type, and is - * marked with 'code.summary-type'. The right cell gives the - * object's name and a summary description. - * - CSS styles for the table's header and group headers are - * defined above, under 'Table Headers' - */ -table.summary { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; - margin-bottom: 0.5em; } -td.summary { border: 1px solid #608090; } -code.summary-type { font-size: 85%; } -table.summary a:link { color: #0000ff; } -table.summary a:visited { color: #204080; } - - -/* Details Tables (functions, variables, etc) - * - Each object is described in its own div. - * - A single-row summary table w/ table-header is used as - * a header for each details section (CSS style for table-header - * is defined above, under 'Table Headers'). - */ -table.details { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; - margin: .2em 0 0 0; } -table.details table { color: #000000; } -table.details a:link { color: #0000ff; } -table.details a:visited { color: #204080; } - -/* Fields */ -dl.fields { margin-left: 2em; margin-top: 1em; - margin-bottom: 1em; } -dl.fields dd ul { margin-left: 0em; padding-left: 0em; } -dl.fields dd ul li ul { margin-left: 2em; padding-left: 0em; } -div.fields { margin-left: 2em; } -div.fields p { margin-bottom: 0.5em; } - -/* Index tables (identifier index, term index, etc) - * - link-index is used for indices containing lists of links - * (namely, the identifier index & term index). - * - index-where is used in link indices for the text indicating - * the container/source for each link. - * - metadata-index is used for indices containing metadata - * extracted from fields (namely, the bug index & todo index). - */ -table.link-index { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; } -td.link-index { border-width: 0px; } -table.link-index a:link { color: #0000ff; } -table.link-index a:visited { color: #204080; } -span.index-where { font-size: 70%; } -table.metadata-index { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; - margin: .2em 0 0 0; } -td.metadata-index { border-width: 1px; border-style: solid; } -table.metadata-index a:link { color: #0000ff; } -table.metadata-index a:visited { color: #204080; } - -/* Function signatures - * - sig* is used for the signature in the details section. - * - .summary-sig* is used for the signature in the summary - * table, and when listing property accessor functions. - * */ -.sig-name { color: #006080; } -.sig-arg { color: #008060; } -.sig-default { color: #602000; } -.summary-sig { font-family: monospace; } -.summary-sig-name { color: #006080; font-weight: bold; } -table.summary a.summary-sig-name:link - { color: #006080; font-weight: bold; } -table.summary a.summary-sig-name:visited - { color: #006080; font-weight: bold; } -.summary-sig-arg { color: #006040; } -.summary-sig-default { color: #501800; } - -/* Subclass list - */ -ul.subclass-list { display: inline; } -ul.subclass-list li { display: inline; } - -/* To render variables, classes etc. like functions */ -table.summary .summary-name { color: #006080; font-weight: bold; - font-family: monospace; } -table.summary - a.summary-name:link { color: #006080; font-weight: bold; - font-family: monospace; } -table.summary - a.summary-name:visited { color: #006080; font-weight: bold; - font-family: monospace; } - -/* Variable values - * - In the 'variable details' sections, each varaible's value is - * listed in a 'pre.variable' box. The width of this box is - * restricted to 80 chars; if the value's repr is longer than - * this it will be wrapped, using a backslash marked with - * class 'variable-linewrap'. If the value's repr is longer - * than 3 lines, the rest will be ellided; and an ellipsis - * marker ('...' marked with 'variable-ellipsis') will be used. - * - If the value is a string, its quote marks will be marked - * with 'variable-quote'. - * - If the variable is a regexp, it is syntax-highlighted using - * the re* CSS classes. - */ -pre.variable { padding: .5em; margin: 0; - background: #dce4ec; color: #000000; - border: 1px solid #708890; } -.variable-linewrap { color: #604000; font-weight: bold; } -.variable-ellipsis { color: #604000; font-weight: bold; } -.variable-quote { color: #604000; font-weight: bold; } -.variable-group { color: #008000; font-weight: bold; } -.variable-op { color: #604000; font-weight: bold; } -.variable-string { color: #006030; } -.variable-unknown { color: #a00000; font-weight: bold; } -.re { color: #000000; } -.re-char { color: #006030; } -.re-op { color: #600000; } -.re-group { color: #003060; } -.re-ref { color: #404040; } - -/* Base tree - * - Used by class pages to display the base class hierarchy. - */ -pre.base-tree { font-size: 80%; margin: 0; } - -/* Frames-based table of contents headers - * - Consists of two frames: one for selecting modules; and - * the other listing the contents of the selected module. - * - h1.toc is used for each frame's heading - * - h2.toc is used for subheadings within each frame. - */ -h1.toc { text-align: center; font-size: 105%; - margin: 0; font-weight: bold; - padding: 0; } -h2.toc { font-size: 100%; font-weight: bold; - margin: 0.5em 0 0 -0.3em; } - -/* Syntax Highlighting for Source Code - * - doctest examples are displayed in a 'pre.py-doctest' block. - * If the example is in a details table entry, then it will use - * the colors specified by the 'table pre.py-doctest' line. - * - Source code listings are displayed in a 'pre.py-src' block. - * Each line is marked with 'span.py-line' (used to draw a line - * down the left margin, separating the code from the line - * numbers). Line numbers are displayed with 'span.py-lineno'. - * The expand/collapse block toggle button is displayed with - * 'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not - * modify the font size of the text.) - * - If a source code page is opened with an anchor, then the - * corresponding code block will be highlighted. The code - * block's header is highlighted with 'py-highlight-hdr'; and - * the code block's body is highlighted with 'py-highlight'. - * - The remaining py-* classes are used to perform syntax - * highlighting (py-string for string literals, py-name for names, - * etc.) - */ -pre.py-doctest { padding: .5em; margin: 1em; - background: #e8f0f8; color: #000000; - border: 1px solid #708890; } -table pre.py-doctest { background: #dce4ec; - color: #000000; } -pre.py-src { border: 2px solid #000000; - background: #f0f0f0; color: #000000; } -.py-line { border-left: 2px solid #000000; - margin-left: .2em; padding-left: .4em; } -.py-lineno { font-style: italic; font-size: 90%; - padding-left: .5em; } -a.py-toggle { text-decoration: none; } -div.py-highlight-hdr { border-top: 2px solid #000000; - border-bottom: 2px solid #000000; - background: #d8e8e8; } -div.py-highlight { border-bottom: 2px solid #000000; - background: #d0e0e0; } -.py-prompt { color: #005050; font-weight: bold;} -.py-more { color: #005050; font-weight: bold;} -.py-string { color: #006030; } -.py-comment { color: #003060; } -.py-keyword { color: #600000; } -.py-output { color: #404040; } -.py-name { color: #000050; } -.py-name:link { color: #000050 !important; } -.py-name:visited { color: #000050 !important; } -.py-number { color: #005000; } -.py-defname { color: #000060; font-weight: bold; } -.py-def-name { color: #000060; font-weight: bold; } -.py-base-class { color: #000060; } -.py-param { color: #000060; } -.py-docstring { color: #006030; } -.py-decorator { color: #804020; } -/* Use this if you don't want links to names underlined: */ -/*a.py-name { text-decoration: none; }*/ - -/* Graphs & Diagrams - * - These CSS styles are used for graphs & diagrams generated using - * Graphviz dot. 'img.graph-without-title' is used for bare - * diagrams (to remove the border created by making the image - * clickable). - */ -img.graph-without-title { border: none; } -img.graph-with-title { border: 1px solid #000000; } -span.graph-title { font-weight: bold; } -span.graph-caption { } - -/* General-purpose classes - * - 'p.indent-wrapped-lines' defines a paragraph whose first line - * is not indented, but whose subsequent lines are. - * - The 'nomargin-top' class is used to remove the top margin (e.g. - * from lists). The 'nomargin' class is used to remove both the - * top and bottom margin (but not the left or right margin -- - * for lists, that would cause the bullets to disappear.) - */ -p.indent-wrapped-lines { padding: 0 0 0 7em; text-indent: -7em; - margin: 0; } -.nomargin-top { margin-top: 0; } -.nomargin { margin-top: 0; margin-bottom: 0; } - -/* HTML Log */ -div.log-block { padding: 0; margin: .5em 0 .5em 0; - background: #e8f0f8; color: #000000; - border: 1px solid #000000; } -div.log-error { padding: .1em .3em .1em .3em; margin: 4px; - background: #ffb0b0; color: #000000; - border: 1px solid #000000; } -div.log-warning { padding: .1em .3em .1em .3em; margin: 4px; - background: #ffffb0; color: #000000; - border: 1px solid #000000; } -div.log-info { padding: .1em .3em .1em .3em; margin: 4px; - background: #b0ffb0; color: #000000; - border: 1px solid #000000; } -h2.log-hdr { background: #70b0ff; color: #000000; - margin: 0; padding: 0em 0.5em 0em 0.5em; - border-bottom: 1px solid #000000; font-size: 110%; } -p.log { font-weight: bold; margin: .5em 0 .5em 0; } -tr.opt-changed { color: #000000; font-weight: bold; } -tr.opt-default { color: #606060; } -pre.log { margin: 0; padding: 0; padding-left: 1em; } diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/epydoc.js b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/epydoc.js deleted file mode 100644 index e787dbcf471..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/epydoc.js +++ /dev/null @@ -1,293 +0,0 @@ -function toggle_private() { - // Search for any private/public links on this page. Store - // their old text in "cmd," so we will know what action to - // take; and change their text to the opposite action. - var cmd = "?"; - var elts = document.getElementsByTagName("a"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "privatelink") { - cmd = elts[i].innerHTML; - elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")? - "hide private":"show private"); - } - } - // Update all DIVs containing private objects. - var elts = document.getElementsByTagName("div"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "private") { - elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block"); - } - else if (elts[i].className == "public") { - elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none"); - } - } - // Update all table rows containing private objects. Note, we - // use "" instead of "block" becaue IE & firefox disagree on what - // this should be (block vs table-row), and "" just gives the - // default for both browsers. - var elts = document.getElementsByTagName("tr"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "private") { - elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":""); - } - } - // Update all list items containing private objects. - var elts = document.getElementsByTagName("li"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "private") { - elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")? - "none":""); - } - } - // Update all list items containing private objects. - var elts = document.getElementsByTagName("ul"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "private") { - elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block"); - } - } - // Set a cookie to remember the current option. - document.cookie = "EpydocPrivate="+cmd; - } -function show_private() { - var elts = document.getElementsByTagName("a"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "privatelink") { - cmd = elts[i].innerHTML; - if (cmd && cmd.substr(0,4)=="show") - toggle_private(); - } - } - } -function getCookie(name) { - var dc = document.cookie; - var prefix = name + "="; - var begin = dc.indexOf("; " + prefix); - if (begin == -1) { - begin = dc.indexOf(prefix); - if (begin != 0) return null; - } else - { begin += 2; } - var end = document.cookie.indexOf(";", begin); - if (end == -1) - { end = dc.length; } - return unescape(dc.substring(begin + prefix.length, end)); - } -function setFrame(url1, url2) { - parent.frames[1].location.href = url1; - parent.frames[2].location.href = url2; - } -function checkCookie() { - var cmd=getCookie("EpydocPrivate"); - if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0) - toggle_private(); - } -function toggleCallGraph(id) { - var elt = document.getElementById(id); - if (elt.style.display == "none") - elt.style.display = "block"; - else - elt.style.display = "none"; - } -function expand(id) { - var elt = document.getElementById(id+"-expanded"); - if (elt) elt.style.display = "block"; - var elt = document.getElementById(id+"-expanded-linenums"); - if (elt) elt.style.display = "block"; - var elt = document.getElementById(id+"-collapsed"); - if (elt) { elt.innerHTML = ""; elt.style.display = "none"; } - var elt = document.getElementById(id+"-collapsed-linenums"); - if (elt) { elt.innerHTML = ""; elt.style.display = "none"; } - var elt = document.getElementById(id+"-toggle"); - if (elt) { elt.innerHTML = "-"; } -} - -function collapse(id) { - var elt = document.getElementById(id+"-expanded"); - if (elt) elt.style.display = "none"; - var elt = document.getElementById(id+"-expanded-linenums"); - if (elt) elt.style.display = "none"; - var elt = document.getElementById(id+"-collapsed-linenums"); - if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; } - var elt = document.getElementById(id+"-toggle"); - if (elt) { elt.innerHTML = "+"; } - var elt = document.getElementById(id+"-collapsed"); - if (elt) { - elt.style.display = "block"; - - var indent = elt.getAttribute("indent"); - var pad = elt.getAttribute("pad"); - var s = "<tt class='py-lineno'>"; - for (var i=0; i<pad.length; i++) { s += " " } - s += "</tt>"; - s += " <tt class='py-line'>"; - for (var i=0; i<indent.length; i++) { s += " " } - s += "<a href='#' onclick='expand(\"" + id; - s += "\");return false'>...</a></tt><br />"; - elt.innerHTML = s; - } -} - -function toggle(id) { - elt = document.getElementById(id+"-toggle"); - if (elt.innerHTML == "-") - collapse(id); - else - expand(id); - return false; -} - -function highlight(id) { - var elt = document.getElementById(id+"-def"); - if (elt) elt.className = "py-highlight-hdr"; - var elt = document.getElementById(id+"-expanded"); - if (elt) elt.className = "py-highlight"; - var elt = document.getElementById(id+"-collapsed"); - if (elt) elt.className = "py-highlight"; -} - -function num_lines(s) { - var n = 1; - var pos = s.indexOf("\n"); - while ( pos > 0) { - n += 1; - pos = s.indexOf("\n", pos+1); - } - return n; -} - -// Collapse all blocks that mave more than `min_lines` lines. -function collapse_all(min_lines) { - var elts = document.getElementsByTagName("div"); - for (var i=0; i<elts.length; i++) { - var elt = elts[i]; - var split = elt.id.indexOf("-"); - if (split > 0) - if (elt.id.substring(split, elt.id.length) == "-expanded") - if (num_lines(elt.innerHTML) > min_lines) - collapse(elt.id.substring(0, split)); - } -} - -function expandto(href) { - var start = href.indexOf("#")+1; - if (start != 0 && start != href.length) { - if (href.substring(start, href.length) != "-") { - collapse_all(4); - pos = href.indexOf(".", start); - while (pos != -1) { - var id = href.substring(start, pos); - expand(id); - pos = href.indexOf(".", pos+1); - } - var id = href.substring(start, href.length); - expand(id); - highlight(id); - } - } -} - -function kill_doclink(id) { - var parent = document.getElementById(id); - parent.removeChild(parent.childNodes.item(0)); -} -function auto_kill_doclink(ev) { - if (!ev) var ev = window.event; - if (!this.contains(ev.toElement)) { - var parent = document.getElementById(this.parentID); - parent.removeChild(parent.childNodes.item(0)); - } -} - -function doclink(id, name, targets_id) { - var elt = document.getElementById(id); - - // If we already opened the box, then destroy it. - // (This case should never occur, but leave it in just in case.) - if (elt.childNodes.length > 1) { - elt.removeChild(elt.childNodes.item(0)); - } - else { - // The outer box: relative + inline positioning. - var box1 = document.createElement("div"); - box1.style.position = "relative"; - box1.style.display = "inline"; - box1.style.top = 0; - box1.style.left = 0; - - // A shadow for fun - var shadow = document.createElement("div"); - shadow.style.position = "absolute"; - shadow.style.left = "-1.3em"; - shadow.style.top = "-1.3em"; - shadow.style.background = "#404040"; - - // The inner box: absolute positioning. - var box2 = document.createElement("div"); - box2.style.position = "relative"; - box2.style.border = "1px solid #a0a0a0"; - box2.style.left = "-.2em"; - box2.style.top = "-.2em"; - box2.style.background = "white"; - box2.style.padding = ".3em .4em .3em .4em"; - box2.style.fontStyle = "normal"; - box2.onmouseout=auto_kill_doclink; - box2.parentID = id; - - // Get the targets - var targets_elt = document.getElementById(targets_id); - var targets = targets_elt.getAttribute("targets"); - var links = ""; - target_list = targets.split(","); - for (var i=0; i<target_list.length; i++) { - var target = target_list[i].split("="); - links += "<li><a href='" + target[1] + - "' style='text-decoration:none'>" + - target[0] + "</a></li>"; - } - - // Put it all together. - elt.insertBefore(box1, elt.childNodes.item(0)); - //box1.appendChild(box2); - box1.appendChild(shadow); - shadow.appendChild(box2); - box2.innerHTML = - "Which <b>"+name+"</b> do you want to see documentation for?" + - "<ul style='margin-bottom: 0;'>" + - links + - "<li><a href='#' style='text-decoration:none' " + - "onclick='kill_doclink(\""+id+"\");return false;'>"+ - "<i>None of the above</i></a></li></ul>"; - } - return false; -} - -function get_anchor() { - var href = location.href; - var start = href.indexOf("#")+1; - if ((start != 0) && (start != href.length)) - return href.substring(start, href.length); - } -function redirect_url(dottedName) { - // Scan through each element of the "pages" list, and check - // if "name" matches with any of them. - for (var i=0; i<pages.length; i++) { - - // Each page has the form "<pagename>-m" or "<pagename>-c"; - // extract the <pagename> portion & compare it to dottedName. - var pagename = pages[i].substring(0, pages[i].length-2); - if (pagename == dottedName.substring(0,pagename.length)) { - - // We've found a page that matches `dottedName`; - // construct its URL, using leftover `dottedName` - // content to form an anchor. - var pagetype = pages[i].charAt(pages[i].length-1); - var url = pagename + ((pagetype=="m")?"-module.html": - "-class.html"); - if (dottedName.length > pagename.length) - url += "#" + dottedName.substring(pagename.length+1, - dottedName.length); - return url; - } - } - } diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/help.html b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/help.html deleted file mode 100644 index d1bf1c8766d..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/help.html +++ /dev/null @@ -1,261 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>Help</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="rcssmin-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Help </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - </table> - </td> - </tr> -</table> - -<h1 class="epydoc"> API Documentation </h1> - -<p> This document contains the API (Application Programming Interface) -documentation for this project. Documentation for the Python -objects defined by the project is divided into separate pages for each -package, module, and class. The API documentation also includes two -pages containing information about the project as a whole: a trees -page, and an index page. </p> - -<h2> Object Documentation </h2> - - <p>Each <strong>Package Documentation</strong> page contains: </p> - <ul> - <li> A description of the package. </li> - <li> A list of the modules and sub-packages contained by the - package. </li> - <li> A summary of the classes defined by the package. </li> - <li> A summary of the functions defined by the package. </li> - <li> A summary of the variables defined by the package. </li> - <li> A detailed description of each function defined by the - package. </li> - <li> A detailed description of each variable defined by the - package. </li> - </ul> - - <p>Each <strong>Module Documentation</strong> page contains:</p> - <ul> - <li> A description of the module. </li> - <li> A summary of the classes defined by the module. </li> - <li> A summary of the functions defined by the module. </li> - <li> A summary of the variables defined by the module. </li> - <li> A detailed description of each function defined by the - module. </li> - <li> A detailed description of each variable defined by the - module. </li> - </ul> - - <p>Each <strong>Class Documentation</strong> page contains: </p> - <ul> - <li> A class inheritance diagram. </li> - <li> A list of known subclasses. </li> - <li> A description of the class. </li> - <li> A summary of the methods defined by the class. </li> - <li> A summary of the instance variables defined by the class. </li> - <li> A summary of the class (static) variables defined by the - class. </li> - <li> A detailed description of each method defined by the - class. </li> - <li> A detailed description of each instance variable defined by the - class. </li> - <li> A detailed description of each class (static) variable defined - by the class. </li> - </ul> - -<h2> Project Documentation </h2> - - <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p> - <ul> - <li> The <em>module hierarchy</em> lists every package and module, with - modules grouped into packages. At the top level, and within each - package, modules and sub-packages are listed alphabetically. </li> - <li> The <em>class hierarchy</em> lists every class, grouped by base - class. If a class has more than one base class, then it will be - listed under each base class. At the top level, and under each base - class, classes are listed alphabetically. </li> - </ul> - - <p> The <strong>Index</strong> page contains indices of terms and - identifiers: </p> - <ul> - <li> The <em>term index</em> lists every term indexed by any object's - documentation. For each term, the index provides links to each - place where the term is indexed. </li> - <li> The <em>identifier index</em> lists the (short) name of every package, - module, class, method, function, variable, and parameter. For each - identifier, the index provides a short description, and a link to - its documentation. </li> - </ul> - -<h2> The Table of Contents </h2> - -<p> The table of contents occupies the two frames on the left side of -the window. The upper-left frame displays the <em>project -contents</em>, and the lower-left frame displays the <em>module -contents</em>: </p> - -<table class="help summary" border="1" cellspacing="0" cellpadding="3"> - <tr style="height: 30%"> - <td align="center" style="font-size: small"> - Project<br />Contents<hr />...</td> - <td align="center" style="font-size: small" rowspan="2" width="70%"> - API<br />Documentation<br />Frame<br /><br /><br /> - </td> - </tr> - <tr> - <td align="center" style="font-size: small"> - Module<br />Contents<hr /> <br />...<br /> - </td> - </tr> -</table><br /> - -<p> The <strong>project contents frame</strong> contains a list of all packages -and modules that are defined by the project. Clicking on an entry -will display its contents in the module contents frame. Clicking on a -special entry, labeled "Everything," will display the contents of -the entire project. </p> - -<p> The <strong>module contents frame</strong> contains a list of every -submodule, class, type, exception, function, and variable defined by a -module or package. Clicking on an entry will display its -documentation in the API documentation frame. Clicking on the name of -the module, at the top of the frame, will display the documentation -for the module itself. </p> - -<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top -navigation bar can be used to control whether the table of contents is -displayed or not. </p> - -<h2> The Navigation Bar </h2> - -<p> A navigation bar is located at the top and bottom of every page. -It indicates what type of page you are currently viewing, and allows -you to go to related pages. The following table describes the labels -on the navigation bar. Note that not some labels (such as -[Parent]) are not displayed on all pages. </p> - -<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%"> -<tr class="summary"> - <th>Label</th> - <th>Highlighted when...</th> - <th>Links to...</th> -</tr> - <tr><td valign="top"><strong>[Parent]</strong></td> - <td valign="top"><em>(never highlighted)</em></td> - <td valign="top"> the parent of the current package </td></tr> - <tr><td valign="top"><strong>[Package]</strong></td> - <td valign="top">viewing a package</td> - <td valign="top">the package containing the current object - </td></tr> - <tr><td valign="top"><strong>[Module]</strong></td> - <td valign="top">viewing a module</td> - <td valign="top">the module containing the current object - </td></tr> - <tr><td valign="top"><strong>[Class]</strong></td> - <td valign="top">viewing a class </td> - <td valign="top">the class containing the current object</td></tr> - <tr><td valign="top"><strong>[Trees]</strong></td> - <td valign="top">viewing the trees page</td> - <td valign="top"> the trees page </td></tr> - <tr><td valign="top"><strong>[Index]</strong></td> - <td valign="top">viewing the index page</td> - <td valign="top"> the index page </td></tr> - <tr><td valign="top"><strong>[Help]</strong></td> - <td valign="top">viewing the help page</td> - <td valign="top"> the help page </td></tr> -</table> - -<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below -the top navigation bar can be used to control whether documentation -for private objects is displayed. Private objects are usually defined -as objects whose (short) names begin with a single underscore, but do -not end with an underscore. For example, "<code>_x</code>", -"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>" -are private objects; but "<code>re.sub</code>", -"<code>__init__</code>", and "<code>type_</code>" are not. However, -if a module defines the "<code>__all__</code>" variable, then its -contents are used to decide which objects are private. </p> - -<p> A timestamp below the bottom navigation bar indicates when each -page was last updated. </p> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="rcssmin-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Help </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/identifier-index.html b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/identifier-index.html deleted file mode 100644 index 82acafdbb7c..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/identifier-index.html +++ /dev/null @@ -1,163 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>Identifier Index</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="rcssmin-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Indices </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - </table> - </td> - </tr> -</table> -<table border="0" width="100%"> -<tr valign="bottom"><td> -<h1 class="epydoc">Identifier Index</h1> -</td><td> -[ - A - B - <a href="#C">C</a> - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - <a href="#R">R</a> - S - T - U - V - W - X - Y - Z - <a href="#_">_</a> -] -</td></table> -<table border="0" width="100%"> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="rcssmin-module.html#cssmin">cssmin()</a><br /> -<span class="index-where">(in <a href="rcssmin-module.html">rcssmin</a>)</span></td> -<td width="33%" class="link-index"> </td> -<td width="33%" class="link-index"> </td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="rcssmin-module.html">rcssmin</a></td> -<td width="33%" class="link-index"> </td> -<td width="33%" class="link-index"> </td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="rcssmin-module.html#__doc__">__doc__</a><br /> -<span class="index-where">(in <a href="rcssmin-module.html">rcssmin</a>)</span></td> -<td width="33%" class="link-index"><a href="rcssmin-module.html#__license__">__license__</a><br /> -<span class="index-where">(in <a href="rcssmin-module.html">rcssmin</a>)</span></td> -<td width="33%" class="link-index"><a href="rcssmin-module.html#__package__">__package__</a><br /> -<span class="index-where">(in <a href="rcssmin-module.html">rcssmin</a>)</span></td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -</table> -<br /><br /><!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="rcssmin-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Indices </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/index.html b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/index.html deleted file mode 100644 index 84ffddda734..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/index.html +++ /dev/null @@ -1,224 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>rcssmin</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Home </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - Module rcssmin - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - </table> - </td> - </tr> -</table> -<!-- ==================== MODULE DESCRIPTION ==================== --> -<h1 class="epydoc">Module rcssmin</h1><p class="nomargin-top"><span class="codelink"><a href="rcssmin-pysrc.html">source code</a></span></p> -<p>CSS Minifier.</p> -<p>The minifier is based on the semantics of the <a class="rst-reference external" href="https://github.com/yui/yuicompressor/" target="_top">YUI compressor</a>, which -itself is based on <a class="rst-reference external" href="https://github.com/isaacs/cssmin/" target="_top">the rule list by Isaac Schlueter</a>.</p> -<p>This module is a re-implementation aiming for speed instead of maximum -compression, so it can be used at runtime (rather than during a preprocessing -step). RCSSmin does syntactical compression only (removing spaces, comments -and possibly semicolons). It does not provide semantic compression (like -removing empty blocks, collapsing redundant properties etc). It does, however, -support various CSS hacks (by keeping them working as intended).</p> -<p>Here's a feature list:</p> -<ul class="rst-simple"> -<li>Strings are kept, except that escaped newlines are stripped</li> -<li>Space/Comments before the very end or before various characters are -stripped: <tt class="rst-docutils literal"><span class="pre">:{});=>+],!</span></tt> (The colon (<tt class="rst-docutils literal">:</tt>) is a special case, a single -space is kept if it's outside a ruleset.)</li> -<li>Space/Comments at the very beginning or after various characters are -stripped: <tt class="rst-docutils literal"><span class="pre">{}(=:>+[,!</span></tt></li> -<li>Optional space after unicode escapes is kept, resp. replaced by a simple -space</li> -<li>whitespaces inside <tt class="rst-docutils literal">url()</tt> definitions are stripped</li> -<li>Comments starting with an exclamation mark (<tt class="rst-docutils literal">!</tt>) can be kept optionally.</li> -<li>All other comments and/or whitespace characters are replaced by a single -space.</li> -<li>Multiple consecutive semicolons are reduced to one</li> -<li>The last semicolon within a ruleset is stripped</li> -<li>CSS Hacks supported:<ul> -<li>IE7 hack (<tt class="rst-docutils literal"><span class="pre">>/**/</span></tt>)</li> -<li>Mac-IE5 hack (<tt class="rst-docutils literal"><span class="pre">/*\*/.../**/</span></tt>)</li> -<li>The boxmodelhack is supported naturally because it relies on valid CSS2 -strings</li> -<li>Between <tt class="rst-docutils literal"><span class="pre">:first-line</span></tt> and the following comma or curly brace a space is -inserted. (apparently it's needed for IE6)</li> -<li>Same for <tt class="rst-docutils literal"><span class="pre">:first-letter</span></tt></li> -</ul> -</li> -</ul> -<p>rcssmin.c is a reimplementation of rcssmin.py in C and improves runtime up to -factor 100 or so (depending on the input). docs/BENCHMARKS in the source -distribution contains the details.</p> -<p>Both python 2 (>= 2.4) and python 3 are supported.</p> - -<hr /> -<div class="fields"> <p><strong>Copyright:</strong> - Copyright 2011 - 2014 -André Malo or his licensors, as applicable - </p> - <p><strong>License:</strong> - <p>Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at</p> -<blockquote> -<a class="rst-reference external" href="http://www.apache.org/licenses/LICENSE-2.0" target="_top">http://www.apache.org/licenses/LICENSE-2.0</a></blockquote> -<p>Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License.</p> - </p> - <p><strong>Version:</strong> - 1.0.5 - </p> - <p><strong>Author:</strong> - André Malo - </p> -</div><!-- ==================== FUNCTIONS ==================== --> -<a name="section-Functions"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td align="left" colspan="2" class="table-header"> - <span class="table-header">Functions</span></td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"><tt class="rst-docutils literal">str</tt></span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="rcssmin-module.html#cssmin" class="summary-sig-name">cssmin</a>(<span class="summary-sig-arg">style</span>, - <span class="summary-sig-arg">keep_bang_comments</span>=<span class="summary-sig-default">False</span>)</span><br /> - Minify CSS.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="rcssmin-pysrc.html#cssmin">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -</table> -<!-- ==================== FUNCTION DETAILS ==================== --> -<a name="section-FunctionDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td align="left" colspan="2" class="table-header"> - <span class="table-header">Function Details</span></td> -</tr> -</table> -<a name="cssmin"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">cssmin</span>(<span class="sig-arg">style</span>, - <span class="sig-arg">keep_bang_comments</span>=<span class="sig-default">False</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="rcssmin-pysrc.html#cssmin">source code</a></span> - </td> - </tr></table> - - Minify CSS. - <dl class="fields"> - <dt>Parameters:</dt> - <dd><ul class="nomargin-top"> - <li><strong class="pname"><code>style</code></strong> (<tt class="rst-docutils literal">str</tt>) - CSS to minify</li> - <li><strong class="pname"><code>keep_bang_comments</code></strong> (<tt class="rst-docutils literal">bool</tt>) - Keep comments starting with an exclamation mark? (<tt class="rst-docutils literal"><span class="pre">/*!...*/</span></tt>)</li> - </ul></dd> - <dt>Returns: <tt class="rst-docutils literal">str</tt></dt> - <dd>Minified style</dd> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Home </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/module-tree.html b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/module-tree.html deleted file mode 100644 index e522dd1721b..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/module-tree.html +++ /dev/null @@ -1,94 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>Module Hierarchy</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="rcssmin-module.html">Home</a> </th> - - <!-- Tree link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Trees </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Module Hierarchy</h1> -<ul class="nomargin-top"> - <li> <strong class="uidlink"><a href="rcssmin-module.html">rcssmin</a></strong>: <em class="summary">CSS Minifier.</em> </li> -</ul> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="rcssmin-module.html">Home</a> </th> - - <!-- Tree link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Trees </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/rcssmin-module.html b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/rcssmin-module.html deleted file mode 100644 index 84ffddda734..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/rcssmin-module.html +++ /dev/null @@ -1,224 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>rcssmin</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Home </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - Module rcssmin - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - </table> - </td> - </tr> -</table> -<!-- ==================== MODULE DESCRIPTION ==================== --> -<h1 class="epydoc">Module rcssmin</h1><p class="nomargin-top"><span class="codelink"><a href="rcssmin-pysrc.html">source code</a></span></p> -<p>CSS Minifier.</p> -<p>The minifier is based on the semantics of the <a class="rst-reference external" href="https://github.com/yui/yuicompressor/" target="_top">YUI compressor</a>, which -itself is based on <a class="rst-reference external" href="https://github.com/isaacs/cssmin/" target="_top">the rule list by Isaac Schlueter</a>.</p> -<p>This module is a re-implementation aiming for speed instead of maximum -compression, so it can be used at runtime (rather than during a preprocessing -step). RCSSmin does syntactical compression only (removing spaces, comments -and possibly semicolons). It does not provide semantic compression (like -removing empty blocks, collapsing redundant properties etc). It does, however, -support various CSS hacks (by keeping them working as intended).</p> -<p>Here's a feature list:</p> -<ul class="rst-simple"> -<li>Strings are kept, except that escaped newlines are stripped</li> -<li>Space/Comments before the very end or before various characters are -stripped: <tt class="rst-docutils literal"><span class="pre">:{});=>+],!</span></tt> (The colon (<tt class="rst-docutils literal">:</tt>) is a special case, a single -space is kept if it's outside a ruleset.)</li> -<li>Space/Comments at the very beginning or after various characters are -stripped: <tt class="rst-docutils literal"><span class="pre">{}(=:>+[,!</span></tt></li> -<li>Optional space after unicode escapes is kept, resp. replaced by a simple -space</li> -<li>whitespaces inside <tt class="rst-docutils literal">url()</tt> definitions are stripped</li> -<li>Comments starting with an exclamation mark (<tt class="rst-docutils literal">!</tt>) can be kept optionally.</li> -<li>All other comments and/or whitespace characters are replaced by a single -space.</li> -<li>Multiple consecutive semicolons are reduced to one</li> -<li>The last semicolon within a ruleset is stripped</li> -<li>CSS Hacks supported:<ul> -<li>IE7 hack (<tt class="rst-docutils literal"><span class="pre">>/**/</span></tt>)</li> -<li>Mac-IE5 hack (<tt class="rst-docutils literal"><span class="pre">/*\*/.../**/</span></tt>)</li> -<li>The boxmodelhack is supported naturally because it relies on valid CSS2 -strings</li> -<li>Between <tt class="rst-docutils literal"><span class="pre">:first-line</span></tt> and the following comma or curly brace a space is -inserted. (apparently it's needed for IE6)</li> -<li>Same for <tt class="rst-docutils literal"><span class="pre">:first-letter</span></tt></li> -</ul> -</li> -</ul> -<p>rcssmin.c is a reimplementation of rcssmin.py in C and improves runtime up to -factor 100 or so (depending on the input). docs/BENCHMARKS in the source -distribution contains the details.</p> -<p>Both python 2 (>= 2.4) and python 3 are supported.</p> - -<hr /> -<div class="fields"> <p><strong>Copyright:</strong> - Copyright 2011 - 2014 -André Malo or his licensors, as applicable - </p> - <p><strong>License:</strong> - <p>Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at</p> -<blockquote> -<a class="rst-reference external" href="http://www.apache.org/licenses/LICENSE-2.0" target="_top">http://www.apache.org/licenses/LICENSE-2.0</a></blockquote> -<p>Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License.</p> - </p> - <p><strong>Version:</strong> - 1.0.5 - </p> - <p><strong>Author:</strong> - André Malo - </p> -</div><!-- ==================== FUNCTIONS ==================== --> -<a name="section-Functions"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td align="left" colspan="2" class="table-header"> - <span class="table-header">Functions</span></td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"><tt class="rst-docutils literal">str</tt></span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="rcssmin-module.html#cssmin" class="summary-sig-name">cssmin</a>(<span class="summary-sig-arg">style</span>, - <span class="summary-sig-arg">keep_bang_comments</span>=<span class="summary-sig-default">False</span>)</span><br /> - Minify CSS.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="rcssmin-pysrc.html#cssmin">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -</table> -<!-- ==================== FUNCTION DETAILS ==================== --> -<a name="section-FunctionDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td align="left" colspan="2" class="table-header"> - <span class="table-header">Function Details</span></td> -</tr> -</table> -<a name="cssmin"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">cssmin</span>(<span class="sig-arg">style</span>, - <span class="sig-arg">keep_bang_comments</span>=<span class="sig-default">False</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="rcssmin-pysrc.html#cssmin">source code</a></span> - </td> - </tr></table> - - Minify CSS. - <dl class="fields"> - <dt>Parameters:</dt> - <dd><ul class="nomargin-top"> - <li><strong class="pname"><code>style</code></strong> (<tt class="rst-docutils literal">str</tt>) - CSS to minify</li> - <li><strong class="pname"><code>keep_bang_comments</code></strong> (<tt class="rst-docutils literal">bool</tt>) - Keep comments starting with an exclamation mark? (<tt class="rst-docutils literal"><span class="pre">/*!...*/</span></tt>)</li> - </ul></dd> - <dt>Returns: <tt class="rst-docutils literal">str</tt></dt> - <dd>Minified style</dd> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Home </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/rcssmin-pysrc.html b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/rcssmin-pysrc.html deleted file mode 100644 index 6856baca0e6..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/rcssmin-pysrc.html +++ /dev/null @@ -1,477 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>rcssmin</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Home </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - Module rcssmin - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Source Code for <a href="rcssmin-module.html">Module rcssmin</a></h1> -<pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: ascii -*-</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-docstring">r"""</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-docstring">==============</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-docstring"> CSS Minifier</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-docstring">==============</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-docstring">CSS Minifier.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-docstring">The minifier is based on the semantics of the `YUI compressor`_\\, which</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-docstring">itself is based on `the rule list by Isaac Schlueter`_\\.</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-docstring">:Copyright:</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-docstring"> Copyright 2011 - 2014</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-docstring"> Andr\xe9 Malo or his licensors, as applicable</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">:License:</tt> </tt> -<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring"> Licensed under the Apache License, Version 2.0 (the "License");</tt> </tt> -<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring"> you may not use this file except in compliance with the License.</tt> </tt> -<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring"> You may obtain a copy of the License at</tt> </tt> -<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-docstring"> http://www.apache.org/licenses/LICENSE-2.0</tt> </tt> -<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-docstring"> Unless required by applicable law or agreed to in writing, software</tt> </tt> -<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-docstring"> distributed under the License is distributed on an "AS IS" BASIS,</tt> </tt> -<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-docstring"> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</tt> </tt> -<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring"> See the License for the specific language governing permissions and</tt> </tt> -<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> limitations under the License.</tt> </tt> -<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-docstring">This module is a re-implementation aiming for speed instead of maximum</tt> </tt> -<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring">compression, so it can be used at runtime (rather than during a preprocessing</tt> </tt> -<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring">step). RCSSmin does syntactical compression only (removing spaces, comments</tt> </tt> -<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring">and possibly semicolons). It does not provide semantic compression (like</tt> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-docstring">removing empty blocks, collapsing redundant properties etc). It does, however,</tt> </tt> -<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-docstring">support various CSS hacks (by keeping them working as intended).</tt> </tt> -<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring">Here's a feature list:</tt> </tt> -<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring">- Strings are kept, except that escaped newlines are stripped</tt> </tt> -<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring">- Space/Comments before the very end or before various characters are</tt> </tt> -<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> stripped: ``:{});=>+],!`` (The colon (``:``) is a special case, a single</tt> </tt> -<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> space is kept if it's outside a ruleset.)</tt> </tt> -<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring">- Space/Comments at the very beginning or after various characters are</tt> </tt> -<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> stripped: ``{}(=:>+[,!``</tt> </tt> -<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring">- Optional space after unicode escapes is kept, resp. replaced by a simple</tt> </tt> -<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> space</tt> </tt> -<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring">- whitespaces inside ``url()`` definitions are stripped</tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring">- Comments starting with an exclamation mark (``!``) can be kept optionally.</tt> </tt> -<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring">- All other comments and/or whitespace characters are replaced by a single</tt> </tt> -<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> space.</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring">- Multiple consecutive semicolons are reduced to one</tt> </tt> -<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring">- The last semicolon within a ruleset is stripped</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring">- CSS Hacks supported:</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring"> - IE7 hack (``>/**/``)</tt> </tt> -<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"> - Mac-IE5 hack (``/*\\*/.../**/``)</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> - The boxmodelhack is supported naturally because it relies on valid CSS2</tt> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> strings</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"> - Between ``:first-line`` and the following comma or curly brace a space is</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> inserted. (apparently it's needed for IE6)</tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> - Same for ``:first-letter``</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring">rcssmin.c is a reimplementation of rcssmin.py in C and improves runtime up to</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring">factor 100 or so (depending on the input). docs/BENCHMARKS in the source</tt> </tt> -<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring">distribution contains the details.</tt> </tt> -<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring">Both python 2 (>= 2.4) and python 3 are supported.</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring">.. _YUI compressor: https://github.com/yui/yuicompressor/</tt> </tt> -<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring">.. _the rule list by Isaac Schlueter: https://github.com/isaacs/cssmin/</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-0" class="py-name" targets="Variable rcssmin.__doc__=rcssmin-module.html#__doc__"><a title="rcssmin.__doc__" class="py-name" href="#" onclick="return doclink('link-0', '__doc__', 'link-0');">__doc__</a></tt><tt class="py-op">:</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-comment"># pylint: disable = W0622</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt id="link-1" class="py-name"><a title="rcssmin.__doc__" class="py-name" href="#" onclick="return doclink('link-1', '__doc__', 'link-0');">__doc__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="rcssmin.__doc__" class="py-name" href="#" onclick="return doclink('link-2', '__doc__', 'link-0');">__doc__</a></tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'unicode_escape'</tt><tt class="py-op">)</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">r"Andr\xe9 Malo"</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'unicode_escape'</tt><tt class="py-op">)</tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">"restructuredtext en"</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable rcssmin.__license__=rcssmin-module.html#__license__"><a title="rcssmin.__license__" class="py-name" href="#" onclick="return doclink('link-3', '__license__', 'link-3');">__license__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Apache License, Version 2.0"</tt> </tt> -<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-string">'1.0.5'</tt> </tt> -<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'cssmin'</tt><tt class="py-op">]</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt> -<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> <tt class="py-keyword">as</tt> <tt class="py-name">_re</tt> </tt> -<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt> -<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt> -<a name="_make_cssmin"></a><div id="_make_cssmin-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="_make_cssmin-toggle" onclick="return toggle('_make_cssmin');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="rcssmin-module.html#_make_cssmin">_make_cssmin</a><tt class="py-op">(</tt><tt class="py-param">python_only</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="_make_cssmin-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_make_cssmin-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> Generate CSS minifier.</tt> </tt> -<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> :Parameters:</tt> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> `python_only` : ``bool``</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> Use only the python variant. If true, the c extension is not even</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> tried to be loaded.</tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> :Return: Minifier</tt> </tt> -<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> :Rtype: ``callable``</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-comment"># pylint: disable = R0912, R0914, W0612</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">python_only</tt><tt class="py-op">:</tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">_rcssmin</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_rcssmin</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Function rcssmin.cssmin()=rcssmin-module.html#cssmin"><a title="rcssmin.cssmin" class="py-name" href="#" onclick="return doclink('link-4', 'cssmin', 'link-4');">cssmin</a></tt> </tt> -<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt> -<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">nl</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:[\n\f]|\r\n?)'</tt> <tt class="py-comment"># pylint: disable = C0103</tt> </tt> -<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">spacechar</tt> <tt class="py-op">=</tt> <tt class="py-string">r'[\r\n\f\040\t]'</tt> </tt> -<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> </tt> -<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">unicoded</tt> <tt class="py-op">=</tt> <tt class="py-string">r'[0-9a-fA-F]{1,6}(?:[\040\n\t\f]|\r\n?)?'</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">escaped</tt> <tt class="py-op">=</tt> <tt class="py-string">r'[^\n\r\f0-9a-fA-F]'</tt> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">escape</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:\\(?:%(unicoded)s|%(escaped)s))'</tt> <tt class="py-op">%</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">nmchar</tt> <tt class="py-op">=</tt> <tt class="py-string">r'[^\000-\054\056\057\072-\100\133-\136\140\173-\177]'</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-comment">#nmstart = r'[^\000-\100\133-\136\140\173-\177]'</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-comment">#ident = (r'(?:'</tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-comment"># r'-?(?:%(nmstart)s|%(escape)s)%(nmchar)s*(?:%(escape)s%(nmchar)s*)*'</tt> </tt> -<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-comment">#r')') % locals()</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)'</tt> </tt> -<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-comment"># only for specific purposes. The bang is grouped:</tt> </tt> -<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">_bang_comment</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:/\*(!?)[^*]*\*+(?:[^/*][^*]*\*+)*/)'</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> </tt> -<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">string1</tt> <tt class="py-op">=</tt> \ </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-string">r'(?:\047[^\047\\\r\n\f]*(?:\\[^\r\n\f][^\047\\\r\n\f]*)*\047)'</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">string2</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:"[^"\\\r\n\f]*(?:\\[^\r\n\f][^"\\\r\n\f]*)*")'</tt> </tt> -<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">strings</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:%s|%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">string1</tt><tt class="py-op">,</tt> <tt class="py-name">string2</tt><tt class="py-op">)</tt> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> </tt> -<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">nl_string1</tt> <tt class="py-op">=</tt> \ </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-string">r'(?:\047[^\047\\\r\n\f]*(?:\\(?:[^\r]|\r\n?)[^\047\\\r\n\f]*)*\047)'</tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-name">nl_string2</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:"[^"\\\r\n\f]*(?:\\(?:[^\r]|\r\n?)[^"\\\r\n\f]*)*")'</tt> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">nl_strings</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:%s|%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">nl_string1</tt><tt class="py-op">,</tt> <tt class="py-name">nl_string2</tt><tt class="py-op">)</tt> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> </tt> -<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">uri_nl_string1</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:\047[^\047\\]*(?:\\(?:[^\r]|\r\n?)[^\047\\]*)*\047)'</tt> </tt> -<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">uri_nl_string2</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:"[^"\\]*(?:\\(?:[^\r]|\r\n?)[^"\\]*)*")'</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">uri_nl_strings</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:%s|%s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">uri_nl_string1</tt><tt class="py-op">,</tt> <tt class="py-name">uri_nl_string2</tt><tt class="py-op">)</tt> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">nl_escaped</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:\\%(nl)s)'</tt> <tt class="py-op">%</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> </tt> -<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">space</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:%(spacechar)s|%(comment)s)'</tt> <tt class="py-op">%</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> </tt> -<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">ie7hack</tt> <tt class="py-op">=</tt> <tt class="py-string">r'(?:>/\*\*/)'</tt> </tt> -<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> </tt> -<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">r'(?:'</tt> </tt> -<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-comment"># noqa pylint: disable = C0330</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-string">r'(?:[^\000-\040"\047()\\\177]*'</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-string">r'(?:%(escape)s[^\000-\040"\047()\\\177]*)*)'</tt> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-string">r'(?:'</tt> </tt> -<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-string">r'(?:%(spacechar)s+|%(nl_escaped)s+)'</tt> </tt> -<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-string">r'(?:'</tt> </tt> -<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-string">r'(?:[^\000-\040"\047()\\\177]|%(escape)s|%(nl_escaped)s)'</tt> </tt> -<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-string">r'[^\000-\040"\047()\\\177]*'</tt> </tt> -<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-string">r'(?:%(escape)s[^\000-\040"\047()\\\177]*)*'</tt> </tt> -<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-string">r')+'</tt> </tt> -<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-string">r')*'</tt> </tt> -<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-string">r')'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> </tt> -<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-name">nl_unesc_sub</tt> <tt class="py-op">=</tt> <tt class="py-name">_re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">nl_escaped</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt> </tt> -<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> </tt> -<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">uri_space_sub</tt> <tt class="py-op">=</tt> <tt class="py-name">_re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-string">r'(%(escape)s+)|%(spacechar)s+|%(nl_escaped)s+'</tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt> </tt> -<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">uri_space_subber</tt> <tt class="py-op">=</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt> </tt> -<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> </tt> -<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">space_sub_simple</tt> <tt class="py-op">=</tt> <tt class="py-name">_re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-string">r'[\r\n\f\040\t;]+|(%(comment)s+)'</tt> </tt> -<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">space_sub_banged</tt> <tt class="py-op">=</tt> <tt class="py-name">_re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> </tt> -<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-string">r'[\r\n\f\040\t;]+|(%(_bang_comment)s+)'</tt> </tt> -<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt> </tt> -<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt> -<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">post_esc_sub</tt> <tt class="py-op">=</tt> <tt class="py-name">_re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r'[\r\n\f\t]+'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt> </tt> -<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">main_sub</tt> <tt class="py-op">=</tt> <tt class="py-name">_re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> </tt> -<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-comment"># noqa pylint: disable = C0330</tt> </tt> -<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-string">r'([^\\"\047u>@\r\n\f\040\t/;:{}]+)'</tt> </tt> -<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-string">r'|(?<=[{}(=:>+[,!])(%(space)s+)'</tt> </tt> -<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-string">r'|^(%(space)s+)'</tt> </tt> -<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-string">r'|(%(space)s+)(?=(([:{});=>+\],!])|$)?)'</tt> </tt> -<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-string">r'|;(%(space)s*(?:;%(space)s*)*)(?=(\})?)'</tt> </tt> -<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-string">r'|(\{)'</tt> </tt> -<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-string">r'|(\})'</tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-string">r'|(%(strings)s)'</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-string">r'|(?<!%(nmchar)s)url\(%(spacechar)s*('</tt> </tt> -<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-string">r'%(uri_nl_strings)s'</tt> </tt> -<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-string">r'|%(uri)s'</tt> </tt> -<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-string">r')%(spacechar)s*\)'</tt> </tt> -<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-string">r'|(@(?:'</tt> </tt> -<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-string">r'[mM][eE][dD][iI][aA]'</tt> </tt> -<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-string">r'|[sS][uU][pP][pP][oO][rR][tT][sS]'</tt> </tt> -<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-string">r'|[dD][oO][cC][uU][mM][eE][nN][tT]'</tt> </tt> -<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-string">r'|(?:-(?:'</tt> </tt> -<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-string">r'[wW][eE][bB][kK][iI][tT]|[mM][oO][zZ]|[oO]|[mM][sS]'</tt> </tt> -<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-string">r')-)?'</tt> </tt> -<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-string">r'[kK][eE][yY][fF][rR][aA][mM][eE][sS]'</tt> </tt> -<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-string">r'))(?!%(nmchar)s)'</tt> </tt> -<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-string">r'|(%(ie7hack)s)(%(space)s*)'</tt> </tt> -<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-string">r'|(:[fF][iI][rR][sS][tT]-[lL]'</tt> </tt> -<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-string">r'(?:[iI][nN][eE]|[eE][tT][tT][eE][rR]))'</tt> </tt> -<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-string">r'(%(space)s*)(?=[{,])'</tt> </tt> -<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-string">r'|(%(nl_strings)s)'</tt> </tt> -<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-string">r'|(%(escape)s[^\\"\047u>@\r\n\f\040\t/;:{}]*)'</tt> </tt> -<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt> </tt> -<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> </tt> -<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-comment">#print main_sub.__self__.pattern</tt> </tt> -<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> </tt> -<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">main_subber</tt><tt class="py-op">(</tt><tt class="py-param">keep_bang_comments</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-docstring">""" Make main subber """</tt> </tt> -<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">in_macie5</tt><tt class="py-op">,</tt> <tt class="py-name">in_rule</tt><tt class="py-op">,</tt> <tt class="py-name">at_group</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> </tt> -<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">keep_bang_comments</tt><tt class="py-op">:</tt> </tt> -<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">space_sub</tt> <tt class="py-op">=</tt> <tt class="py-name">space_sub_banged</tt> </tt> -<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">space_subber</tt><tt class="py-op">(</tt><tt class="py-param">match</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-docstring">""" Space|Comment subber """</tt> </tt> -<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">lastindex</tt><tt class="py-op">:</tt> </tt> -<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">group1</tt><tt class="py-op">,</tt> <tt class="py-name">group2</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt> -<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">group2</tt><tt class="py-op">:</tt> </tt> -<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">group1</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">r'\*/'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> -<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">group1</tt> </tt> -<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">group1</tt><tt class="py-op">:</tt> </tt> -<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">group1</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">r'\*/'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> -<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt> -<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> -<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">r'/*\*/'</tt> </tt> -<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> -<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'/**/'</tt> </tt> -<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt> -</div><a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">space_sub</tt> <tt class="py-op">=</tt> <tt class="py-name">space_sub_simple</tt> </tt> -<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> </tt> -<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">space_subber</tt><tt class="py-op">(</tt><tt class="py-param">match</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-docstring">""" Space|Comment subber """</tt> </tt> -<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">lastindex</tt><tt class="py-op">:</tt> </tt> -<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">r'\*/'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> -<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt> -<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> -<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">r'/*\*/'</tt> </tt> -<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> -<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'/**/'</tt> </tt> -<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt> -</div><a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> </tt> -<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">fn_space_post</tt><tt class="py-op">(</tt><tt class="py-param">group</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-docstring">""" space with token after """</tt> </tt> -<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt> </tt> -<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">6</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">':'</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">in_rule</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">at_group</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">space_sub</tt><tt class="py-op">(</tt><tt class="py-name">space_subber</tt><tt class="py-op">,</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">space_sub</tt><tt class="py-op">(</tt><tt class="py-name">space_subber</tt><tt class="py-op">,</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> </tt> -<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">fn_semicolon</tt><tt class="py-op">(</tt><tt class="py-param">group</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-docstring">""" ; handler """</tt> </tt> -<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">';'</tt> <tt class="py-op">+</tt> <tt class="py-name">space_sub</tt><tt class="py-op">(</tt><tt class="py-name">space_subber</tt><tt class="py-op">,</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">7</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> </tt> -<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">fn_semicolon2</tt><tt class="py-op">(</tt><tt class="py-param">group</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-docstring">""" ; handler """</tt> </tt> -<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">in_rule</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> -<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">space_sub</tt><tt class="py-op">(</tt><tt class="py-name">space_subber</tt><tt class="py-op">,</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">7</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">';'</tt> <tt class="py-op">+</tt> <tt class="py-name">space_sub</tt><tt class="py-op">(</tt><tt class="py-name">space_subber</tt><tt class="py-op">,</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">7</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> </tt> -<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">fn_open</tt><tt class="py-op">(</tt><tt class="py-param">_</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-docstring">""" { handler """</tt> </tt> -<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">at_group</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> -<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">at_group</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt> -<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-name">in_rule</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> -<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'{'</tt> </tt> -</div><a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> </tt> -<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">fn_close</tt><tt class="py-op">(</tt><tt class="py-param">_</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-docstring">""" } handler """</tt> </tt> -<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">in_rule</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'}'</tt> </tt> -</div><a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> </tt> -<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">fn_at_group</tt><tt class="py-op">(</tt><tt class="py-param">group</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-docstring">""" @xxx group handler """</tt> </tt> -<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">at_group</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> -<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">13</tt><tt class="py-op">)</tt> </tt> -</div><a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> </tt> -<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">fn_ie7hack</tt><tt class="py-op">(</tt><tt class="py-param">group</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-docstring">""" IE7 Hack handler """</tt> </tt> -<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">in_rule</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">at_group</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> -<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">in_macie5</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">14</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">space_sub</tt><tt class="py-op">(</tt><tt class="py-name">space_subber</tt><tt class="py-op">,</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">15</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'>'</tt> <tt class="py-op">+</tt> <tt class="py-name">space_sub</tt><tt class="py-op">(</tt><tt class="py-name">space_subber</tt><tt class="py-op">,</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">15</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> </tt> -<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-name">table</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt> -<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-comment"># noqa pylint: disable = C0330</tt> </tt> -<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-name">fn_space_post</tt><tt class="py-op">,</tt> <tt class="py-comment"># space with token after</tt> </tt> -<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">fn_space_post</tt><tt class="py-op">,</tt> <tt class="py-comment"># space with token after</tt> </tt> -<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-name">fn_space_post</tt><tt class="py-op">,</tt> <tt class="py-comment"># space with token after</tt> </tt> -<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-name">fn_semicolon</tt><tt class="py-op">,</tt> <tt class="py-comment"># semicolon</tt> </tt> -<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">fn_semicolon2</tt><tt class="py-op">,</tt> <tt class="py-comment"># semicolon</tt> </tt> -<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">fn_open</tt><tt class="py-op">,</tt> <tt class="py-comment"># {</tt> </tt> -<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">fn_close</tt><tt class="py-op">,</tt> <tt class="py-comment"># }</tt> </tt> -<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">lambda</tt> <tt class="py-name">g</tt><tt class="py-op">:</tt> <tt class="py-name">g</tt><tt class="py-op">(</tt><tt class="py-number">11</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># string</tt> </tt> -<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-keyword">lambda</tt> <tt class="py-name">g</tt><tt class="py-op">:</tt> <tt class="py-string">'url(%s)'</tt> <tt class="py-op">%</tt> <tt class="py-name">uri_space_sub</tt><tt class="py-op">(</tt><tt class="py-name">uri_space_subber</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">(</tt><tt class="py-number">12</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-comment"># url(...)</tt> </tt> -<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">fn_at_group</tt><tt class="py-op">,</tt> <tt class="py-comment"># @xxx expecting {...}</tt> </tt> -<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">fn_ie7hack</tt><tt class="py-op">,</tt> <tt class="py-comment"># ie7hack</tt> </tt> -<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-keyword">lambda</tt> <tt class="py-name">g</tt><tt class="py-op">:</tt> <tt class="py-name">g</tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">space_sub</tt><tt class="py-op">(</tt><tt class="py-name">space_subber</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">(</tt><tt class="py-number">17</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-comment"># :first-line|letter followed</tt> </tt> -<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-comment"># by [{,] (apparently space</tt> </tt> -<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-comment"># needed for IE6)</tt> </tt> -<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-keyword">lambda</tt> <tt class="py-name">g</tt><tt class="py-op">:</tt> <tt class="py-name">nl_unesc_sub</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">(</tt><tt class="py-number">18</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># nl_string</tt> </tt> -<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-keyword">lambda</tt> <tt class="py-name">g</tt><tt class="py-op">:</tt> <tt class="py-name">post_esc_sub</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">(</tt><tt class="py-number">19</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># escape</tt> </tt> -<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt> -<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> </tt> -<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">func</tt><tt class="py-op">(</tt><tt class="py-param">match</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-docstring">""" Main subber """</tt> </tt> -<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-name">idx</tt><tt class="py-op">,</tt> <tt class="py-name">group</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">lastindex</tt><tt class="py-op">,</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt> </tt> -<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">idx</tt> <tt class="py-op">></tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt> -<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">table</tt><tt class="py-op">[</tt><tt class="py-name">idx</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">group</tt><tt class="py-op">)</tt> </tt> -<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> </tt> -<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-comment"># shortcuts for frequent operations below:</tt> </tt> -<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">idx</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> <tt class="py-comment"># not interesting</tt> </tt> -<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> -<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-comment">#else: # space with token before or at the beginning</tt> </tt> -<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">space_sub</tt><tt class="py-op">(</tt><tt class="py-name">space_subber</tt><tt class="py-op">,</tt> <tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-name">idx</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> </tt> -<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">func</tt> </tt> -</div><a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> </tt> -<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">cssmin</tt><tt class="py-op">(</tt><tt class="py-param">style</tt><tt class="py-op">,</tt> <tt class="py-param">keep_bang_comments</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># pylint: disable = W0621</tt> </tt> -<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"><tt class="py-docstring"> Minify CSS.</tt> </tt> -<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"><tt class="py-docstring"> :Parameters:</tt> </tt> -<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"><tt class="py-docstring"> `style` : ``str``</tt> </tt> -<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"><tt class="py-docstring"> CSS to minify</tt> </tt> -<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"><tt class="py-docstring"> `keep_bang_comments` : ``bool``</tt> </tt> -<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"><tt class="py-docstring"> Keep comments starting with an exclamation mark? (``/*!...*/``)</tt> </tt> -<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"><tt class="py-docstring"> :Return: Minified style</tt> </tt> -<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-docstring"> :Rtype: ``str``</tt> </tt> -<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">main_sub</tt><tt class="py-op">(</tt><tt class="py-name">main_subber</tt><tt class="py-op">(</tt><tt class="py-name">keep_bang_comments</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">style</tt><tt class="py-op">)</tt> </tt> -</div><a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> </tt> -<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-5" class="py-name"><a title="rcssmin.cssmin" class="py-name" href="#" onclick="return doclink('link-5', 'cssmin', 'link-4');">cssmin</a></tt> </tt> -</div><a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> </tt> -<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"><tt id="link-6" class="py-name"><a title="rcssmin.cssmin" class="py-name" href="#" onclick="return doclink('link-6', 'cssmin', 'link-4');">cssmin</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_make_cssmin</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> </tt> -<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> </tt> -<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt> -<a name="main"></a><div id="main-def"><a name="L359"></a><tt class="py-lineno">359</tt> <a class="py-toggle" href="#" id="main-toggle" onclick="return toggle('main');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="rcssmin-module.html#main">main</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="main-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="main-expanded"><a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-docstring">""" Main """</tt> </tt> -<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> <tt class="py-keyword">as</tt> <tt class="py-name">_sys</tt> </tt> -<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">keep_bang_comments</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt> -<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-string">'-b'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">_sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-keyword">or</tt> <tt class="py-string">'-bp'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">_sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-keyword">or</tt> <tt class="py-string">'-pb'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">_sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt> -<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'-p'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">_sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'-bp'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">_sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> \ </tt> -<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-keyword">or</tt> <tt class="py-string">'-pb'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">_sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> -<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt id="link-7" class="py-name"><a title="rcssmin.cssmin" class="py-name" href="#" onclick="return doclink('link-7', 'cssmin', 'link-4');">cssmin</a></tt> <tt class="py-comment"># pylint: disable = W0603</tt> </tt> -<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt id="link-8" class="py-name"><a title="rcssmin.cssmin" class="py-name" href="#" onclick="return doclink('link-8', 'cssmin', 'link-4');">cssmin</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_make_cssmin</tt><tt class="py-op">(</tt><tt class="py-name">python_only</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> -<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">_sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt id="link-9" class="py-name"><a title="rcssmin.cssmin" class="py-name" href="#" onclick="return doclink('link-9', 'cssmin', 'link-4');">cssmin</a></tt><tt class="py-op">(</tt> </tt> -<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-name">_sys</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">keep_bang_comments</tt><tt class="py-op">=</tt><tt class="py-name">keep_bang_comments</tt> </tt> -<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">main</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> </tt><script type="text/javascript"> -<!-- -expandto(location.href); -// --> -</script> -</pre> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Home </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - ><a href="http://opensource.perlig.de/rcssmin/" target="_top">Visit rcssmin Online</a></th> - </tr></table></th> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/redirect.html b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/redirect.html deleted file mode 100644 index 95728fdf177..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/docs/apidoc/redirect.html +++ /dev/null @@ -1,38 +0,0 @@ -<html><head><title>Epydoc Redirect Page</title> -<meta http-equiv="cache-control" content="no-cache" /> -<meta http-equiv="expires" content="0" /> -<meta http-equiv="pragma" content="no-cache" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> -<body> -<script type="text/javascript"> -<!-- -var pages = ["rcssmin-m"]; -var dottedName = get_anchor(); -if (dottedName) { - var target = redirect_url(dottedName); - if (target) window.location.replace(target); -} -// --> -</script> - -<h3>Epydoc Auto-redirect page</h3> - -<p>When javascript is enabled, this page will redirect URLs of -the form <tt>redirect.html#<i>dotted.name</i></tt> to the -documentation for the object with the given fully-qualified -dotted name.</p> -<p><a id="message"> </a></p> - -<script type="text/javascript"> -<!-- -if (dottedName) { - var msg = document.getElementById("message"); - msg.innerHTML = "No documentation found for <tt>"+ - dottedName+"</tt>"; -} -// --> -</script> - -</body> -</html> diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/package.cfg b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/package.cfg deleted file mode 100644 index c09bbd0365b..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/package.cfg +++ /dev/null @@ -1,84 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright 2009 - 2014 -# André Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -[package] -name = rcssmin - -python.min = 2.3 -python.max = 3.4 -pypy.min = 1.9 -pypy.max = 2.2 -jython.min = 2.5 -jython.max = 2.7 - -version.number = 1.0.5 - -author.name = André Malo -author.email = nd@perlig.de -#maintainer.name = -#maintainer.email = -url.homepage = http://opensource.perlig.de/rcssmin/ -url.download = http://storage.perlig.de/rcssmin/ - - -[docs] -meta.classifiers = docs/CLASSIFIERS -meta.description = docs/DESCRIPTION -meta.summary = docs/SUMMARY -meta.provides = docs/PROVIDES -meta.license = LICENSE -meta.keywords = - CSS - Minimization - -apidoc.dir = docs/apidoc -apidoc.strip = 1 -#apidoc.ignore = - -#userdoc.dir = docs/userdoc -#userdoc.strip = 1 -#userdoc.ignore = -# .buildinfo - -#examples.dir = docs/examples -#examples.strip = 1 -#examples.ignore = - -#man = - -extra = - README.rst - docs/CHANGES - docs/BENCHMARKS - - -[manifest] -#packages.lib = . -#packages.collect = -modules = rcssmin - -packages.extra = - _setup.py2.term - _setup.py3.term - -#scripts = - -dist = - tests - run_tests.py - bench - bench.sh diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/rcssmin.c b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/rcssmin.c deleted file mode 100644 index a722fc276a9..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/rcssmin.c +++ /dev/null @@ -1,1163 +0,0 @@ -/* - * Copyright 2011 - 2014 - * Andr\xe9 Malo or his licensors, as applicable - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "cext.h" -EXT_INIT_FUNC; - -#ifdef EXT3 -typedef Py_UNICODE rchar; -#else -typedef unsigned char rchar; -#endif -#define U(c) ((rchar)(c)) - -typedef struct { - const rchar *start; - const rchar *sentinel; - const rchar *tsentinel; - Py_ssize_t at_group; - int in_macie5; - int in_rule; - int keep_bang_comments; -} rcssmin_ctx_t; - -typedef enum { - NEED_SPACE_MAYBE = 0, - NEED_SPACE_NEVER -} need_space_flag; - - -#define RCSSMIN_DULL_BIT (1 << 0) -#define RCSSMIN_HEX_BIT (1 << 1) -#define RCSSMIN_ESC_BIT (1 << 2) -#define RCSSMIN_SPACE_BIT (1 << 3) -#define RCSSMIN_STRING_DULL_BIT (1 << 4) -#define RCSSMIN_NMCHAR_BIT (1 << 5) -#define RCSSMIN_URI_DULL_BIT (1 << 6) -#define RCSSMIN_PRE_CHAR_BIT (1 << 7) -#define RCSSMIN_POST_CHAR_BIT (1 << 8) - -static const unsigned short rcssmin_charmask[128] = { - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 28, 8, 21, 8, 8, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 28, 469, 4, 85, 85, 85, 85, 4, - 149, 277, 85, 469, 469, 117, 85, 84, - 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 468, 340, 85, 469, 468, 85, - 84, 115, 115, 115, 115, 115, 115, 117, - 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 213, 4, 341, 85, 117, - 85, 115, 115, 115, 115, 115, 115, 117, - 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 116, 117, 117, - 117, 117, 117, 468, 85, 468, 85, 21 -}; - -#define RCSSMIN_IS_DULL(c) ((U(c) > 127) || \ - (rcssmin_charmask[U(c) & 0x7F] & RCSSMIN_DULL_BIT)) - -#define RCSSMIN_IS_HEX(c) ((U(c) <= 127) && \ - (rcssmin_charmask[U(c) & 0x7F] & RCSSMIN_HEX_BIT)) - -#define RCSSMIN_IS_ESC(c) ((U(c) > 127) || \ - (rcssmin_charmask[U(c) & 0x7F] & RCSSMIN_ESC_BIT)) - -#define RCSSMIN_IS_SPACE(c) ((U(c) <= 127) && \ - (rcssmin_charmask[U(c) & 0x7F] & RCSSMIN_SPACE_BIT)) - -#define RCSSMIN_IS_STRING_DULL(c) ((U(c) > 127) || \ - (rcssmin_charmask[U(c) & 0x7F] & RCSSMIN_STRING_DULL_BIT)) - -#define RCSSMIN_IS_NMCHAR(c) ((U(c) > 127) || \ - (rcssmin_charmask[U(c) & 0x7F] & RCSSMIN_NMCHAR_BIT)) - -#define RCSSMIN_IS_URI_DULL(c) ((U(c) > 127) || \ - (rcssmin_charmask[U(c) & 0x7F] & RCSSMIN_URI_DULL_BIT)) - -#define RCSSMIN_IS_PRE_CHAR(c) ((U(c) <= 127) && \ - (rcssmin_charmask[U(c) & 0x7F] & RCSSMIN_PRE_CHAR_BIT)) - -#define RCSSMIN_IS_POST_CHAR(c) ((U(c) <= 127) && \ - (rcssmin_charmask[U(c) & 0x7F] & RCSSMIN_POST_CHAR_BIT)) - - -static const rchar pattern_url[] = { - /*U('u'),*/ U('r'), U('l'), U('(') -}; - -static const rchar pattern_ie7[] = { - /*U('>'),*/ U('/'), U('*'), U('*'), U('/') -}; - -static const rchar pattern_media[] = { - U('m'), U('e'), U('d'), U('i'), U('a'), - U('M'), U('E'), U('D'), U('I'), U('A') -}; - -static const rchar pattern_document[] = { - U('d'), U('o'), U('c'), U('u'), U('m'), U('e'), U('n'), U('t'), - U('D'), U('O'), U('C'), U('U'), U('M'), U('E'), U('N'), U('T') -}; - -static const rchar pattern_supports[] = { - U('s'), U('u'), U('p'), U('p'), U('o'), U('r'), U('t'), U('s'), - U('S'), U('U'), U('P'), U('P'), U('O'), U('R'), U('T'), U('S') -}; - -static const rchar pattern_keyframes[] = { - U('k'), U('e'), U('y'), U('f'), U('r'), U('a'), U('m'), U('e'), U('s'), - U('K'), U('E'), U('Y'), U('F'), U('R'), U('A'), U('M'), U('E'), U('S') -}; - -static const rchar pattern_vendor_o[] = { - U('-'), U('o'), U('-'), - U('-'), U('O'), U('-') -}; - -static const rchar pattern_vendor_moz[] = { - U('-'), U('m'), U('o'), U('z'), U('-'), - U('-'), U('M'), U('O'), U('Z'), U('-') -}; - -static const rchar pattern_vendor_webkit[] = { - U('-'), U('w'), U('e'), U('b'), U('k'), U('i'), U('t'), U('-'), - U('-'), U('W'), U('E'), U('B'), U('K'), U('I'), U('T'), U('-') -}; - -static const rchar pattern_vendor_ms[] = { - U('-'), U('m'), U('s'), U('-'), - U('-'), U('M'), U('S'), U('-') -}; - -static const rchar pattern_first[] = { - U('f'), U('i'), U('r'), U('s'), U('t'), U('-'), U('l'), - U('F'), U('I'), U('R'), U('S'), U('T'), U('-'), U('L') -}; - -static const rchar pattern_line[] = { - U('i'), U('n'), U('e'), - U('I'), U('N'), U('E'), -}; - -static const rchar pattern_letter[] = { - U('e'), U('t'), U('t'), U('e'), U('r'), - U('E'), U('T'), U('T'), U('E'), U('R') -}; - -static const rchar pattern_macie5_init[] = { - U('/'), U('*'), U('\\'), U('*'), U('/') -}; - -static const rchar pattern_macie5_exit[] = { - U('/'), U('*'), U('*'), U('/') -}; - -/* - * Match a pattern (and copy immediately to target) - */ -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wstrict-overflow" -#endif -static int -copy_match(const rchar *pattern, const rchar *psentinel, - const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_; - rchar *target = *target_; - rchar c; - - while (pattern < psentinel - && source < ctx->sentinel && target < ctx->tsentinel - && ((c = *source++) == *pattern++)) - *target++ = c; - - *source_ = source; - *target_ = target; - - return (pattern == psentinel); -} -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#pragma GCC diagnostic pop -#endif - -#define MATCH(PAT, source, target, ctx) ( \ - copy_match(pattern_##PAT, \ - pattern_##PAT + sizeof(pattern_##PAT) / sizeof(rchar), \ - source, target, ctx) \ -) - - -/* - * Match a pattern (and copy immediately to target) - CI version - */ -static int -copy_imatch(const rchar *pattern, const rchar *psentinel, - const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_, *pstart = pattern; - rchar *target = *target_; - rchar c; - - while (pattern < psentinel - && source < ctx->sentinel && target < ctx->tsentinel - && ((c = *source++) == *pattern - || c == pstart[(pattern - pstart) + (psentinel - pstart)])) { - ++pattern; - *target++ = c; - } - - *source_ = source; - *target_ = target; - - return (pattern == psentinel); -} - -#define IMATCH(PAT, source, target, ctx) ( \ - copy_imatch(pattern_##PAT, \ - pattern_##PAT + sizeof(pattern_##PAT) / sizeof(rchar) / 2, \ - source, target, ctx) \ -) - - -/* - * Copy characters - */ -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wstrict-overflow" -#endif -static int -copy(const rchar *source, const rchar *sentinel, rchar **target_, - rcssmin_ctx_t *ctx) -{ - rchar *target = *target_; - - while (source < sentinel && target < ctx->tsentinel) - *target++ = *source++; - - *target_ = target; - - return (source == sentinel); -} -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#pragma GCC diagnostic pop -#endif - -#define COPY_PAT(PAT, target, ctx) ( \ - copy(pattern_##PAT, \ - pattern_##PAT + sizeof(pattern_##PAT) / sizeof(rchar), \ - target, ctx) \ -) - - -/* - * The ABORT macros work with known local variables! - */ -#define ABORT_(RET) do { \ - if (source < ctx->sentinel && !(target < ctx->tsentinel)) { \ - *source_ = source; \ - *target_ = target; \ - } \ - return RET; \ -} while(0) - - -#define CRAPPY_C90_COMPATIBLE_EMPTY -#define ABORT ABORT_(CRAPPY_C90_COMPATIBLE_EMPTY) -#define RABORT(RET) ABORT_((RET)) - - -/* - * Copy escape - */ -static void -copy_escape(const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_, *hsentinel; - rchar *target = *target_; - rchar c; - - *target++ = U('\\'); - *target_ = target; - - if (source < ctx->sentinel && target < ctx->tsentinel) { - c = *source++; - if (RCSSMIN_IS_ESC(c)) { - *target++ = c; - } - else if (RCSSMIN_IS_HEX(c)) { - *target++ = c; - - /* 6 hex chars max, one we got already */ - if (ctx->sentinel - source > 5) - hsentinel = source + 5; - else - hsentinel = ctx->sentinel; - - while (source < hsentinel && target < ctx->tsentinel - && (c = *source, RCSSMIN_IS_HEX(c))) { - ++source; - *target++ = c; - } - - /* One optional space after */ - if (source < ctx->sentinel && target < ctx->tsentinel) { - if (source == hsentinel) - c = *source; - if (RCSSMIN_IS_SPACE(c)) { - ++source; - *target++ = U(' '); - if (c == U('\r') && source < ctx->sentinel - && *source == U('\n')) - ++source; - } - } - } - } - - *target_ = target; - *source_ = source; -} - - -/* - * Copy string - */ -static void -copy_string(const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_; - rchar *target = *target_; - rchar c, quote = source[-1]; - - *target++ = quote; - *target_ = target; - - while (source < ctx->sentinel && target < ctx->tsentinel) { - c = *target++ = *source++; - if (RCSSMIN_IS_STRING_DULL(c)) - continue; - - switch (c) { - case U('\''): case U('"'): - if (c == quote) { - *target_ = target; - *source_ = source; - return; - } - continue; - - case U('\\'): - if (source < ctx->sentinel && target < ctx->tsentinel) { - c = *source++; - switch (c) { - case U('\r'): - if (source < ctx->sentinel && *source == U('\n')) - ++source; - /* fall through */ - - case U('\n'): case U('\f'): - --target; - break; - - default: - *target++ = c; - } - } - continue; - } - break; /* forbidden characters */ - } - - ABORT; -} - - -/* - * Copy URI string - */ -static int -copy_uri_string(const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_; - rchar *target = *target_; - rchar c, quote = source[-1]; - - *target++ = quote; - *target_ = target; - - while (source < ctx->sentinel && target < ctx->tsentinel) { - c = *source++; - if (RCSSMIN_IS_SPACE(c)) - continue; - *target++ = c; - if (RCSSMIN_IS_STRING_DULL(c)) - continue; - - switch (c) { - case U('\''): case U('"'): - if (c == quote) { - *target_ = target; - *source_ = source; - return 0; - } - continue; - - case U('\\'): - if (source < ctx->sentinel && target < ctx->tsentinel) { - c = *source; - switch (c) { - case U('\r'): - if ((source + 1) < ctx->sentinel && source[1] == U('\n')) - ++source; - /* fall through */ - - case U('\n'): case U('\f'): - --target; - ++source; - break; - - default: - --target; - copy_escape(&source, &target, ctx); - } - } - continue; - } - - break; /* forbidden characters */ - } - - RABORT(-1); -} - - -/* - * Copy URI (unquoted) - */ -static int -copy_uri_unquoted(const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_; - rchar *target = *target_; - rchar c; - - *target++ = source[-1]; - *target_ = target; - - while (source < ctx->sentinel && target < ctx->tsentinel) { - c = *source++; - if (RCSSMIN_IS_SPACE(c)) - continue; - *target++ = c; - if (RCSSMIN_IS_URI_DULL(c)) - continue; - - switch (c) { - - case U(')'): - *target_ = target - 1; - *source_ = source - 1; - return 0; - - case U('\\'): - if (source < ctx->sentinel && target < ctx->tsentinel) { - c = *source; - switch (c) { - case U('\r'): - if ((source + 1) < ctx->sentinel && source[1] == U('\n')) - ++source; - /* fall through */ - - case U('\n'): case U('\f'): - --target; - ++source; - break; - - default: - --target; - copy_escape(&source, &target, ctx); - } - } - continue; - } - - break; /* forbidden characters */ - } - - RABORT(-1); -} - - -/* - * Copy url - */ -static void -copy_url(const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_; - rchar *target = *target_; - rchar c; - - *target++ = U('u'); - *target_ = target; - - /* Must not be inside an identifier */ - if ((source != ctx->start + 1) && RCSSMIN_IS_NMCHAR(source[-2])) - return; - - if (!MATCH(url, &source, &target, ctx) - || !(source < ctx->sentinel && target < ctx->tsentinel)) - ABORT; - - while (source < ctx->sentinel && RCSSMIN_IS_SPACE(*source)) - ++source; - - if (!(source < ctx->sentinel)) - ABORT; - - c = *source++; - switch (c) { - case U('"'): case U('\''): - if (copy_uri_string(&source, &target, ctx) == -1) - ABORT; - - while (source < ctx->sentinel && RCSSMIN_IS_SPACE(*source)) - ++source; - break; - - default: - if (copy_uri_unquoted(&source, &target, ctx) == -1) - ABORT; - } - - if (!(source < ctx->sentinel && target < ctx->tsentinel)) - ABORT; - - if ((*target++ = *source++) != U(')')) - ABORT; - - *target_ = target; - *source_ = source; -} - - -/* - * Copy @-group - */ -static void -copy_at_group(const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_; - rchar *target = *target_; - - *target++ = U('@'); - *target_ = target; - -#define REMATCH(what) ( \ - source = *source_, \ - target = *target_, \ - IMATCH(what, &source, &target, ctx) \ -) -#define CMATCH(what) IMATCH(what, &source, &target, ctx) - - if (( !CMATCH(media) - && !REMATCH(supports) - && !REMATCH(document) - && !REMATCH(keyframes) - && !(REMATCH(vendor_webkit) && CMATCH(keyframes)) - && !(REMATCH(vendor_moz) && CMATCH(keyframes)) - && !(REMATCH(vendor_o) && CMATCH(keyframes)) - && !(REMATCH(vendor_ms) && CMATCH(keyframes))) - || !(source < ctx->sentinel && target < ctx->tsentinel) - || RCSSMIN_IS_NMCHAR(*source)) - ABORT; - -#undef CMATCH -#undef REMATCH - - ++ctx->at_group; - - *target_ = target; - *source_ = source; -} - - -/* - * Skip space - */ -static const rchar * -skip_space(const rchar *source, rcssmin_ctx_t *ctx) -{ - const rchar *begin = source; - int res; - rchar c; - - while (source < ctx->sentinel) { - c = *source; - if (RCSSMIN_IS_SPACE(c)) { - ++source; - continue; - } - else if (c == U('/')) { - ++source; - if (!(source < ctx->sentinel && *source == U('*'))) { - --source; - break; - } - ++source; - res = 0; - while (source < ctx->sentinel) { - c = *source++; - if (c != U('*')) - continue; - if (!(source < ctx->sentinel)) - return begin; - if (*source != U('/')) - continue; - - /* Comment complete */ - ++source; - res = 1; - break; - } - if (!res) - return begin; - - continue; - } - - break; - } - - return source; -} - - -/* - * Copy space - */ -static void -copy_space(const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx, - need_space_flag need_space) -{ - const rchar *source = *source_, *end, *comment; - rchar *target = *target_; - int res; - rchar c; - - --source; - if (need_space == NEED_SPACE_MAYBE - && source > ctx->start - && !RCSSMIN_IS_PRE_CHAR(source[-1]) - && (end = skip_space(source, ctx)) < ctx->sentinel - && (!RCSSMIN_IS_POST_CHAR(*end) - || (*end == U(':') && !ctx->in_rule && !ctx->at_group))) { - - if (!(target < ctx->tsentinel)) - ABORT; - *target++ = U(' '); - } - - while (source < ctx->sentinel) { - switch (c = *source) { - - /* comment */ - case U('/'): - comment = source++; - if (!((source < ctx->sentinel && *source == U('*')))) { - --source; - break; - } - ++source; - res = 0; - while (source < ctx->sentinel) { - c = *source++; - if (c != U('*')) - continue; - if (!(source < ctx->sentinel)) - ABORT; - if (*source != U('/')) - continue; - - /* Comment complete */ - ++source; - res = 1; - - if (ctx->keep_bang_comments && comment[2] == U('!')) { - ctx->in_macie5 = (source[-3] == U('\\')); - if (!copy(comment, source, &target, ctx)) - ABORT; - } - else if (source[-3] == U('\\')) { - if (!ctx->in_macie5) { - if (!COPY_PAT(macie5_init, &target, ctx)) - ABORT; - } - ctx->in_macie5 = 1; - } - else if (ctx->in_macie5) { - if (!COPY_PAT(macie5_exit, &target, ctx)) - ABORT; - ctx->in_macie5 = 0; - } - /* else don't copy anything */ - break; - } - if (!res) - ABORT; - continue; - - /* space */ - case U(' '): case U('\t'): case U('\r'): case U('\n'): case U('\f'): - ++source; - continue; - } - - break; - } - - *source_ = source; - *target_ = target; -} - - -/* - * Copy space if comment - */ -static int -copy_space_comment(const rchar **source_, rchar **target_, - rcssmin_ctx_t *ctx, need_space_flag need_space) -{ - const rchar *source = *source_; - rchar *target = *target_; - - if (source < ctx->sentinel && *source == U('*')) { - copy_space(source_, target_, ctx, need_space); - if (*source_ > source) - return 0; - } - if (!(target < ctx->tsentinel)) - RABORT(-1); - - *target++ = source[-1]; - - /* *source_ = source; <-- unchanged */ - *target_ = target; - - return -1; -} - - -/* - * Copy space if exists - */ -static int -copy_space_optional(const rchar **source_, rchar **target_, - rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_; - - if (!(source < ctx->sentinel)) - return -1; - - if (*source == U('/')) { - *source_ = source + 1; - return copy_space_comment(source_, target_, ctx, NEED_SPACE_NEVER); - } - else if (RCSSMIN_IS_SPACE(*source)) { - *source_ = source + 1; - copy_space(source_, target_, ctx, NEED_SPACE_NEVER); - return 0; - } - - return -1; -} - - -/* - * Copy :first-line|letter - */ -static void -copy_first(const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_, *next, *source_fork; - rchar *target = *target_, *target_fork; - - *target++ = U(':'); - *target_ = target; - - if (!IMATCH(first, &source, &target, ctx) - || !(source < ctx->sentinel && target < ctx->tsentinel)) - ABORT; - - source_fork = source; - target_fork = target; - - if (!IMATCH(line, &source, &target, ctx)) { - source = source_fork; - target = target_fork; - - if (!IMATCH(letter, &source, &target, ctx) - || !(source < ctx->sentinel && target < ctx->tsentinel)) - ABORT; - } - - next = skip_space(source, ctx); - if (!(next < ctx->sentinel && target < ctx->tsentinel - && (*next == U('{') || *next == U(',')))) - ABORT; - - *target++ = U(' '); - *target_ = target; - *source_ = source; - (void)copy_space_optional(source_, target_, ctx); -} - - -/* - * Copy IE7 hack - */ -static void -copy_ie7hack(const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_; - rchar *target = *target_; - - *target++ = U('>'); - *target_ = target; - - if (ctx->in_rule || ctx->at_group) - return; /* abort */ - - if (!MATCH(ie7, &source, &target, ctx)) - ABORT; - - ctx->in_macie5 = 0; - - *target_ = target; - *source_ = source; - - (void)copy_space_optional(source_, target_, ctx); -} - - -/* - * Copy semicolon; miss out duplicates or even this one (before '}') - */ -static void -copy_semicolon(const rchar **source_, rchar **target_, rcssmin_ctx_t *ctx) -{ - const rchar *source = *source_, *begin, *end; - rchar *target = *target_; - - begin = source; - while (source < ctx->sentinel) { - end = skip_space(source, ctx); - if (!(end < ctx->sentinel)) { - if (!(target < ctx->tsentinel)) - ABORT; - *target++ = U(';'); - break; - } - switch (*end) { - case U(';'): - source = end + 1; - continue; - - case U('}'): - if (ctx->in_rule) - break; - - /* fall through */ - default: - if (!(target < ctx->tsentinel)) - ABORT; - *target++ = U(';'); - break; - } - - break; - } - - source = begin; - *target_ = target; - while (source < ctx->sentinel) { - if (*source == U(';')) { - ++source; - continue; - } - - if (copy_space_optional(&source, target_, ctx) == 0) - continue; - - break; - } - - *source_ = source; -} - - -/* - * Main function - * - * The return value determines the result length (kept in the target buffer). - * However, if the target buffer is too small, the return value is greater - * than tlength. The difference to tlength is the number of unconsumed source - * characters at the time the buffer was full. In this case you should resize - * the target buffer to the return value and call rcssmin again. Repeat as - * often as needed. - */ -static Py_ssize_t -rcssmin(const rchar *source, rchar *target, Py_ssize_t slength, - Py_ssize_t tlength, int keep_bang_comments) -{ - rcssmin_ctx_t ctx_, *ctx = &ctx_; - const rchar *tstart = target; - rchar c; - - ctx->start = source; - ctx->sentinel = source + slength; - ctx->tsentinel = target + tlength; - ctx->at_group = 0; - ctx->in_macie5 = 0; - ctx->in_rule = 0; - ctx->keep_bang_comments = keep_bang_comments; - - while (source < ctx->sentinel && target < ctx->tsentinel) { - c = *source++; - if (RCSSMIN_IS_DULL(c)) { - *target++ = c; - continue; - } - else if (RCSSMIN_IS_SPACE(c)) { - copy_space(&source, &target, ctx, NEED_SPACE_MAYBE); - continue; - } - - switch (c) { - - /* Escape */ - case U('\\'): - copy_escape(&source, &target, ctx); - continue; - - /* String */ - case U('"'): case U('\''): - copy_string(&source, &target, ctx); - continue; - - /* URL */ - case U('u'): - copy_url(&source, &target, ctx); - continue; - - /* IE7hack */ - case U('>'): - copy_ie7hack(&source, &target, ctx); - continue; - - /* @-group */ - case U('@'): - copy_at_group(&source, &target, ctx); - continue; - - /* ; */ - case U(';'): - copy_semicolon(&source, &target, ctx); - continue; - - /* :first-line|letter followed by [{,] */ - /* (apparently needed for IE6) */ - case U(':'): - copy_first(&source, &target, ctx); - continue; - - /* { */ - case U('{'): - if (ctx->at_group) - --ctx->at_group; - else - ++ctx->in_rule; - *target++ = c; - continue; - - /* } */ - case U('}'): - if (ctx->in_rule) - --ctx->in_rule; - *target++ = c; - continue; - - /* space starting with comment */ - case U('/'): - (void)copy_space_comment(&source, &target, ctx, NEED_SPACE_MAYBE); - continue; - - /* Fallback: copy character. Better safe than sorry. Should not be - * reached, though */ - default: - *target++ = c; - continue; - } - } - - return - (Py_ssize_t)(target - tstart) + (Py_ssize_t)(ctx->sentinel - source); -} - - -PyDoc_STRVAR(rcssmin_cssmin__doc__, -"cssmin(style, keep_bang_comments=False)\n\ -\n\ -Minify CSS.\n\ -\n\ -:Note: This is a hand crafted C implementation built on the regex\n\ - semantics.\n\ -\n\ -:Parameters:\n\ - `style` : ``str``\n\ - CSS to minify\n\ -\n\ -:Return: Minified style\n\ -:Rtype: ``str``"); - -static PyObject * -rcssmin_cssmin(PyObject *self, PyObject *args, PyObject *kwds) -{ - PyObject *style, *keep_bang_comments_ = NULL, *result; - static char *kwlist[] = {"style", "keep_bang_comments", NULL}; - Py_ssize_t rlength, slength, length; - int keep_bang_comments; -#ifdef EXT2 - int uni; -#define UOBJ "O" -#endif -#ifdef EXT3 -#define UOBJ "U" -#endif - - if (!PyArg_ParseTupleAndKeywords(args, kwds, UOBJ "|O", kwlist, - &style, &keep_bang_comments_)) - return NULL; - - if (!keep_bang_comments_) - keep_bang_comments = 0; - else { - keep_bang_comments = PyObject_IsTrue(keep_bang_comments_); - if (keep_bang_comments == -1) - return NULL; - } - -#ifdef EXT2 - if (PyUnicode_Check(style)) { - if (!(style = PyUnicode_AsUTF8String(style))) - return NULL; - uni = 1; - } - else { - if (!(style = PyObject_Str(style))) - return NULL; - uni = 0; - } -#endif - -#ifdef EXT3 - Py_INCREF(style); -#define PyString_GET_SIZE PyUnicode_GET_SIZE -#define PyString_AS_STRING PyUnicode_AS_UNICODE -#define _PyString_Resize PyUnicode_Resize -#define PyString_FromStringAndSize PyUnicode_FromUnicode -#endif - - rlength = slength = PyString_GET_SIZE(style); - -again: - if (!(result = PyString_FromStringAndSize(NULL, rlength))) { - Py_DECREF(style); - return NULL; - } - Py_BEGIN_ALLOW_THREADS - length = rcssmin((rchar *)PyString_AS_STRING(style), - (rchar *)PyString_AS_STRING(result), - slength, rlength, keep_bang_comments); - Py_END_ALLOW_THREADS - - if (length > rlength) { - Py_DECREF(result); - rlength = length; - goto again; - } - - Py_DECREF(style); - if (length < 0) { - Py_DECREF(result); - return NULL; - } - if (length != rlength && _PyString_Resize(&result, length) == -1) - return NULL; - -#ifdef EXT2 - if (uni) { - style = PyUnicode_DecodeUTF8(PyString_AS_STRING(result), - PyString_GET_SIZE(result), "strict"); - Py_DECREF(result); - if (!style) - return NULL; - result = style; - } -#endif - return result; -} - -/* ------------------------ BEGIN MODULE DEFINITION ------------------------ */ - -EXT_METHODS = { - {"cssmin", - (PyCFunction)rcssmin_cssmin, METH_VARARGS | METH_KEYWORDS, - rcssmin_cssmin__doc__}, - - {NULL} /* Sentinel */ -}; - -PyDoc_STRVAR(EXT_DOCS_VAR, -"C implementation of rcssmin\n\ -===========================\n\ -\n\ -C implementation of rcssmin."); - - -EXT_DEFINE(EXT_MODULE_NAME, EXT_METHODS_VAR, EXT_DOCS_VAR); - -EXT_INIT_FUNC { - PyObject *m; - - /* Create the module and populate stuff */ - if (!(m = EXT_CREATE(&EXT_DEFINE_VAR))) - EXT_INIT_ERROR(NULL); - - EXT_ADD_UNICODE(m, "__author__", "Andr\xe9 Malo", "latin-1"); - EXT_ADD_STRING(m, "__docformat__", "restructuredtext en"); - - EXT_INIT_RETURN(m); -} - -/* ------------------------- END MODULE DEFINITION ------------------------- */ diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/rcssmin.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/rcssmin.py deleted file mode 100644 index ae1cefc3396..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/rcssmin.py +++ /dev/null @@ -1,374 +0,0 @@ -#!/usr/bin/env python -# -*- coding: ascii -*- -r""" -============== - CSS Minifier -============== - -CSS Minifier. - -The minifier is based on the semantics of the `YUI compressor`_\\, which -itself is based on `the rule list by Isaac Schlueter`_\\. - -:Copyright: - - Copyright 2011 - 2014 - Andr\xe9 Malo or his licensors, as applicable - -:License: - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -This module is a re-implementation aiming for speed instead of maximum -compression, so it can be used at runtime (rather than during a preprocessing -step). RCSSmin does syntactical compression only (removing spaces, comments -and possibly semicolons). It does not provide semantic compression (like -removing empty blocks, collapsing redundant properties etc). It does, however, -support various CSS hacks (by keeping them working as intended). - -Here's a feature list: - -- Strings are kept, except that escaped newlines are stripped -- Space/Comments before the very end or before various characters are - stripped: ``:{});=>+],!`` (The colon (``:``) is a special case, a single - space is kept if it's outside a ruleset.) -- Space/Comments at the very beginning or after various characters are - stripped: ``{}(=:>+[,!`` -- Optional space after unicode escapes is kept, resp. replaced by a simple - space -- whitespaces inside ``url()`` definitions are stripped -- Comments starting with an exclamation mark (``!``) can be kept optionally. -- All other comments and/or whitespace characters are replaced by a single - space. -- Multiple consecutive semicolons are reduced to one -- The last semicolon within a ruleset is stripped -- CSS Hacks supported: - - - IE7 hack (``>/**/``) - - Mac-IE5 hack (``/*\\*/.../**/``) - - The boxmodelhack is supported naturally because it relies on valid CSS2 - strings - - Between ``:first-line`` and the following comma or curly brace a space is - inserted. (apparently it's needed for IE6) - - Same for ``:first-letter`` - -rcssmin.c is a reimplementation of rcssmin.py in C and improves runtime up to -factor 100 or so (depending on the input). docs/BENCHMARKS in the source -distribution contains the details. - -Both python 2 (>= 2.4) and python 3 are supported. - -.. _YUI compressor: https://github.com/yui/yuicompressor/ - -.. _the rule list by Isaac Schlueter: https://github.com/isaacs/cssmin/ -""" -if __doc__: - # pylint: disable = W0622 - __doc__ = __doc__.encode('ascii').decode('unicode_escape') -__author__ = r"Andr\xe9 Malo".encode('ascii').decode('unicode_escape') -__docformat__ = "restructuredtext en" -__license__ = "Apache License, Version 2.0" -__version__ = '1.0.5' -__all__ = ['cssmin'] - -import re as _re - - -def _make_cssmin(python_only=False): - """ - Generate CSS minifier. - - :Parameters: - `python_only` : ``bool`` - Use only the python variant. If true, the c extension is not even - tried to be loaded. - - :Return: Minifier - :Rtype: ``callable`` - """ - # pylint: disable = R0912, R0914, W0612 - - if not python_only: - try: - import _rcssmin - except ImportError: - pass - else: - return _rcssmin.cssmin - - nl = r'(?:[\n\f]|\r\n?)' # pylint: disable = C0103 - spacechar = r'[\r\n\f\040\t]' - - unicoded = r'[0-9a-fA-F]{1,6}(?:[\040\n\t\f]|\r\n?)?' - escaped = r'[^\n\r\f0-9a-fA-F]' - escape = r'(?:\\(?:%(unicoded)s|%(escaped)s))' % locals() - - nmchar = r'[^\000-\054\056\057\072-\100\133-\136\140\173-\177]' - #nmstart = r'[^\000-\100\133-\136\140\173-\177]' - #ident = (r'(?:' - # r'-?(?:%(nmstart)s|%(escape)s)%(nmchar)s*(?:%(escape)s%(nmchar)s*)*' - #r')') % locals() - - comment = r'(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)' - - # only for specific purposes. The bang is grouped: - _bang_comment = r'(?:/\*(!?)[^*]*\*+(?:[^/*][^*]*\*+)*/)' - - string1 = \ - r'(?:\047[^\047\\\r\n\f]*(?:\\[^\r\n\f][^\047\\\r\n\f]*)*\047)' - string2 = r'(?:"[^"\\\r\n\f]*(?:\\[^\r\n\f][^"\\\r\n\f]*)*")' - strings = r'(?:%s|%s)' % (string1, string2) - - nl_string1 = \ - r'(?:\047[^\047\\\r\n\f]*(?:\\(?:[^\r]|\r\n?)[^\047\\\r\n\f]*)*\047)' - nl_string2 = r'(?:"[^"\\\r\n\f]*(?:\\(?:[^\r]|\r\n?)[^"\\\r\n\f]*)*")' - nl_strings = r'(?:%s|%s)' % (nl_string1, nl_string2) - - uri_nl_string1 = r'(?:\047[^\047\\]*(?:\\(?:[^\r]|\r\n?)[^\047\\]*)*\047)' - uri_nl_string2 = r'(?:"[^"\\]*(?:\\(?:[^\r]|\r\n?)[^"\\]*)*")' - uri_nl_strings = r'(?:%s|%s)' % (uri_nl_string1, uri_nl_string2) - - nl_escaped = r'(?:\\%(nl)s)' % locals() - - space = r'(?:%(spacechar)s|%(comment)s)' % locals() - - ie7hack = r'(?:>/\*\*/)' - - uri = (r'(?:' - # noqa pylint: disable = C0330 - r'(?:[^\000-\040"\047()\\\177]*' - r'(?:%(escape)s[^\000-\040"\047()\\\177]*)*)' - r'(?:' - r'(?:%(spacechar)s+|%(nl_escaped)s+)' - r'(?:' - r'(?:[^\000-\040"\047()\\\177]|%(escape)s|%(nl_escaped)s)' - r'[^\000-\040"\047()\\\177]*' - r'(?:%(escape)s[^\000-\040"\047()\\\177]*)*' - r')+' - r')*' - r')') % locals() - - nl_unesc_sub = _re.compile(nl_escaped).sub - - uri_space_sub = _re.compile(( - r'(%(escape)s+)|%(spacechar)s+|%(nl_escaped)s+' - ) % locals()).sub - uri_space_subber = lambda m: m.groups()[0] or '' - - space_sub_simple = _re.compile(( - r'[\r\n\f\040\t;]+|(%(comment)s+)' - ) % locals()).sub - space_sub_banged = _re.compile(( - r'[\r\n\f\040\t;]+|(%(_bang_comment)s+)' - ) % locals()).sub - - post_esc_sub = _re.compile(r'[\r\n\f\t]+').sub - - main_sub = _re.compile(( - # noqa pylint: disable = C0330 - r'([^\\"\047u>@\r\n\f\040\t/;:{}]+)' - r'|(?<=[{}(=:>+[,!])(%(space)s+)' - r'|^(%(space)s+)' - r'|(%(space)s+)(?=(([:{});=>+\],!])|$)?)' - r'|;(%(space)s*(?:;%(space)s*)*)(?=(\})?)' - r'|(\{)' - r'|(\})' - r'|(%(strings)s)' - r'|(?<!%(nmchar)s)url\(%(spacechar)s*(' - r'%(uri_nl_strings)s' - r'|%(uri)s' - r')%(spacechar)s*\)' - r'|(@(?:' - r'[mM][eE][dD][iI][aA]' - r'|[sS][uU][pP][pP][oO][rR][tT][sS]' - r'|[dD][oO][cC][uU][mM][eE][nN][tT]' - r'|(?:-(?:' - r'[wW][eE][bB][kK][iI][tT]|[mM][oO][zZ]|[oO]|[mM][sS]' - r')-)?' - r'[kK][eE][yY][fF][rR][aA][mM][eE][sS]' - r'))(?!%(nmchar)s)' - r'|(%(ie7hack)s)(%(space)s*)' - r'|(:[fF][iI][rR][sS][tT]-[lL]' - r'(?:[iI][nN][eE]|[eE][tT][tT][eE][rR]))' - r'(%(space)s*)(?=[{,])' - r'|(%(nl_strings)s)' - r'|(%(escape)s[^\\"\047u>@\r\n\f\040\t/;:{}]*)' - ) % locals()).sub - - #print main_sub.__self__.pattern - - def main_subber(keep_bang_comments): - """ Make main subber """ - in_macie5, in_rule, at_group = [0], [0], [0] - - if keep_bang_comments: - space_sub = space_sub_banged - - def space_subber(match): - """ Space|Comment subber """ - if match.lastindex: - group1, group2 = match.group(1, 2) - if group2: - if group1.endswith(r'\*/'): - in_macie5[0] = 1 - else: - in_macie5[0] = 0 - return group1 - elif group1: - if group1.endswith(r'\*/'): - if in_macie5[0]: - return '' - in_macie5[0] = 1 - return r'/*\*/' - elif in_macie5[0]: - in_macie5[0] = 0 - return '/**/' - return '' - else: - space_sub = space_sub_simple - - def space_subber(match): - """ Space|Comment subber """ - if match.lastindex: - if match.group(1).endswith(r'\*/'): - if in_macie5[0]: - return '' - in_macie5[0] = 1 - return r'/*\*/' - elif in_macie5[0]: - in_macie5[0] = 0 - return '/**/' - return '' - - def fn_space_post(group): - """ space with token after """ - if group(5) is None or ( - group(6) == ':' and not in_rule[0] and not at_group[0]): - return ' ' + space_sub(space_subber, group(4)) - return space_sub(space_subber, group(4)) - - def fn_semicolon(group): - """ ; handler """ - return ';' + space_sub(space_subber, group(7)) - - def fn_semicolon2(group): - """ ; handler """ - if in_rule[0]: - return space_sub(space_subber, group(7)) - return ';' + space_sub(space_subber, group(7)) - - def fn_open(_): - """ { handler """ - if at_group[0]: - at_group[0] -= 1 - else: - in_rule[0] = 1 - return '{' - - def fn_close(_): - """ } handler """ - in_rule[0] = 0 - return '}' - - def fn_at_group(group): - """ @xxx group handler """ - at_group[0] += 1 - return group(13) - - def fn_ie7hack(group): - """ IE7 Hack handler """ - if not in_rule[0] and not at_group[0]: - in_macie5[0] = 0 - return group(14) + space_sub(space_subber, group(15)) - return '>' + space_sub(space_subber, group(15)) - - table = ( - # noqa pylint: disable = C0330 - None, - None, - None, - None, - fn_space_post, # space with token after - fn_space_post, # space with token after - fn_space_post, # space with token after - fn_semicolon, # semicolon - fn_semicolon2, # semicolon - fn_open, # { - fn_close, # } - lambda g: g(11), # string - lambda g: 'url(%s)' % uri_space_sub(uri_space_subber, g(12)), - # url(...) - fn_at_group, # @xxx expecting {...} - None, - fn_ie7hack, # ie7hack - None, - lambda g: g(16) + ' ' + space_sub(space_subber, g(17)), - # :first-line|letter followed - # by [{,] (apparently space - # needed for IE6) - lambda g: nl_unesc_sub('', g(18)), # nl_string - lambda g: post_esc_sub(' ', g(19)), # escape - ) - - def func(match): - """ Main subber """ - idx, group = match.lastindex, match.group - if idx > 3: - return table[idx](group) - - # shortcuts for frequent operations below: - elif idx == 1: # not interesting - return group(1) - #else: # space with token before or at the beginning - return space_sub(space_subber, group(idx)) - - return func - - def cssmin(style, keep_bang_comments=False): # pylint: disable = W0621 - """ - Minify CSS. - - :Parameters: - `style` : ``str`` - CSS to minify - - `keep_bang_comments` : ``bool`` - Keep comments starting with an exclamation mark? (``/*!...*/``) - - :Return: Minified style - :Rtype: ``str`` - """ - return main_sub(main_subber(keep_bang_comments), style) - - return cssmin - -cssmin = _make_cssmin() - - -if __name__ == '__main__': - def main(): - """ Main """ - import sys as _sys - keep_bang_comments = ( - '-b' in _sys.argv[1:] - or '-bp' in _sys.argv[1:] - or '-pb' in _sys.argv[1:] - ) - if '-p' in _sys.argv[1:] or '-bp' in _sys.argv[1:] \ - or '-pb' in _sys.argv[1:]: - global cssmin # pylint: disable = W0603 - cssmin = _make_cssmin(python_only=True) - _sys.stdout.write(cssmin( - _sys.stdin.read(), keep_bang_comments=keep_bang_comments - )) - main() diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/run_tests.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/run_tests.py deleted file mode 100755 index 9128d743586..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/run_tests.py +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/env python -# -*- coding: ascii -*- -# -# Copyright 2014 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -=========== - Run tests -=========== - -Run tests. -""" -__author__ = "Andr\xe9 Malo" -__author__ = getattr(__author__, 'decode', lambda x: __author__)('latin-1') -__docformat__ = "restructuredtext en" - -import os as _os -import re as _re -import sys as _sys - -from _setup import shell -from _setup import term - - -def run_tests(basedir, libdir): - """ Run output based tests """ - import rcssmin as _rcssmin - py_cssmin = _rcssmin._make_cssmin(python_only=True) - c_cssmin = _rcssmin._make_cssmin(python_only=False) - - def run_test(example, output_file): - """ Run it """ - try: - fp = open(example, 'r') - except IOError: - return - else: - try: - input = fp.read() - finally: - fp.close() - - def load_output(filename): - try: - fp = open(filename, 'r') - except IOError: - return None - else: - try: - output = fp.read() - finally: - fp.close() - output = output.strip() - if _re.search(r'(?<!\\)(?:\\\\)*\\[0-9a-zA-Z]{1,6}$', output): - output += ' ' - return output - - output = load_output(output_file) - output_b = load_output(output_file + '.b') - - def do_test(cssmin, output, **options): - try: - genout = cssmin(input, **options) - except (KeyboardInterrupt, SystemExit): - raise - except: - return 1, "%(RED)s exc%(NORMAL)s " - else: - if output is None: - return 1, "%(RED)smiss%(NORMAL)s " - elif genout == output or genout == output.rstrip(): - return 0, "%(GREEN)sOK%(NORMAL)s " - else: - return 1, "%(RED)sfail%(NORMAL)s " - - erred, out = do_test(py_cssmin, output) - erred, c_out = do_test(c_cssmin, output) - erred, out_b = do_test(py_cssmin, output_b, keep_bang_comments=True) - erred, c_out_b = do_test(c_cssmin, output_b, keep_bang_comments=True) - - term.write( - "%(out)s %(out_b)s | %(c_out)s %(c_out_b)s - %%(example)s\n" - % locals(), - example=_os.path.basename(example), - ) - return erred - - # end - # begin main test code - - erred = 0 - basedir = shell.native(basedir) - strip = len(basedir) - len(_os.path.basename(basedir)) - for dirname, dirs, files in shell.walk(basedir): - dirs[:] = [ - item for item in dirs if item not in ('.svn', '.git', 'out') - ] - dirs.sort() - files = [item for item in files if item.endswith('.css')] - if not files: - continue - if not _os.path.isdir(_os.path.join(basedir, dirname, 'out')): - continue - term.yellow("---> %s" % (dirname[strip:],)) - files.sort() - for filename in files: - if run_test( - _os.path.join(dirname, filename), - _os.path.join(dirname, 'out', filename[:-4] + '.out'), - ): erred = 1 - term.yellow("<--- %s" % (dirname[strip:],)) - return erred - - -def main(): - """ Main """ - basedir, libdir = None, None - accept_opts = True - args = [] - for arg in _sys.argv[1:]: - if accept_opts: - if arg == '--': - accept_opts = False - continue - elif arg == '-q': - term.write = term.green = term.red = term.yellow = \ - term.announce = \ - lambda fmt, **kwargs: None - continue - elif arg == '-p': - info = {} - for key in term.terminfo(): - info[key] = '' - info['ERASE'] = '\n' - term.terminfo.info = info - continue - elif arg.startswith('-'): - _sys.stderr.write("Unrecognized option %r\n" % (arg,)) - return 2 - args.append(arg) - if len(args) > 2: - _sys.stderr.write("Too many arguments\n") - return 2 - elif len(args) < 1: - _sys.stderr.write("Missing arguments\n") - return 2 - basedir = args[0] - if len(args) > 1: - libdir = args[1] - return run_tests(basedir, libdir) - - -if __name__ == '__main__': - _sys.exit(main()) diff --git a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/setup.py b/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/setup.py deleted file mode 100644 index d4ca570bf29..00000000000 --- a/chromium/third_party/catapult/third_party/py_vulcanize/third_party/rcssmin/setup.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python -# -*- coding: ascii -*- -# -# Copyright 2006 - 2013 -# Andr\xe9 Malo or his licensors, as applicable -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import sys as _sys -from _setup import run - - -def setup(args=None, _manifest=0): - """ Main setup function """ - from _setup.ext import Extension - - if 'java' in _sys.platform.lower(): - # no c extension for jython - ext = None - else: - ext=[Extension('_rcssmin', sources=['rcssmin.c'])] - - return run(script_args=args, ext=ext, manifest_only=_manifest) - - -def manifest(): - """ Create List of packaged files """ - return setup((), _manifest=1) - - -if __name__ == '__main__': - setup() |