slimmer-0.1.30/ 0000755 0001750 0001750 00000000000 11275116110 013074 5 ustar peterbe peterbe slimmer-0.1.30/README.txt 0000644 0001750 0001750 00000001557 11114250774 014611 0 ustar peterbe peterbe slimmer.py is a whitespace optimizer for CSS, HTML and XHTML output.
It's written by Peter Bengtsson, peter@fry-it.com in 2004-2005. Still
maintained in 2008.
INSTALLATION::
$ sudo easy_install slimmer
Alternative::
$ tar -zxvf slimmer-x.x.x.tgz
$ cd slimmer/
$ sudo python setup.py install
USAGE::
>>> import slimmer
>>> from slimmer import css_slimmer
>>> css_slimmer("h1, h2 { font-family: 'Courier New', Courier; }")
"h1,h2{font-family:'Courier New',Courier;border:1px solid black;}"
>>> html_slimmer(' one
')
>>> from slimmer import html_slimmer, xhtml_slimmer
>>> html_slimmer(''' one
''')
' one
'
UNITTESTS::
$ cd slimmer/tests
$ python testSlimmer.py
$ python testSlimmer.py --verbose
slimmer-0.1.30/setup.py 0000644 0001750 0001750 00000002757 11114250677 014632 0 ustar peterbe peterbe from setuptools import setup, find_packages
import sys, os
import slimmer
version = slimmer.__version__ # hate repeating myself
README = os.path.join(os.path.dirname(__file__), 'README.txt')
long_description = open(README).read().strip() + "\n\n"
setup(name='slimmer',
version=version,
description="HTML,XHTML,CSS,JavaScript optimizer",
long_description=long_description,
keywords='slimmer optimizer optimiser whitespace',
author='Peter Bengtsson',
author_email='peter@fry-it.com',
url='http://www.fry-it.com',
download_url='http://pypi.python.org/pypi/slimmer/',
license='Python',
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Other Environment",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: Python Software Foundation License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Topic :: Communications",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Other/Nonlisted Topic",
"Topic :: Software Development :: Libraries :: Python Modules",
],
packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
include_package_data=True,
test_suite='slimmer.tests',
zip_safe=True,
install_requires=[
# -*- Extra requirements: -*-
],
entry_points="""
# -*- Entry points: -*-
""",
)
slimmer-0.1.30/setup.cfg 0000644 0001750 0001750 00000000073 11275116111 014716 0 ustar peterbe peterbe [egg_info]
tag_build =
tag_date = 0
tag_svn_revision = 0
slimmer-0.1.30/slimmer.egg-info/ 0000755 0001750 0001750 00000000000 11275116110 016236 5 ustar peterbe peterbe slimmer-0.1.30/slimmer.egg-info/top_level.txt 0000644 0001750 0001750 00000000010 11275116110 020757 0 ustar peterbe peterbe slimmer
slimmer-0.1.30/slimmer.egg-info/SOURCES.txt 0000644 0001750 0001750 00000000600 11275116110 020116 0 ustar peterbe peterbe README.txt
setup.cfg
setup.py
slimmer/__init__.py
slimmer/js_function_slimmer.py
slimmer/slimit.py
slimmer/slimmer.py
slimmer.egg-info/PKG-INFO
slimmer.egg-info/SOURCES.txt
slimmer.egg-info/dependency_links.txt
slimmer.egg-info/entry_points.txt
slimmer.egg-info/top_level.txt
slimmer.egg-info/zip-safe
slimmer/tests/__init__.py
slimmer/tests/codechunks.py
slimmer/tests/testSlimmer.py slimmer-0.1.30/slimmer.egg-info/entry_points.txt 0000644 0001750 0001750 00000000045 11275116110 021533 0 ustar peterbe peterbe
# -*- Entry points: -*-
slimmer-0.1.30/slimmer.egg-info/PKG-INFO 0000644 0001750 0001750 00000003677 11275116110 017350 0 ustar peterbe peterbe Metadata-Version: 1.0
Name: slimmer
Version: 0.1.30
Summary: HTML,XHTML,CSS,JavaScript optimizer
Home-page: http://www.fry-it.com
Author: Peter Bengtsson
Author-email: peter@fry-it.com
License: Python
Download-URL: http://pypi.python.org/pypi/slimmer/
Description: slimmer.py is a whitespace optimizer for CSS, HTML and XHTML output.
It's written by Peter Bengtsson, peter@fry-it.com in 2004-2005. Still
maintained in 2008.
INSTALLATION::
$ sudo easy_install slimmer
Alternative::
$ tar -zxvf slimmer-x.x.x.tgz
$ cd slimmer/
$ sudo python setup.py install
USAGE::
>>> import slimmer
>>> from slimmer import css_slimmer
>>> css_slimmer("h1, h2 { font-family: 'Courier New', Courier; }")
"h1,h2{font-family:'Courier New',Courier;border:1px solid black;}"
>>> html_slimmer(' one
')
>>> from slimmer import html_slimmer, xhtml_slimmer
>>> html_slimmer(''' one
''')
' one
'
UNITTESTS::
$ cd slimmer/tests
$ python testSlimmer.py
$ python testSlimmer.py --verbose
Keywords: slimmer optimizer optimiser whitespace
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Other Environment
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Python Software Foundation License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Communications
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Other/Nonlisted Topic
Classifier: Topic :: Software Development :: Libraries :: Python Modules
slimmer-0.1.30/slimmer.egg-info/zip-safe 0000644 0001750 0001750 00000000001 11114012023 017654 0 ustar peterbe peterbe
slimmer-0.1.30/slimmer.egg-info/dependency_links.txt 0000644 0001750 0001750 00000000001 11275116110 022304 0 ustar peterbe peterbe
slimmer-0.1.30/PKG-INFO 0000644 0001750 0001750 00000003677 11275116110 014206 0 ustar peterbe peterbe Metadata-Version: 1.0
Name: slimmer
Version: 0.1.30
Summary: HTML,XHTML,CSS,JavaScript optimizer
Home-page: http://www.fry-it.com
Author: Peter Bengtsson
Author-email: peter@fry-it.com
License: Python
Download-URL: http://pypi.python.org/pypi/slimmer/
Description: slimmer.py is a whitespace optimizer for CSS, HTML and XHTML output.
It's written by Peter Bengtsson, peter@fry-it.com in 2004-2005. Still
maintained in 2008.
INSTALLATION::
$ sudo easy_install slimmer
Alternative::
$ tar -zxvf slimmer-x.x.x.tgz
$ cd slimmer/
$ sudo python setup.py install
USAGE::
>>> import slimmer
>>> from slimmer import css_slimmer
>>> css_slimmer("h1, h2 { font-family: 'Courier New', Courier; }")
"h1,h2{font-family:'Courier New',Courier;border:1px solid black;}"
>>> html_slimmer(' one
')
>>> from slimmer import html_slimmer, xhtml_slimmer
>>> html_slimmer(''' one
''')
' one
'
UNITTESTS::
$ cd slimmer/tests
$ python testSlimmer.py
$ python testSlimmer.py --verbose
Keywords: slimmer optimizer optimiser whitespace
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Other Environment
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Python Software Foundation License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Communications
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Other/Nonlisted Topic
Classifier: Topic :: Software Development :: Libraries :: Python Modules
slimmer-0.1.30/slimmer/ 0000755 0001750 0001750 00000000000 11275116110 014544 5 ustar peterbe peterbe slimmer-0.1.30/slimmer/__init__.py 0000644 0001750 0001750 00000000072 11114011722 016647 0 ustar peterbe peterbe from slimmer import * # slimmer.py has an __all__ variable slimmer-0.1.30/slimmer/slimmer.py 0000644 0001750 0001750 00000054250 11275116001 016573 0 ustar peterbe peterbe #!/usr/bin/python
"""
slimmer.py
Peter Bengtsson, mail@peterbe.com, 2004-2006
slimmer.py is a simple set of functions for compressing/optimizing
HTML, XHTML and CSS documents as strings.
Ideally used from other modules used something like this::
>>> import slimmer
>>> code = open('file.html').read()
>>> slimmed = slimmer.xhtml_slimmer(code)
>>> print len(code), len(slimmed)
You have to estimate yourself if you think it's worth using slimmer
on your documents if you're running a dynamic setting such as a
web application (e.g. Zope with CheckoutableTemplates).
On my PC I slimmed a 1MB .html document in 2.2 seconds and saved
100KB. Saved 31KB on a 110KB .css file in 0.063 seconds.
And lastly, saved 17% in size in 0.016 seconds for www.python.org.
Changes::
0.1.30 Nov 2009 Better at guessing HTML or XHTML
0.1.29 Nov 2008 New distutils release
0.1.28 Nov 2008 Added some tests that tests UTF-8 and EUC-JP HTML
0.1.27 Nov 2008 As a new distutils package
0.1.26 Oct 2007 Minor improvement to js_slimmer for 'var x = [...]'
0.1.25 Oct 2007 Slimming unicode text with hex colours like #FFFFFF
caused an error relating to string.translate()
0.1.24 Sep 2007
0.1.11 Feb 2005 Fixed js_slimmer() for some curly bracket endings
0.1.10 Jan 2005 (Major patch by Baruch Even)
- Fixed the -t option for testing, it didn't work, --test did work.
- Fixed a typo s/whatspace/whitespace/
- Fixed a bug were more than one consecutive space turned into nothing,
added test 6 for this.
- Revamped other code to completely eliminate end of lines. It works in
FireFox 1.0
- Changed the test cases to fit
- Removed the last ; before } -> s/;}/}/
- Changed the test cases to fit
0.1.9 Jan 2005 CLI interface can accept URLs
0.1.8 Dec 2004 Added an option (UNQUOTE_HTML_ATTRIBUTES) to remove
quotes from HTML attributes. (default is off)
0.1.7 Dec 2004 Separate out from CheckoutableTemplates and __all__
variable fixed for js_slimmer.
0.1.6 Dec 2004 Care for MacIE5 CSS Hack (http://www.sam-i-am.com/work/sandbox/css/mac_ie5_hack.html)
0.1.5 Nov 2004 Some improvements to js_slimmer()
0.1.4 Nov 2004 Added first draft of js_slimmer()
0.1.3 Nov 2004 Much improved CLI functions
0.1.2 Sep 2004 Added basic CLI functions (see run())
0.1.1 Sep 2004 Major speed improvment by removing
the unquote_numerical feature.
0.1.0 Sep 2004 First version numbering
"""
__version__='0.1.30'
__all__=['acceptableSyntax','guessSyntax','slimmer','css_slimmer',
'html_slimmer','xhtml_slimmer','js_slimmer',
'__version__']
import re, os, sys, getopt
import urllib2
try:
from js_function_slimmer import slim as js_function_slimmer
except ImportError:
js_function_slimmer = None
## Options
#
# If you're slimming HTML docs and really want to
# convert border="0" to border=0, be aware that this
# can take 5 times longer than without but compresses
# the document at least twice as good.
UNQUOTE_HTML_ATTRIBUTES = 0
# Define the syntax options we accept
HTML = 'html'
XHTML = 'xhtml'
CSS = 'css'
JS = 'js'
OK_SYNTAX = (HTML, XHTML, CSS, JS)
def acceptableSyntax(syntax):
""" return the syntax as we recognize it or None """
syntax = str(syntax).lower().strip().replace(' ','').replace('-','')
syntax = syntax.replace('stylesheet','css') # allow for alias
syntax = syntax.replace('javascript','js') # allow for alias
if syntax in OK_SYNTAX:
return syntax
else:
return None
some_javascript_code_regex = re.compile(
'function\(\)\s*{|var \w|return false;|return true;|'\
'function \w{2,15}\(|}\s*else if\s*\(')
some_css_code_regex = re.compile('^#\w+\s*{|body\s*{|font-family:|margin:0|display:'\
'|height:\s*\d|border:1px')
_html_doctypes = ('|