feeles-ide
Version:
The hackable and serializable IDE to make learning material
36 lines (30 loc) • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = zenkakuToHankaku;
var regExp = /[!-~”’、。ー]/;
var userWasCanceled = false;
function zenkakuToHankaku(cm, change) {
if (userWasCanceled || change.origin !== '+input' && change.origin !== '*compose') return; // 全角の数字・記号が含まれているかどうか
var hasZenkaku = regExp.test(change.text.join());
if (!hasZenkaku) return; // 半角に変換する
var text = change.text.map(function (text) {
return text.split('').map(function (char) {
if (regExp.test(char)) {
var hankaku = char.replace(/[!-~]/, function (s) {
return String.fromCharCode(s.charCodeAt(0) - 0xfee0);
}).replace(/”/, '"').replace(/’/, "'").replace(/、/, ',').replace(/。/, '.').replace(/ー/, '-'); // 置換するか聞く
if (!userWasCanceled && confirm("\u5168\u89D2\u306E ".concat(char, " \u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F\u3002\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u3067\u306F\u3075\u3064\u3046\u534A\u89D2\u306E ").concat(hankaku, " \u3092\u4F7F\u3044\u307E\u3059\u3002 ").concat(hankaku, " \u306B\u3057\u307E\u3059\u304B\uFF1F"))) {
alert('次からは、キーボードの【全角/半角】または【英数】キーを押して、半角入力にしておきましょう!');
return hankaku;
} else {
// キャンセルされたらもう聞かない
userWasCanceled = true;
}
}
return char;
}).join('');
});
change.update(change.from, change.to, text);
}