@@ -4,21 +4,29 @@ import { RuleHelper } from "textlint-rule-helper";
4
4
import { tokenize } from "kuromojin" ;
5
5
6
6
function isMasuTargetWord ( token ) {
7
- return token . pos === "助詞" && token . pos_detail_1 === "接続助詞" && token . basic_form === "て" ;
7
+ return token . pos === "助詞" && token . pos_detail_1 === "接続助詞" && ( token . basic_form === "て" || token . basic_form === "で" ) ;
8
8
}
9
9
10
10
function isMasuWord ( token ) {
11
11
return token . pos === "助動詞" && token . pos_detail_1 === "*" && token . basic_form === "ます" ;
12
12
}
13
13
14
- function isTeruTargetWord ( token ) {
14
+ function isTeruTargetWord ( token ) {
15
15
return token . pos === "動詞" && token . pos_detail_1 === "自立" ;
16
16
}
17
17
18
18
function isTeruWord ( token ) {
19
19
return token . pos === "動詞" && token . pos_detail_1 === "非自立" && ( token . basic_form === "てる" || token . basic_form === "でる" ) ;
20
20
}
21
21
22
+ function isTenaiTargetWord ( token ) {
23
+ return token . pos === "動詞" && token . pos_detail_1 === "非自立" && ( token . basic_form === "て" || token . basic_form === "で" ) ;
24
+ }
25
+
26
+ function isTenaiWord ( token ) {
27
+ return token . pos === "助動詞" && token . conjugated_type === "特殊・ナイ" && token . basic_form === "ない" ;
28
+ }
29
+
22
30
module . exports = function ( context ) {
23
31
const helper = new RuleHelper ( context ) ;
24
32
const { Syntax, report, getSource, RuleError } = context ;
@@ -32,10 +40,16 @@ module.exports = function(context) {
32
40
tokens . forEach ( ( token , index ) => {
33
41
const current = token ;
34
42
const prev = tokens [ index - 1 ] ;
43
+
35
44
if ( ! prev || ! current ) {
36
45
return ;
37
46
}
38
- if ( ( isMasuTargetWord ( prev ) && isMasuWord ( current ) ) || ( isTeruTargetWord ( prev ) && isTeruWord ( current ) ) ) {
47
+
48
+ const isMasuPattern = isMasuTargetWord ( prev ) && isMasuWord ( current ) ;
49
+ const isTeruPattern = isTeruTargetWord ( prev ) && isTeruWord ( current ) ;
50
+ const isTenaiPattern = isTenaiTargetWord ( prev ) && isTenaiWord ( current ) ;
51
+
52
+ if ( isMasuPattern || isTeruPattern || isTenaiPattern ) {
39
53
report (
40
54
node ,
41
55
new RuleError ( "い抜き言葉を使用しています。" , {
0 commit comments