Comparing version 3.0.2 to 3.0.3
24
index.js
var stringWidth = require('string-width') | ||
var stripAnsi = require('strip-ansi') | ||
var wrap = require('wrap-ansi') | ||
@@ -72,3 +73,3 @@ var align = { | ||
text: r.trim(), | ||
padding: [0, r.match(/\s*$/)[0].length, 0, r.match(/^\s*/)[0].length], | ||
padding: _this._measurePadding(r), | ||
width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined | ||
@@ -84,6 +85,13 @@ } | ||
return { | ||
text: str | ||
text: str, | ||
padding: this._measurePadding(str) | ||
} | ||
} | ||
UI.prototype._measurePadding = function (str) { | ||
// measure padding without ansi escape codes | ||
var noAnsi = stripAnsi(str) | ||
return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length] | ||
} | ||
UI.prototype.toString = function () { | ||
@@ -110,3 +118,3 @@ var _this = this | ||
var _this = this | ||
var paddingLeft | ||
var padding | ||
var rrows = this._rasterize(row) | ||
@@ -138,6 +146,6 @@ var str = '' | ||
// add left/right padding and print string. | ||
paddingLeft = (row[c].padding || [0, 0, 0, 0])[left] | ||
if (paddingLeft) str += new Array(row[c].padding[left] + 1).join(' ') | ||
padding = row[c].padding || [0, 0, 0, 0] | ||
if (padding[left]) str += new Array(padding[left] + 1).join(' ') | ||
str += ts | ||
if (row[c].padding && row[c].padding[right]) str += new Array(row[c].padding[right] + 1).join(' ') | ||
if (padding[right]) str += new Array(padding[right] + 1).join(' ') | ||
@@ -147,3 +155,3 @@ // if prior row is span, try to render the | ||
if (r === 0 && lines.length > 0) { | ||
str = _this._renderInline(str, lines[lines.length - 1], paddingLeft) | ||
str = _this._renderInline(str, lines[lines.length - 1]) | ||
} | ||
@@ -164,3 +172,3 @@ }) | ||
// the target line, do so. | ||
UI.prototype._renderInline = function (source, previousLine, paddingLeft) { | ||
UI.prototype._renderInline = function (source, previousLine) { | ||
var leadingWhitespace = source.match(/^ */)[0].length | ||
@@ -167,0 +175,0 @@ var target = previousLine.text |
{ | ||
"name": "cliui", | ||
"version": "3.0.2", | ||
"version": "3.0.3", | ||
"description": "easily create complex multi-column command-line-interfaces", | ||
@@ -47,2 +47,3 @@ "main": "index.js", | ||
"string-width": "^1.0.1", | ||
"strip-ansi": "^3.0.0", | ||
"wrap-ansi": "^1.0.0" | ||
@@ -56,5 +57,4 @@ }, | ||
"nyc": "^3.2.2", | ||
"standard": "^5.3.1", | ||
"strip-ansi": "^3.0.0" | ||
"standard": "^5.3.1" | ||
} | ||
} |
@@ -214,2 +214,18 @@ /* global describe, it */ | ||
}) | ||
it('preserves leading whitespace as padding', function () { | ||
var ui = cliui() | ||
ui.div(' LEADING WHITESPACE') | ||
ui.div('\u001b[34m with ansi\u001b[39m') | ||
var expected = [ | ||
' LEADING WHITESPACE', | ||
' with ansi' | ||
] | ||
ui.toString().split('\n').map(function (l) { | ||
return stripAnsi(l) | ||
}).should.eql(expected) | ||
}) | ||
}) | ||
@@ -370,3 +386,2 @@ | ||
chalk | ||
var expected = [ | ||
@@ -384,2 +399,26 @@ ' <regex> my awesome [regex]', | ||
it('ignores ansi escape codes when measuring padding', function () { | ||
var ui = cliui({ | ||
width: 25 | ||
}) | ||
// using figlet font 'Shadow' rendering of text 'true' here | ||
ui.div( | ||
chalk.blue(' | \n __| __| | | _ \\ \n | | | | __/ \n \\__| _| \\__,_| \\___| \n ') | ||
) | ||
// relevant part is first line - leading whitespace should be preserved as left padding | ||
var expected = [ | ||
' |', | ||
' __| __| | | _ \\', | ||
' | | | | __/', | ||
' \\__| _| \\__,_| \\___|', | ||
' ' | ||
] | ||
ui.toString().split('\n').map(function (l) { | ||
return stripAnsi(l) | ||
}).should.eql(expected) | ||
}) | ||
it('does not apply DSL if wrap is false', function () { | ||
@@ -386,0 +425,0 @@ var ui = cliui({ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
41391
6
592
3
+ Addedstrip-ansi@^3.0.0