Skip to content

Commit

Permalink
Merge c86e6f5 into 8640dc3
Browse files Browse the repository at this point in the history
  • Loading branch information
stroncium committed Feb 27, 2019
2 parents 8640dc3 + c86e6f5 commit 7928ecf
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
8 changes: 4 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ const wrapWord = (rows, word, columns) => {
//
// 'soft' allows long words to expand past the column length
const exec = (string, columns, options = {}) => {
if (string.trim() === '') {
return options.trim === false ? string : string.trim();
if (options.trim !== false && string.trim() === '') {
return '';
}

let pre = '';
Expand All @@ -83,8 +83,8 @@ const exec = (string, columns, options = {}) => {
rows[rows.length - 1] = options.trim === false ? rows[rows.length - 1] : rows[rows.length - 1].trim();
let rowLength = stringWidth(rows[rows.length - 1]);

if (rowLength || word === '') {
if (rowLength === columns && options.wordWrap === false) {
if (index !== 0) {
if (rowLength === columns && (options.wordWrap === false || options.trim === false)) {
// If we start with a new word but the current row length equals the length of the columns, add a new row
rows.push('');
rowLength = 0;
Expand Down
22 changes: 22 additions & 0 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,3 +113,25 @@ test('supports unicode surrogate pairs', t => {
t.is(m('a\uD83C\uDE00bc', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc');
t.is(m('a\uD83C\uDE00bc\uD83C\uDE00d\uD83C\uDE00', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc\n\uD83C\uDE00\nd\n\uD83C\uDE00');
});

test('#23, whitespaces is properly wrapped', t => {
t.is(m(' ', 2, {trim: false}), ' \n ');
t.is(m(' ', 2, {trim: false, hard: true}), ' \n ');
});

test('#25, whitespace at the end of line is treated properly with no trimming', t => {
t.is(m('foo bar', 3), 'foo\nbar');
t.is(m('foo bar', 3, {hard: true}), 'foo\nbar');
t.is(m('foo bar', 3, {trim: false}), 'foo\n \nbar');
t.is(m('foo bar', 3, {trim: false, hard: true}), 'foo\n \nbar');
});

test('#26, does not multiplicate leading spaces with no trimming', t => {
t.is(m(' a ', 10, {trim: false}), ' a ');
t.is(m(' a ', 10, {trim: false}), ' a ');
});

test('#27, does not remove leading space when line starts with ansi escape and no trimming', t => {
t.is(m(chalk.bgGreen(` ${chalk.black('OK')} `), 100, {trim: false}), chalk.bgGreen(` ${chalk.black('OK')} `));
t.is(m(chalk.bgGreen(` ${chalk.black('OK')} `), 100, {trim: false}), chalk.bgGreen(` ${chalk.black('OK')} `));
});

0 comments on commit 7928ecf

Please sign in to comment.