UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

33 lines (28 loc) 1.52 kB
var regExp = /[!-~”’、。ー]/; var userWasCanceled = false; export default 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 ' + 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 ' + hankaku + ' \u3092\u4F7F\u3044\u307E\u3059\u3002 ' + hankaku + ' \u306B\u3057\u307E\u3059\u304B\uFF1F')) { alert('次からは、キーボードの【全角/半角】または【英数】キーを押して、半角入力にしておきましょう!'); return hankaku; } else { // キャンセルされたらもう聞かない userWasCanceled = true; } } return char; }).join(''); }); change.update(change.from, change.to, text); }