Metadata-Version: 1.0
Name: slimit
Version: 0.5.1
Summary: SlimIt - JavaScript minifier
Home-page: http://slimit.org
Author: Ruslan Spivak
Author-email: ruslan.spivak@gmail.com
License: MIT
Description: Welcome to SlimIt
        ==================================
        
        `SlimIt` is a JavaScript minifier written in Python.
        It compiles JavaScript into more compact code so that it downloads
        and runs faster.
        
        `SlimIt` also provides a library that includes a JavaScript parser,
        lexer, pretty printer and a tree visitor.
        
        `http://slimit.org/ <http://slimit.org/>`_
        
        Let's minify some code
        ----------------------
        
        From the command line:
        
        ::
        
            $ slimit -h
            Usage: slimit [options] [input file]
        
            If no input file is provided STDIN is used by default.
            Minified JavaScript code is printed to STDOUT.
        
        
            Options:
              -h, --help    show this help message and exit
              -m, --mangle  mangle names
        
            $ cat test.js
            var a = function( obj ) {
                    for ( var name in obj ) {
                            return false;
                    }
                    return true;
            };
            $
            $ slimit --mangle < test.js
            var a=function(a){for(var b in a)return false;return true;};
        
        Or using library API:
        
        >>> from slimit import minify
        >>> text = """
        ... var a = function( obj ) {
        ...         for ( var name in obj ) {
        ...                 return false;
        ...         }
        ...         return true;
        ... };
        ... """
        >>> print minify(text, mangle=True)
        var a=function(a){for(var b in a)return false;return true;};
        
        
        Iterate over, modify a JavaScript AST and pretty print it
        ---------------------------------------------------------
        
        >>> from slimit.parser import Parser
        >>> from slimit.visitors import nodevisitor
        >>> from slimit import ast
        >>>
        >>> parser = Parser()
        >>> tree = parser.parse('for(var i=0; i<10; i++) {var x=5+i;}')
        >>> for node in nodevisitor.visit(tree):
        ...     if isinstance(node, ast.Identifier) and node.value == 'i':
        ...         node.value = 'hello'
        ...
        >>> print tree.to_ecma() # print awesome javascript :)
        for (var hello = 0; hello < 10; hello++) {
          var x = 5 + hello;
        }
        >>>
        
        Using lexer in your project
        ---------------------------
        
        >>> from slimit.lexer import Lexer
        >>> lexer = Lexer()
        >>> lexer.input('a = 1;')
        >>> for token in lexer:
        ...     print token
        ...
        LexToken(ID,'a',1,0)
        LexToken(EQ,'=',1,2)
        LexToken(NUMBER,'1',1,4)
        LexToken(SEMI,';',1,5)
        
        You can get one token at a time using ``token`` method:
        
        >>> lexer.input('a = 1;')
        >>> while True:
        ...     token = lexer.token()
        ...     if not token:
        ...         break
        ...     print token
        ...
        LexToken(ID,'a',1,0)
        LexToken(EQ,'=',1,2)
        LexToken(NUMBER,'1',1,4)
        LexToken(SEMI,';',1,5)
        
        `LexToken` instance has different attributes:
        
        >>> lexer.input('a = 1;')
        >>> token = lexer.token()
        >>> token.type, token.value, token.lineno, token.lexpos
        ('ID', 'a', 1, 0)
        
        Installation
        ------------
        
        Using ``pip``::
        
            $ sudo pip install slimit
        
        Using ``easy_install``::
        
            $ sudo easy_install slimit
        
        Benchmarks
        ----------
        
        +----------------------+---------+---------+--------+
        | jQuery 1.6.1 (bytes) | jsmin   | rJSmin  | SlimIt |
        +======================+=========+=========+========+
        | 234,995              | 134,819 | 134,215 | 94,290 |
        +----------------------+---------+---------+--------+
        
        Roadmap
        -------
        - More minifications
        - Speed improvements
        
        
        Change History
        ==============
        
        0.5.1 (2011-06-06)
        ----------------
        - Bugfix: https://github.com/rspivak/slimit/issues/2
        
        0.5 (2011-06-06)
        ----------------
        - Added name mangling
        
        0.4 (2011-05-12)
        ----------------
        - Minify more by removing block braces { }
        - More tests
        
        0.3.2 (2011-05-09)
        ------------------
        - More hacks to use pre-generated lex and yacc tables when called from
          the command line
        
        0.3.1 (2011-05-09)
        ------------------
        - Use pre-generated lex and yacc tables when called from the command line
        
        0.3 (2011-05-09)
        ----------------
        - Added minifier
        
        0.2 (2011-05-07)
        ----------------
        - Added a JavaScript parser
        - Added pretty printer
        - Added node visitor
        
        0.1 (2011-05-02)
        ----------------
        - Initial public version. It contains only a JavaScript lexer
        
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Compilers
Classifier: Operating System :: Unix
