Syntactic transformations of JavaScript code, with taking care of whitespaces and comments.
krasota.js is trying to save the world. It provides the ability to carry out the syntactic transformation JavaScript code. Conversions can be both for the protection coding style, and for more complex refactorings logic.
Note: For using from command-line you should install it globally -- npm install -g krasota.
$ krasota --help
Usage:
  krasota [OPTIONS]
Options:
  -h, --help : Help
  -v, --version : Version
  -i INPUT, --input=INPUT : Input file (default: stdin)
  -o OUTPUT, --output=OUTPUT : Output file (default: stdout)
  -b BEAUTIFIERS, --beautifier=BEAUTIFIERS : Local or global path to beautifier module, can be used many times
Examples:
$ krasota -i tests/split-vars.js -b krasota/lib/beautifiers/split-vars
$ krasota -i tests/join-vars.js -b krasota/lib/beautifiers/trailing-whitespaces -b krasota/lib/beautifiers/join-vars
$ krasota -i my-file.js -o my-beauty-file.js -b ./local/path/to/my/beautifier
See below for available build-in beautifiers.
Note: If you are using krasota programatically you should not install it globally, it's enough to declare depends in package.json.
Because of using COA all command-line interface available through require('krasota').COA.
Example:
require('krasota').COA
    .invoke({
        input: 'tests/join-vars.js',
        beautifiers: [ 'lib/beautifiers/trailing-whitespaces', 'krasota/lib/beautifiers/join-vars' ]
    })
You can use krasota through the require('krasota') in terms of raw OmetaJS-grammas.
Take a look to the tests/tests.js for example of usage.
There are not many proof-of-concept beautifiers, but it's complex enough for using as samples for your own.
Force insert semicolons (you know epic thread). Example:
| before | after | 
|---|---|
| 
clearMenus()
!isActive && $parent.toggleClass('open')
 | 
clearMenus();
!isActive && $parent.toggleClass('open');
 | 
Join multiply consecutive var statements into one var statement with multiply assigns.
Example:
| before | after | 
|---|---|
| var a = 1; var b = 2; var c = 3; | 
var a = 1,
    b = 2,
    c = 3;
 | 
Split var statements with multiply assigns into multiply consecutive var statements.
Example:
| before | after | 
|---|---|
| 
var a = 1,
    b = 2,
    c = 3;
 | var a = 1; var b = 2; var c = 3; | 
Remove trailing whitespaces (it's pretty simple without any examples).
Run make tests for tests. For development version tests run make tests ENV=development.