Sha256: da37e9e71bc22b2b31f5e70c485ac2544e9defef5b98c99aabb1646f639c0093

Contents?: true

Size: 649 Bytes

Versions: 159

Compression:

Stored size: 649 Bytes

Contents

'use strict';
const stripAnsi = require('strip-ansi');
const isFullwidthCodePoint = require('is-fullwidth-code-point');

module.exports = str => {
	if (typeof str !== 'string' || str.length === 0) {
		return 0;
	}

	str = stripAnsi(str);

	let width = 0;

	for (let i = 0; i < str.length; i++) {
		const code = str.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;
};

Version data entries

159 entries across 84 versions & 16 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/wide-align/node_modules/string-width/index.js
optimacms-0.1.61 spec/dummy/node_modules/webpack-dev-server/node_modules/string-width/index.js
disco_app-0.18.0 test/dummy/node_modules/wide-align/node_modules/string-width/index.js
disco_app-0.18.0 test/dummy/node_modules/yargs/node_modules/string-width/index.js
disco_app-0.18.0 test/dummy/node_modules/cliui/node_modules/string-width/index.js
disco_app-0.18.2 test/dummy/node_modules/wide-align/node_modules/string-width/index.js
disco_app-0.18.2 test/dummy/node_modules/cliui/node_modules/string-width/index.js
disco_app-0.18.2 test/dummy/node_modules/yargs/node_modules/string-width/index.js
disco_app-0.16.1 test/dummy/node_modules/wide-align/node_modules/string-width/index.js
disco_app-0.15.2 test/dummy/node_modules/wide-align/node_modules/string-width/index.js
disco_app-0.18.4 test/dummy/node_modules/wide-align/node_modules/string-width/index.js
disco_app-0.18.1 test/dummy/node_modules/wide-align/node_modules/string-width/index.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/wide-align/node_modules/string-width/index.js
disco_app-0.14.0 test/dummy/node_modules/wide-align/node_modules/string-width/index.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/wide-align/node_modules/string-width/index.js
epuber-stylus-source-0.54.8 vendor/node_modules/string-width/index.js
tang-0.2.1 spec/tang_app/node_modules/wide-align/node_modules/string-width/index.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/wide-align/node_modules/string-width/index.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/wide-align/node_modules/string-width/index.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/wide-align/node_modules/string-width/index.js