1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| '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);
|
|