RedPenの表記ゆれチェック拡張
function validateSentence(sentence) {
/*
{
'expected':'hoge', // 正しい書き方
'pattern':['huga'], // 誤りとしたい書き方
'tokenCheck':true // 短い単語で誤検知してしまう場合(例:事(こと)と事件(じけん))に、形態素解析を使って判定するかどうか。
},
*/
var terms = [
{
'expected':'さらに',
'pattern':['更に'],
'tokenCheck':false
},
{
'expected':'ほとんど',
'pattern':['殆ど'],
'tokenCheck':false
},
{
'expected':'ファイアウォール',
'pattern':['ファイアーウォール','ファイヤーウォール','ファイヤウォール','ファイヤーウオール'],
'tokenCheck':false
},
{
'expected':'ください',
'pattern':['下さい'],
'tokenCheck':false
},
{
'expected':'いつ',
'pattern':['何時'],
'tokenCheck':true
},
{
'expected':'こと',
'pattern':['事'],
'tokenCheck':true
}
{
'expected':'どこ',
'pattern':['何処'],
'tokenCheck':true
},
{
'expected':'なぜ',
'pattern':['何故'],
'tokenCheck':true
},
{
'expected':'できる',
'pattern':['出来る'],
'tokenCheck':false
},
{
'expected':'ちょうど',
'pattern':['丁度'],
'tokenCheck':false
},
{
'expected':'なんでも',
'pattern':['何でも'],
'tokenCheck':false
},
];
for ( var i = 0; i < terms.length; i++ ) {
for ( var j = 0; j < terms[i]['pattern'].length; j++ ) {
var regex = new RegExp( terms[i]['pattern'][j]);
if ( sentence.content.match(regex) ) {
if ( terms[i]['tokenCheck'] == true ){
for (var k = 0; k < sentence.tokens.length; k++) {
if ( sentence.tokens[k].surface == terms[i]['pattern'][j] ) {
addError('文書規約違反です。「' + sentence.tokens[k].surface + '」を「' + terms[i]['expected'] + '」に修正してください', sentence);
};
};
} else {
addError('文書規約違反です。「' + terms[i]['pattern'][j] + '」を「' + terms[i]['expected'] + '」に修正してください', sentence);
};
};
};
};
};