aboutsummaryrefslogtreecommitdiff
path: root/sandbox/testAppNevena/Front/node_modules/gauge/lib/wide-truncate.js
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/gauge/lib/wide-truncate.js')
-rw-r--r--sandbox/testAppNevena/Front/node_modules/gauge/lib/wide-truncate.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/gauge/lib/wide-truncate.js b/sandbox/testAppNevena/Front/node_modules/gauge/lib/wide-truncate.js
new file mode 100644
index 00000000..5284a699
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/gauge/lib/wide-truncate.js
@@ -0,0 +1,31 @@
+'use strict'
+var stringWidth = require('string-width')
+var stripAnsi = require('strip-ansi')
+
+module.exports = wideTruncate
+
+function wideTruncate (str, target) {
+ if (stringWidth(str) === 0) {
+ return str
+ }
+ if (target <= 0) {
+ return ''
+ }
+ if (stringWidth(str) <= target) {
+ return str
+ }
+
+ // We compute the number of bytes of ansi sequences here and add
+ // that to our initial truncation to ensure that we don't slice one
+ // that we want to keep in half.
+ var noAnsi = stripAnsi(str)
+ var ansiSize = str.length + noAnsi.length
+ var truncated = str.slice(0, target + ansiSize)
+
+ // we have to shrink the result to account for our ansi sequence buffer
+ // (if an ansi sequence was truncated) and double width characters.
+ while (stringWidth(truncated) > target) {
+ truncated = truncated.slice(0, -1)
+ }
+ return truncated
+}