Reimport
This commit is contained in:
201
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/LICENSE
vendored
Normal file
201
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/LICENSE
vendored
Normal file
@@ -0,0 +1,201 @@
|
||||
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.
|
||||
354
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/MANIFEST
vendored
Normal file
354
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/MANIFEST
vendored
Normal file
@@ -0,0 +1,354 @@
|
||||
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
|
||||
316
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/PKG-INFO
vendored
Normal file
316
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/PKG-INFO
vendored
Normal file
@@ -0,0 +1,316 @@
|
||||
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)
|
||||
16
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/README.chromium
vendored
Normal file
16
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/README.chromium
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
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.
|
||||
153
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/README.rst
vendored
Normal file
153
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/README.rst
vendored
Normal file
@@ -0,0 +1,153 @@
|
||||
.. -*- 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
|
||||
64
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/LICENSE.cssmin
vendored
Normal file
64
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/LICENSE.cssmin
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
`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.
|
||||
30
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/__init__.py
vendored
Normal file
30
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/__init__.py
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
# -*- 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')
|
||||
246
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/cssmin.py
vendored
Normal file
246
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/cssmin.py
vendored
Normal file
@@ -0,0 +1,246 @@
|
||||
#!/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()
|
||||
236
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/main.py
vendored
Normal file
236
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/main.py
vendored
Normal file
@@ -0,0 +1,236 @@
|
||||
#!/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()
|
||||
3861
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/wikipedia.css
vendored
Normal file
3861
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/wikipedia.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/wikipedia.min.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/wikipedia.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
344
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/write.py
vendored
Normal file
344
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/bench/write.py
vendored
Normal file
@@ -0,0 +1,344 @@
|
||||
#!/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()
|
||||
61
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/BENCHMARKS
vendored
Normal file
61
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/BENCHMARKS
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
$ 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
|
||||
42
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/CHANGES
vendored
Normal file
42
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/CHANGES
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
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.
|
||||
19
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/CLASSIFIERS
vendored
Normal file
19
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/CLASSIFIERS
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
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
|
||||
85
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/DESCRIPTION
vendored
Normal file
85
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/DESCRIPTION
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
==============
|
||||
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
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/PROVIDES
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/PROVIDES
vendored
Normal file
@@ -0,0 +1 @@
|
||||
rcssmin (1.0)
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/SUMMARY
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/SUMMARY
vendored
Normal file
@@ -0,0 +1 @@
|
||||
CSS Minifier
|
||||
@@ -0,0 +1,6 @@
|
||||
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
|
||||
BIN
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/crarr.png
vendored
Normal file
BIN
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/crarr.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 340 B |
322
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/epydoc.css
vendored
Normal file
322
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/epydoc.css
vendored
Normal file
@@ -0,0 +1,322 @@
|
||||
|
||||
|
||||
/* 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; }
|
||||
293
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/epydoc.js
vendored
Normal file
293
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/epydoc.js
vendored
Normal file
@@ -0,0 +1,293 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
261
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/help.html
vendored
Normal file
261
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/help.html
vendored
Normal file
@@ -0,0 +1,261 @@
|
||||
<?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>
|
||||
@@ -0,0 +1,163 @@
|
||||
<?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>
|
||||
224
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/index.html
vendored
Normal file
224
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/index.html
vendored
Normal file
@@ -0,0 +1,224 @@
|
||||
<?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>
|
||||
94
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/module-tree.html
vendored
Normal file
94
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/module-tree.html
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
<?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>
|
||||
224
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/rcssmin-module.html
vendored
Normal file
224
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/rcssmin-module.html
vendored
Normal file
@@ -0,0 +1,224 @@
|
||||
<?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>
|
||||
477
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/rcssmin-pysrc.html
vendored
Normal file
477
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/rcssmin-pysrc.html
vendored
Normal file
@@ -0,0 +1,477 @@
|
||||
<?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>
|
||||
38
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/redirect.html
vendored
Normal file
38
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/docs/apidoc/redirect.html
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
<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>
|
||||
84
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/package.cfg
vendored
Normal file
84
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/package.cfg
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
# -*- 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
|
||||
1163
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/rcssmin.c
vendored
Normal file
1163
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/rcssmin.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
374
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/rcssmin.py
vendored
Normal file
374
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/rcssmin.py
vendored
Normal file
@@ -0,0 +1,374 @@
|
||||
#!/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()
|
||||
166
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/run_tests.py
vendored
Normal file
166
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/run_tests.py
vendored
Normal file
@@ -0,0 +1,166 @@
|
||||
#!/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())
|
||||
42
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/setup.py
vendored
Normal file
42
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/setup.py
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/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()
|
||||
@@ -0,0 +1,3 @@
|
||||
@page :first {
|
||||
margin-left: 1cm;
|
||||
}
|
||||
15
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_01.css
vendored
Normal file
15
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_01.css
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
@document url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
/* CSS rules here apply to:
|
||||
+ The page "http://www.w3.org/".
|
||||
+ Any page whose URL begins with "http://www.w3.org/Style/"
|
||||
+ Any page whose URL's host is "mozilla.org" or ends with
|
||||
".mozilla.org"
|
||||
+ Any page whose URL starts with "https:" */
|
||||
|
||||
/* make the above-mentioned pages really ugly */
|
||||
body { color: purple; background: yellow; }
|
||||
}
|
||||
17
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_02.css
vendored
Normal file
17
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_02.css
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
@media all and (min-width:500px) {
|
||||
@document url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
/* CSS rules here apply to:
|
||||
+ The page "http://www.w3.org/".
|
||||
+ Any page whose URL begins with "http://www.w3.org/Style/"
|
||||
+ Any page whose URL's host is "mozilla.org" or ends with
|
||||
".mozilla.org"
|
||||
+ Any page whose URL starts with "https:" */
|
||||
|
||||
/* make the above-mentioned pages really ugly */
|
||||
body { color: purple; background: yellow; }
|
||||
}
|
||||
}
|
||||
11
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_03.css
vendored
Normal file
11
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_03.css
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
@media all and (min-width : 500px) {
|
||||
@document url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
@page :last {
|
||||
margin : 3in;
|
||||
}
|
||||
}
|
||||
}
|
||||
13
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_04.css
vendored
Normal file
13
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_04.css
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
@media all and (min-width : 500px) {
|
||||
@document url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
@supports ( (perspective: 10px) or (-moz-perspective: 10px) or (-webkit-perspective: 10px) or (-ms-perspective: 10px) or (-o-perspective: 10px) ) {
|
||||
@page :last {
|
||||
margin : 3in;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_05.css
vendored
Normal file
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_05.css
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
@media all and (min-width : 500px) {
|
||||
@document url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
@supports ( (perspective: 10px) or (-moz-perspective: 10px) or (-webkit-perspective: 10px) or (-ms-perspective: 10px) or (-o-perspective: 10px) ) {
|
||||
@keyframes slidein {
|
||||
from {
|
||||
margin-left : 100%;
|
||||
width: 300%
|
||||
}
|
||||
|
||||
75% {
|
||||
font-size:300%;
|
||||
margin-left:25%;
|
||||
width:150%;
|
||||
}
|
||||
|
||||
to {
|
||||
margin-left:0%;
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
|
||||
@page :last {
|
||||
margin : 3in;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_06.css
vendored
Normal file
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_06.css
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
@mEdia all and (min-width : 500px) {
|
||||
@docuMent url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
@suPpoRts ( (perspective: 10px) or (-moz-perspective: 10px) or (-webkit-perspective: 10px) or (-ms-perspective: 10px) or (-o-perspective: 10px) ) {
|
||||
@keyFRames slidein {
|
||||
from {
|
||||
margin-left : 100%;
|
||||
width: 300%
|
||||
}
|
||||
|
||||
75% {
|
||||
font-size:300%;
|
||||
margin-left:25%;
|
||||
width:150%;
|
||||
}
|
||||
|
||||
to {
|
||||
margin-left:0%;
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
|
||||
@pagE :last {
|
||||
margin : 3in;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_07.css
vendored
Normal file
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_07.css
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
@media all and (min-width : 500px) {
|
||||
@document url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
@supports ( (perspective: 10px) or (-moz-perspective: 10px) or (-webkit-perspective: 10px) or (-ms-perspective: 10px) or (-o-perspective: 10px) ) {
|
||||
@keyframes slidein {
|
||||
from :blub {
|
||||
margin-left : 100%;
|
||||
width: 300%
|
||||
}
|
||||
|
||||
75% {
|
||||
font-size:300%;
|
||||
margin-left:25%;
|
||||
width:150%;
|
||||
}
|
||||
|
||||
to {
|
||||
margin-left:0%;
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
|
||||
@page :last {
|
||||
margin : 3in;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_08.css
vendored
Normal file
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_08.css
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
@media all and (min-width : 500px) {
|
||||
@document url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
@supports ( (perspective: 10px) or (-moz-perspective: 10px) or (-webkit-perspective: 10px) or (-ms-perspective: 10px) or (-o-perspective: 10px) ) {
|
||||
@-o-keyframes slidein {
|
||||
from :blub {
|
||||
margin-left : 100%;
|
||||
width: 300%
|
||||
}
|
||||
|
||||
75% {
|
||||
font-size:300%;
|
||||
margin-left:25%;
|
||||
width:150%;
|
||||
}
|
||||
|
||||
to {
|
||||
margin-left:0%;
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
|
||||
@page :last {
|
||||
margin : 3in;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_09.css
vendored
Normal file
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_09.css
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
@media all and (min-width : 500px) {
|
||||
@document url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
@supports ( (perspective: 10px) or (-moz-perspective: 10px) or (-webkit-perspective: 10px) or (-ms-perspective: 10px) or (-o-perspective: 10px) ) {
|
||||
@-moz-keyframes slidein {
|
||||
from :blub {
|
||||
margin-left : 100%;
|
||||
width: 300%
|
||||
}
|
||||
|
||||
75% {
|
||||
font-size:300%;
|
||||
margin-left:25%;
|
||||
width:150%;
|
||||
}
|
||||
|
||||
to {
|
||||
margin-left:0%;
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
|
||||
@page :last {
|
||||
margin : 3in;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_10.css
vendored
Normal file
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_10.css
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
@media all and (min-width : 500px) {
|
||||
@document url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
@supports ( (perspective: 10px) or (-moz-perspective: 10px) or (-webkit-perspective: 10px) or (-ms-perspective: 10px) or (-o-perspective: 10px) ) {
|
||||
@-webkit-keyframes slidein {
|
||||
from :blub {
|
||||
margin-left : 100%;
|
||||
width: 300%
|
||||
}
|
||||
|
||||
75% {
|
||||
font-size:300%;
|
||||
margin-left:25%;
|
||||
width:150%;
|
||||
}
|
||||
|
||||
to {
|
||||
margin-left:0%;
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
|
||||
@page :last {
|
||||
margin : 3in;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_11.css
vendored
Normal file
31
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/atgroup_11.css
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
@media all and (min-width : 500px) {
|
||||
@document url(http://www.w3.org/),
|
||||
url-prefix(http://www.w3.org/Style/),
|
||||
domain(mozilla.org),
|
||||
regexp("https:.*")
|
||||
{
|
||||
@supports ( (perspective: 10px) or (-moz-perspective: 10px) or (-webkit-perspective: 10px) or (-ms-perspective: 10px) or (-o-perspective: 10px) ) {
|
||||
@-ms-keyframes slidein {
|
||||
from :blub {
|
||||
margin-left : 100%;
|
||||
width: 300%
|
||||
}
|
||||
|
||||
75% {
|
||||
font-size:300%;
|
||||
margin-left:25%;
|
||||
width:150%;
|
||||
}
|
||||
|
||||
to {
|
||||
margin-left:0%;
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
|
||||
@page :last {
|
||||
margin : 3in;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
/* this is a comment */i {love: comments; /*! yes */; /*YES*/}
|
||||
@@ -0,0 +1,7 @@
|
||||
#mainnav li.hover dl.subsearch select {
|
||||
margin-top /*\**/:4px\9;
|
||||
margin-bottom /*\**/:0px\9;
|
||||
}
|
||||
#mainnav li.hover dl.subsearch label {
|
||||
margin-top /*\**/:4px\9;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
/*/
|
||||
@@ -0,0 +1 @@
|
||||
a/***/b
|
||||
@@ -0,0 +1 @@
|
||||
a/**\/*/b
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_00.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_00.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
\\0
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_01.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_01.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
\0
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_02.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_02.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
\10
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_03.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_03.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
\0345
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_04.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_04.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
\01234567
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_05.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_05.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
\012345 la
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_06.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/escape_06.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
\a bc
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/first_00.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/first_00.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
x:first-line{bla: blub;}
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/first_01.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/first_01.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
x:first-letter{bla: blub;}
|
||||
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/first_02.css
vendored
Normal file
1
tools/adb/systrace/catapult/common/py_vulcanize/third_party/rcssmin/tests/main/first_02.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
x:first-letter{bla:blub}y:first-line{foo:bar}
|
||||
@@ -0,0 +1 @@
|
||||
@page :first{margin-left:1cm}
|
||||
@@ -0,0 +1 @@
|
||||
@page :first{margin-left:1cm}
|
||||
@@ -0,0 +1 @@
|
||||
@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){body{color:purple;background:yellow}}
|
||||
@@ -0,0 +1 @@
|
||||
@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){body{color:purple;background:yellow}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){body{color:purple;background:yellow}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){body{color:purple;background:yellow}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@page :last{margin:3in}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@page :last{margin:3in}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@keyframes slidein{from{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@keyframes slidein{from{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@mEdia all and (min-width:500px){@docuMent url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@suPpoRts ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@keyFRames slidein{from{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@pagE :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@mEdia all and (min-width:500px){@docuMent url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@suPpoRts ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@keyFRames slidein{from{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@pagE :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@keyframes slidein{from :blub{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@keyframes slidein{from :blub{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@-o-keyframes slidein{from :blub{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@-o-keyframes slidein{from :blub{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@-moz-keyframes slidein{from :blub{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@-moz-keyframes slidein{from :blub{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@-webkit-keyframes slidein{from :blub{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@-webkit-keyframes slidein{from :blub{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@-ms-keyframes slidein{from :blub{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
@media all and (min-width:500px){@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){@supports ((perspective:10px) or (-moz-perspective:10px) or (-webkit-perspective:10px) or (-ms-perspective:10px) or (-o-perspective:10px)){@-ms-keyframes slidein{from :blub{margin-left:100%;width:300%}75%{font-size:300%;margin-left:25%;width:150%}to{margin-left:0%;width:100%}}@page :last{margin:3in}}}}
|
||||
@@ -0,0 +1 @@
|
||||
i{love:comments}
|
||||
@@ -0,0 +1 @@
|
||||
i{love:comments/*! yes */}
|
||||
@@ -0,0 +1 @@
|
||||
#mainnav li.hover dl.subsearch select{margin-top:4px\9;margin-bottom:0px\9}#mainnav li.hover dl.subsearch label{margin-top:4px\9}
|
||||
@@ -0,0 +1 @@
|
||||
#mainnav li.hover dl.subsearch select{margin-top:4px\9;margin-bottom:0px\9}#mainnav li.hover dl.subsearch label{margin-top:4px\9}
|
||||
@@ -0,0 +1 @@
|
||||
/*/
|
||||
@@ -0,0 +1 @@
|
||||
/*/
|
||||
@@ -0,0 +1 @@
|
||||
a b
|
||||
@@ -0,0 +1 @@
|
||||
a b
|
||||
@@ -0,0 +1 @@
|
||||
a b
|
||||
@@ -0,0 +1 @@
|
||||
a b
|
||||
@@ -0,0 +1 @@
|
||||
\\0
|
||||
@@ -0,0 +1 @@
|
||||
\\0
|
||||
@@ -0,0 +1 @@
|
||||
\0
|
||||
@@ -0,0 +1 @@
|
||||
\0
|
||||
@@ -0,0 +1 @@
|
||||
\10
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user