123456789101112131415161718192021222324252627282930 |
- 'use strict';
- var eaw = require('eastasianwidth');
- function stringWidth (ambiguousCharWidth) {
- return function widthOf (str) {
- var i, code, width = 0;
- for(i = 0; i < str.length; i+=1) {
- code = eaw.eastAsianWidth(str.charAt(i));
- switch(code) {
- case 'F':
- case 'W':
- width += 2;
- break;
- case 'H':
- case 'Na':
- case 'N':
- width += 1;
- break;
- case 'A':
- width += ambiguousCharWidth;
- break;
- }
- }
- return width;
- };
- }
- module.exports = stringWidth(2);
- module.exports.narrow = stringWidth(1);
|