custom-pattern.js
function validateSentence(sentence) {
var terms = [
/* // sample
{
'pattern':'考えられる',
'message':'断定を避ける表現です。断定系を使ってください。',
'tokens':[
{
'tags0':'動詞',
'tags1':'自立',
'tags6':'考える'
},
{
'tags0':'動詞',
'tags1':'接尾',
'tags6':'られる'
}
]
},
{
'pattern':'ではないだろうか',
'message':'断定を避ける表現です。断定系を使ってください。',
}
*/
];
var validateRegex = function(sentence,terms){
var regex = new RegExp( terms.pattern );
if ( regex.test(sentence) ) {
return 'error';
}
}
var validateToken = function(sentence,terms){
var result = 0;
for (var i = 0; i < sentence.tokens.length; i++) {
// 検査できる=今のTokenの位置+検査すべきTokenの数が検査すべきTokenの長さよりも小さい
if ( i + terms.tokens.length - 1 < sentence.tokens.length ){
// 判定用変数を初期化
result = 0
for (var j = 0; j < terms.tokens.length; j++){
if (
sentence.tokens[i+j].tags[0] === terms.tokens[j].tags0 &&
sentence.tokens[i+j].tags[1] === terms.tokens[j].tags1 &&
sentence.tokens[i+j].tags[6] === terms.tokens[j].tags6
){
result++;
}
}
if (result === terms.tokens.length){
return 'error';
}
}
}
}
var error = ''
for (var j = 0; j < terms.length; j++) {
if ( !terms[j].hasOwnProperty('tokens') ){
error = validateRegex(sentence,terms[j]);
}
if ( terms[j].hasOwnProperty('tokens') ){
error = validateToken(sentence,terms[j]);
}
if ( error ){
addError( '「' + terms[j].pattern + '」は' + terms[j].message, sentence);
}
}
}