fullwidth
Version:
Fullwidth text converter.
59 lines (42 loc) • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _dakuten = require('./dakuten');
var _dakuten2 = _interopRequireDefault(_dakuten);
var _handakuten = require('./handakuten');
var _handakuten2 = _interopRequireDefault(_handakuten);
var _fullwidth = require('./fullwidth');
var _fullwidth2 = _interopRequireDefault(_fullwidth);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var dakuten = '゙';
var handakuten = '゚';
function charMapToCodesMap(charMap) {
return Object.keys(charMap).reduce(function (map, key) {
map[key.charCodeAt()] = charMap[key].charCodeAt();
return map;
}, {});
}
var dakutenCodesMap = charMapToCodesMap(_dakuten2.default);
var handakutenCodesMap = charMapToCodesMap(_handakuten2.default);
var codesMap = charMapToCodesMap(_fullwidth2.default);
exports.default = function (str) {
var res = '';
for (var i = 0; i < str.length; i++) {
var code = str[i].charCodeAt();
var fullwidthCode = void 0;
var mark = str[i + 1];
if (mark === dakuten) {
fullwidthCode = dakutenCodesMap[code];
} else if (mark === handakuten) {
fullwidthCode = handakutenCodesMap[code];
}
if (fullwidthCode) {
i++;
} else {
fullwidthCode = codesMap[code];
}
res += fullwidthCode ? String.fromCharCode(fullwidthCode) : str[i];
}
return res;
};