Files
react-native-devtools-frontend/node_modules/cliui/node_modules/string-width/index.js
T
Tim van der Lippe 99190c9d94 Update Mocha to 7.1.1
None of the breaking changes listed in
https://github.com/mochajs/mocha/releases/tag/v7.0.0
appear to be relevant for us.

R=jacktfranklin@chromium.org
DISABLE_THIRD_PARTY_CHECK=Update Mocha

Bug: 1068145
Change-Id: I4aec1e775595a0cfcfaa307a8aad7fc9abad22ca
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2137392
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
2020-04-07 16:05:24 +00:00

40 lines
751 B
JavaScript

'use strict';
const stripAnsi = require('strip-ansi');
const isFullwidthCodePoint = require('is-fullwidth-code-point');
const emojiRegex = require('emoji-regex')();
module.exports = input => {
input = input.replace(emojiRegex, ' ');
if (typeof input !== 'string' || input.length === 0) {
return 0;
}
input = stripAnsi(input);
let width = 0;
for (let i = 0; i < input.length; i++) {
const code = input.codePointAt(i);
// Ignore control characters
if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {
continue;
}
// Ignore combining characters
if (code >= 0x300 && code <= 0x36F) {
continue;
}
// Surrogates
if (code > 0xFFFF) {
i++;
}
width += isFullwidthCodePoint(code) ? 2 : 1;
}
return width;
};