CombJS
Tool for combing JavaScript code.
Installation
$ npm install combjs --save
What can that module?
This module can format this code (example):
var Stream = Stream es = exports through = from = duplex = map = pause = split = pipeline = immediately = globalsetImmediate || processnextTick; esStream = Stream //re-export Stream from coreesthrough = throughesfrom = fromesduplex = duplexesmap = mapespause = pauseessplit = splitespipeline = esconnect = espipe = pipeline// merge / concat//// combine multiple streams into a single stream.// will emit end only once esconcat = //actually this should be called concat es { var toMerge = slice var stream = stream // allow adding more than 11 streams var endCount = 0 streamwritable = streamreadable = true toMerge stream { this } stream { toMerge } return stream }
into:
var Stream = Stream es = exports through = from = duplex = map = pause = split = pipeline = immediately = globalsetImmediate || processnextTick; esStream = Stream; //re-export Stream from coreesthrough = through; esfrom = from;esduplex = duplex;esmap = map;espause = pause;essplit = split;espipeline = esconnect = espipe = pipeline; // merge / concat//// combine multiple streams into a single stream.// will emit end only onceesconcat = //actually this should be called concates { var toMerge = slice; var stream = ; stream; // allow adding more than 11 streams var endCount = 0; streamwritable = streamreadable = true; toMerge; stream { this; }; stream { toMerge; }; return stream; };
API
Module will provide the object with method "comb" for combing of a JavaScript code:
combjs.comb(source String, rules Object, progressCallback Function);
Example:
// mkdir example && cd example && npm init && npm install combjs --save var combjs = source = 'var a=1,b=2;' rules = emptylinesAfterCloseBraces: true emptylinesAfterMultilineExpressions: true emptylinesAfterOpenBraces: true emptylinesAfterVariableDefinitions: true emptylinesBeforeCloseBraces: true emptylinesBeforeComments: true emptylinesBeforeMultilineExpressions: true emptylinesBeforeVariableDefinitions: true indent: 4 // You can define any count of spaces keywordsBraces: 'inline' // You can define value 'multiline' if needed linebreaksAfterCloseBraces: true linebreaksAfterColon: true linebreaksAfterComma: true linebreaksAfterMultilineComment: true linebreaksAfterOpenBraces: true linebreaksAfterSemicolon: true linebreaksBeforeCloseBraces: true spacesAfterColon: true spacesAfterComma: true spacesAroundBinaryExpressions: '+' '-' '/' '*' '%' '<' '>' '<=' '>=' '==' '!=' '===' '!==' '<<' '>>' '>>>' '&' '|' '^' '&&' '||' '=' '*=' '/=' '%=' '+=' '-=' '<<=' '>>=' '>>>=' '&=' '^=' '|=' spacesBeforeComma: true spacesNearKeywords: true stringQuotes: 'single' // You can define value 'double' if needed ; var combed = combjs; console; // some stuff with formatted code inside variable "combed"...
You can see full example here: https://github.com/yakimchuk/combjs/blob/master/example-formatter.js
Current available configurations
var config = emptylinesAfterCloseBraces: true emptylinesAfterMultilineExpressions: true emptylinesAfterOpenBraces: true emptylinesAfterVariableDefinitions: true emptylinesBeforeCloseBraces: true emptylinesBeforeComments: true emptylinesBeforeMultilineExpressions: true emptylinesBeforeVariableDefinitions: true indent: 4 // You can define any count of spaces keywordsBraces: 'inline' // You can define value 'multiline' if needed linebreaksAfterCloseBraces: true linebreaksAfterColon: true linebreaksAfterComma: true linebreaksAfterMultilineComment: true linebreaksAfterOpenBraces: true linebreaksAfterSemicolon: true linebreaksBeforeCloseBraces: true spacesAfterColon: true spacesAfterComma: true spacesAroundBinaryExpressions: '+' '-' '/' '*' '%' '<' '>' '<=' '>=' '==' '!=' '===' '!==' '<<' '>>' '>>>' '&' '|' '^' '&&' '||' '=' '*=' '/=' '%=' '+=' '-=' '<<=' '>>=' '>>>=' '&=' '^=' '|=' spacesBeforeComma: true spacesNearKeywords: true stringQuotes: 'single' // You can define value 'double' if needed;
Contribution
I accept any of your changes. Modify the code, and send pull requests to me :)