aboutsummaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/index.js
diff options
context:
space:
mode:
authorRebecca Turner <me@re-becca.org>2016-06-24 13:43:51 -0700
committerJeremiah Senkpiel <fishrock123@rocketmail.com>2016-06-27 11:46:15 +0200
commitd538811fc8b920f3f36d5f21a4c23e270367ceb0 (patch)
tree11cee6c00aa843f16a71819039396f80bf6abe22 /deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/index.js
parent1db31a34948eee311abd9881bbf5d906d0cd678b (diff)
downloadandroid-node-v8-d538811fc8b920f3f36d5f21a4c23e270367ceb0.tar.gz
android-node-v8-d538811fc8b920f3f36d5f21a4c23e270367ceb0.tar.bz2
android-node-v8-d538811fc8b920f3f36d5f21a4c23e270367ceb0.zip
deps: upgrade npm to 3.10.2
Contains the following npm releases: - https://github.com/npm/npm/releases/tag/v3.9.6 - https://github.com/npm/npm/releases/tag/v3.10.0 - https://github.com/npm/npm/releases/tag/v3.10.1 - https://github.com/npm/npm/releases/tag/v3.10.2 PR-URL: https://github.com/nodejs/node/pull/7410 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/index.js')
-rw-r--r--deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/index.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/index.js b/deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/index.js
new file mode 100644
index 0000000000..aa2f839b6d
--- /dev/null
+++ b/deps/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/index.js
@@ -0,0 +1,32 @@
+'use strict';
+var stripAnsi = require('strip-ansi');
+var codePointAt = require('code-point-at');
+var isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+// https://github.com/nodejs/io.js/blob/cff7300a578be1b10001f2d967aaedc88aee6402/lib/readline.js#L1345
+module.exports = function (str) {
+ if (typeof str !== 'string' || str.length === 0) {
+ return 0;
+ }
+
+ var width = 0;
+
+ str = stripAnsi(str);
+
+ for (var i = 0; i < str.length; i++) {
+ var code = codePointAt(str, i);
+
+ // surrogates
+ if (code >= 0x10000) {
+ i++;
+ }
+
+ if (isFullwidthCodePoint(code)) {
+ width += 2;
+ } else {
+ width++;
+ }
+ }
+
+ return width;
+};