helpers for rocambole AST line break manipulation
npm install rocambole-linebreakHelpers to manipulate rocamboleLineBreak tokens.
Used mainly by esformatter and its plugins.
- positive integer (1 till 99): "add or keep [n] line breaks".
- -1: keep original line breaks.
- ">2": add linebreaks until it's over 2.
- ">=1": add line breaks until it's equal or greater than 1.
- "<2": remove linebreaks until it's smaller than 2.
- "<=1": remove/add line breaks until it's smaller or equal to 1.
``js`
var br = require('rocambole-linebreak');
setOptions is just a way to store some constants so later on thelimit/limitBefore/limitAfter you can reference the values by Id.
`jsLineBreak
setOptions({
// sets "value" used by tokens (defaults to "\n")
value: '\n',
// values inside "before" are used by limitBefore0
before: {
// setting to will remove all line breaks before the token
parenthesis: 0
},
// values inside "after" are used by limitAfter1
after: {
// setting to will add/keep a single LineBreak after the token`
parenthesis: 1
}
});
Important: calling this method will override all the options.
limits the amount of LineBreak before a given token.
`jsnode.startToken
// remove all line breaks before node.startToken
limitBefore(node.startToken, 0);
// add/keep 2 line breaks before setOptions
limitBefore(node.startToken, 2);
// add/keep more than 1 line break
limitBefore(node.startToken, '>1');
// keep 2 line breaks or more
limitBefore(node.startToken, '>=2');
// keep less than 3 line breaks
limitBefore(node.startToken, '<3');
// will use value stored on for before.parenthesis`
limitBefore(node.startToken, 'parenthesis');
// values smaller than zero are ignored (this won't change anything)
limitBefore(node.startToken, -1);
limits the amount of LineBreak after a given token.
`jsnode.startToken
// remove all line breaks after node.startToken
limitAfter(node.startToken, 0);
// add/keep 1 line break after setOptions
limitAfter(node.startToken, 1);
// add/keep more than 1 line break
limitAfter(node.startToken, '>1');
// keep 2 line breaks or more
limitAfter(node.startToken, '>=2');
// keep less than 3 line breaks
limitAfter(node.startToken, '<3');
// will use value stored on for after.parenthesis`
limitAfter(node.startToken, 'parenthesis');
// values smaller than zero are ignored (this won't change anything)
limitAfter(node.startToken, -1);
limits the amount of LineBreak around a given token.
`jsnode.startToken
// add/keep 1 line break before and after
limit(node.startToken, 1);
// it's just an alias to
limitBefore(node.startToken, 1);
limitAfter(node.startToken, 1);
`
limits the amount of line breaks at the end of the AST.
`jstypeOrValue
// at least one line break at the end of the file
limitBeforeEndOfFile(ast, 1);
// if you don't pass the it will use "EndOfFile" as the type`
limitBeforeEndOfFile(ast);
reads value stored during setOptions for a given type, or returns -1 if
not found.
`js`
assert( expectedBefore('parenthesis') === 0 );
reads value stored during setOptions for a given type, or returns -1 if
not found.
`js`
assert( expectedAfter('parenthesis') === 1 );
This module uses debug internally. To
make it easier to identify what is wrong we sometimes run the esformatter tests
with a DEBUG flag, like:
`sh``
DEBUG=rocambole:br:* npm test
Released under the MIT License