aboutsummaryrefslogtreecommitdiff
path: root/lib/output.js
AgeCommit message (Collapse)Author
2012-10-04minorMihai Bazon
2012-10-03more cleanup (dropped AST_SwitchBlock)Mihai Bazon
2012-10-02support for `--comments` option to keep comments containing @license or ↵Mihai Bazon
@preserve
2012-10-02line numbers start at 1Mihai Bazon
2012-10-02added option to keep some comments in the outputMihai Bazon
2012-10-02"use strict";Mihai Bazon
2012-10-02a shy attempt to obey `width` in the beautifier; added `bracketize` option ↵Mihai Bazon
to always print brackets around if/do/while/for statements; export more options via the CLI
2012-09-24Support input source mapMihai Bazon
This is useful while compressing generated code; for example compressing JS compiled by CoffeeScript (assuming you got a source map): uglifyjs2 --in-source-map generated.js.map \ --source-map uglified.js.map \ -o uglified.js The above assumes you have a "generated.js.map" file which is the source mapping between your CoffeeScript and the generated.js (compiled output from CoffeeScript). The name of the input file is not present in this example; it will be fetched from the source map (but it can be passed manually too). The output will be in "uglified.js" and the output map "uglified.js.map" will actually map to the original CoffeeScript code, rather than to generated.js.
2012-09-21better support for multiple input files:Mihai Bazon
- use a single AST_Toplevel node for all files - keep original source filename in the tokens
2012-09-18support for directivesMihai Bazon
2012-09-18added AST_NaN (output as 0/0)Mihai Bazon
2012-09-16rewrite handle_if_returnMihai Bazon
optimizations of if/return/continue seem to be even better now
2012-09-14adding an imaginary "return undefined" can sometimes helpMihai Bazon
function f() { if (foo) return x(); if (!bar) return y(); } ==> function f() { return foo ? x() : bar ? void 0 : y(); }
2012-09-14more optimizations that v1 does and some cleanupsMihai Bazon
- a = a + x ==> a+=x - joining consecutive var statements (hoisting is not always desirable) - x == false ==> x == 0, x != true ==> x != 1 - x, x ==> x; x = exp(), x ==> x = exp() - discarding useless break-s
2012-09-12fixed run-tests and an issue about reversing the condition in AST_IfMihai Bazon
2012-09-11fixed some mess with symbols/scopeMihai Bazon
- all symbols now have a `thedef` property which is a SymbolDef object, instead of the `uniq` that we had before (pointing to the first occurrence of the name as declaration). - for undeclared symbols we still create a SymbolDef object in the toplevel scope but mark it "undeclared" - we can now call figure_out_scope after squeezing, which is useful in order not to mangle names that were dropped by the squeezer
2012-09-10more progress on the compressor (WIP)Mihai Bazon
2012-09-08fix output for division followed by regexpMihai Bazon
( v1 report: https://github.com/mishoo/UglifyJS/pull/458 )
2012-09-05cleaned up usage of AST_BlockStatementMihai Bazon
The following nodes were instances of AST_BlockStatement: AST_Scope, AST_SwitchBlock, AST_SwitchBranch. Also, AST_Try, AST_Catch, AST_Finally were having a body instanceof AST_BlockStatement. Overloading the meaning of AST_BlockStatement this way turned out to be a mess; we now have an AST_Block class that is the base class for things having a block of statements (might or might not be bracketed). The `this.body` of AST_Scope, AST_Try, AST_Catch, AST_Finally is now an array of statements (as they inherit from AST_Block). Avoiding calling superclass's _walk function in walkers (turns out we walked a node multiple times).
2012-09-04if present, the `else` in an `if` should always be forced statementMihai Bazon
2012-09-03jumps, try and definitions are statements tooMihai Bazon
2012-09-03an AST_If is too a StatementWithBodyMihai Bazon
2012-09-03a LabeledStatement should be in fact a StatementWithBodyMihai Bazon
This fixes output for: if (foo) { moo: if (bar) { break moo; } } else { baz(); } (the labeled statement must be outputted inside brackets)
2012-09-03switch branches must be declared `required` so that the compressor doesn'tMihai Bazon
replace nodes with a single statement. looks stable for now, though mess begins to sink in. need to review the AST hierarchy.
2012-09-02add source mappings for more node types; started CLI utilityMihai Bazon
2012-08-29started support for generating source maps (WIP)Mihai Bazon
plugged in @fitzgen's source-map library
2012-08-28fix output for arrays containing undefined valuesMihai Bazon
[1,,2,] ==> [1,,2] instead of [1,undefined,2]
2012-08-28fix code generator for this case:Mihai Bazon
if (foo) { with (bar) if (baz) x(); } else y(); (the compressor removes the brackets since the consequent consists of a single statement, but the codegen must include the brackets because otherwise the `else` would refer to the inner `if`)
2012-08-27update (c) yearsMihai Bazon
2012-08-27added print_to_string helper methodMihai Bazon
2012-08-23fix current_col and force a newline every 32K (support options.max_line_len)Mihai Bazon
2012-08-22added licenseMihai Bazon
2012-08-22fix output for certain edge casesMihai Bazon
the statements if, for, do, while and with might have an AST_EmptyStatement as body; if that's the case, we need to make sure that the semicolon gets in the output.
2012-08-22declare some properties in the node constructor so that they're copied in cloneMihai Bazon
2012-08-21cleaned up some mess and started the actual compressorMihai Bazon
2012-08-21some reorganizationMihai Bazon
(moved pretty much everything that relates to scope in scope.js, added a module for NodeJS that can be used with require() and exports everything.)
2012-08-21warn about unreferenced symbolsMihai Bazon
2012-08-21more fixes:Mihai Bazon
- added walker for AST_ObjectProperty - handle redefinitions properly (only mangle one symbol, make them all point to a single definition) DynarchLIB seems to run fine after mangling + compressed output.
2012-08-20added mangler and other stuffMihai Bazon
2012-08-19simple visitor API and code to figure out scope and referencesMihai Bazon
2012-08-18some fixes (need testing) in AST_If codegenMihai Bazon
2012-08-17minor whitespace issuesMihai Bazon
2012-08-17big speed improvement (observable when beautify = false)Mihai Bazon
who would have thought that str.charAt(str.length - 1) is not a constant, instant operation? seems to get slower and slower as the string grows. 0.6s vs. 3s
2012-08-17don't output both space and semicolon when beautify=falseMihai Bazon
2012-08-17added some comments about the rules governing parensMihai Bazon
2012-08-17fix one more glitchMihai Bazon
2012-08-17code generator finally seems to work properlyMihai Bazon
2012-08-16lots'o'fixes in the output routines; still a looong way to go.Mihai Bazon
2012-08-16codegen and dropped the useless walkerMihai Bazon
2012-08-15WIPMihai Bazon