kongou-ae
4/28/2016 - 6:11 PM

RedPenの表記ゆれチェック拡張

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);
                };
            };
        };
    };
};