UNPKG

fullwidth

Version:
59 lines (42 loc) 1.42 kB
'use strict'; 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; };