utils-pad-string
v1.0.0
Published
Pad a string.
Downloads
36
Maintainers
Readme
Pad
Pad a string.
Installation
$ npm install utils-pad-string
Usage
var pad = require( 'utils-pad-string' );
pad( str, len[, opts] )
Pads a string
such that the padded string
has a length
of len
.
var str = pad( 'a', 5 );
// returns 'a '
The function
accepts the following options
:
- lpad:
string
used to left pad. Default:''
. - rpad:
string
used to right pad. Default:' '
. - centerRight:
boolean
indicating whether to centerright
in the event of a tie. Default:false
(i.e., centerleft
).
By default, an input string
is padded with spaces
. To pad with a different character or sequence of characters, provide a pad
string.
var str = pad( 'a', 10, {
'lpad': 'b'
});
// returns 'bbbbbbbbba'
str = pad( 'a', 12, {
'rpad': 'b'
});
// returns 'abbbbbbbbbbb'
To center an input string
, provide both lpad
and rpad
options.
var opts = {
'lpad': 'a',
'rpad': 'c'
};
var str = pad( 'b', 11, opts );
// returns 'aaaaabccccc'
When both lpad
and rpad
are specified and len-str.length
is odd, left and right padding cannot equally split the available padding space. By default, right padding receives the extra character (i.e., the input string
is centered left
).
str = pad( 'b', 10, opts );
// returns 'aaaabccccc'
To center right
, set the centerRight
option.
opts.centerRight = true;
str = pad( 'b', 10, opts );
// returns 'aaaaabcccc'
Notes
In contrast to utils-left-pad-string and utils-right-pad-string, any padding which does not evenly divide available space is trimmed such that the returned
string
length is alwayslen
.var opts = { 'lpad': 'boop', 'rpad': 'woot' }; var str = pad( 'beep', 10, opts ); // returns 'boobeepwoo'
Similarly, if
len < str.length
, the inputstring
is trimmed.// Pad right, trim right: var str = pad( 'beep', 2 ); // returns 'be' // Pad left, trim left: str = pad( 'beep', 2, { 'lpad': 'b' }); // returns 'ep' // Pad both, trim both: str = pad( 'beep', 2, { 'lpad': '@', 'rpad': '!' }); // returns 'ee' // Pad both, trim both starting from left: str = pad( 'abcdef', 3, { 'lpad': '@', 'rpad': '!' }); // returns 'cde' // Pad both, trim both starting from right: str = pad( 'abcdef', 3, { 'lpad': '@', 'rpad': '!', 'centerRight': true }); // returns 'bcd'
Examples
var round = require( 'math-round' );
var pad = require( 'utils-pad-string' );
var str = 'boop';
var out;
var len;
var i;
for ( i = 0; i < 100; i++ ) {
len = round( Math.random()*10 ) + str.length;
out = pad( str, len, {
'pad': 'beep',
'rpad': 'p'
});
console.log( '%s. %d. %d.', out, len, out.length );
}
To run the example code from the top-level application directory,
$ node ./examples/index.js
CLI
Installation
To use the module as a general utility, install the module globally
$ npm install -g utils-pad-string
Usage
Usage: padstr [options] str --len length
Options:
-h, --help Print this message.
-V, --version Print the package version.
--len length String length.
--lpad str String used to left pad. Default: ''.
--rpad str String used to right pad. Default: ' '.
--cright Center right in the event of a tie.
Examples
$ padstr beep --len 10 --lpad b --rpad p
# => bbbbeepppp
Tests
Unit
This repository uses tape for unit tests. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
Browser Support
This repository uses Testling for browser testing. To run the tests in a (headless) local web browser, execute the following command in the top-level application directory:
$ make test-browsers
To view the tests in a local web browser,
$ make view-browser-tests
License
Copyright
Copyright © 2016. Athan Reines.