-
Notifications
You must be signed in to change notification settings - Fork 1
/
termsValidator.js
67 lines (65 loc) · 2.37 KB
/
termsValidator.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
function validateSentence(sentence) {
// 使い方はREADMEを参照ください。
// https://github.com/kongou-ae/redpen-validator/blob/master/README.md
/*
console = {
log:print
};
*/
var terms = [
/* サンプル
{
'expected':'ファイアウォール',
'pattern':['ファイアーウォール','ファイヤーウォール','ファイヤウォール','ファイヤーウオール'],
'source':'MyCompany'
},
{
'expected':'こと',
'pattern':['事'],
'tokenCheck':['名詞','非自立','事'],
'source':'MyCompany'
},
{
'expected':'なぜ',
'pattern':['何故'],
'source':'MyCompany'
},
{
'expected':'ちょうど',
'pattern':['丁度'],
'source':'MyCompany'
},
{
'expected':'なんでも',
'pattern':['何でも'],
'source':'MyCompany'
},
{
'expected':'通信事業者',
'pattern':['通信キャリア'],
'source':'MyCompany'
}
*/
];
var morphologicalAnalysis = function(sentence){
for (var k = 0; k < sentence.tokens.length; k++) {
if ( sentence.tokens[k].tags[0] === terms[i]['tokenCheck'][0] &&
sentence.tokens[k].tags[1] === terms[i]['tokenCheck'][1] &&
sentence.tokens[k].tags[6] === terms[i]['tokenCheck'][2] ){
addError('文書規約違反(' + terms[i]['source'] + ')です。「' + sentence.tokens[k].surface + '」を修正してください。(正:' + terms[i]['expected'] + ' 誤:' + terms[i]['pattern'][j] + ')' , sentence);
}
}
}
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 ( 'tokenCheck' in terms[i] ) {
morphologicalAnalysis(sentence);
} else {
if ( sentence.content.match(regex) ) {
addError('文書規約違反(' + terms[i]['source'] + ')です。「' + terms[i]['pattern'][j] + '」を「' + terms[i]['expected'] + '」に修正してください', sentence);
}
}
}
}
}