@doujinreviewers/textlint-rule-for-creation 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +79 -0
- package/lib/dict/arrow.js +8 -0
- package/lib/dict/arrow.js.map +1 -0
- package/lib/dict/dict.js +54 -0
- package/lib/dict/dict.js.map +1 -0
- package/lib/dict/dict2.js +30 -0
- package/lib/dict/dict2.js.map +1 -0
- package/lib/dict/dictAA.js +30 -0
- package/lib/dict/dictAA.js.map +1 -0
- package/lib/dict/dict_miss.js +30 -0
- package/lib/dict/dict_miss.js.map +1 -0
- package/lib/dict/gozidatuzi.js +56 -0
- package/lib/dict/gozidatuzi.js.map +1 -0
- package/lib/dict/miss.js +30 -0
- package/lib/dict/miss.js.map +1 -0
- package/lib/dict/retasu.js +14 -0
- package/lib/dict/retasu.js.map +1 -0
- package/lib/dict/saire.js +37 -0
- package/lib/dict/saire.js.map +1 -0
- package/lib/dict/sanuki.js +15 -0
- package/lib/dict/sanuki.js.map +1 -0
- package/lib/dict/zyosi.js +170 -0
- package/lib/dict/zyosi.js.map +1 -0
- package/lib/enhanced-engine.js +79 -0
- package/lib/enhanced-engine.js.map +1 -0
- package/lib/modified-engine.js +27 -0
- package/lib/modified-engine.js.map +1 -0
- package/lib/textlint-rule-for-creation.js +95 -0
- package/lib/textlint-rule-for-creation.js.map +1 -0
- package/package.json +39 -0
- package/src/dict/arrow.js +93 -0
- package/src/dict/gozidatuzi.js +68 -0
- package/src/dict/retasu.js +16 -0
- package/src/dict/saire.js +46 -0
- package/src/dict/sanuki.js +17 -0
- package/src/dict/zyosi.js +204 -0
- package/src/enhanced-engine.js +60 -0
- package/src/textlint-rule-for-creation.js +57 -0
@@ -0,0 +1,170 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
module.exports = [// {
|
4
|
+
// "message": "助詞の連続",
|
5
|
+
// "tokens": [
|
6
|
+
// {
|
7
|
+
// "pos": "助詞",
|
8
|
+
// },{
|
9
|
+
// "pos": "助詞",
|
10
|
+
// "pos_detail_2": ["一般", "*"]//引用や連語ならスルー
|
11
|
+
// }
|
12
|
+
// ]
|
13
|
+
// },
|
14
|
+
{
|
15
|
+
"message": "助詞の連続",
|
16
|
+
"expected": '$1',
|
17
|
+
"tokens": [{
|
18
|
+
"pos": "助詞",
|
19
|
+
"pos_detail_1": "係助詞",
|
20
|
+
"_capture": "$1"
|
21
|
+
}, {
|
22
|
+
"pos": "助詞",
|
23
|
+
"pos_detail_1": "係助詞",
|
24
|
+
"_capture": "$2"
|
25
|
+
}]
|
26
|
+
}, {
|
27
|
+
"message": "助詞の連続",
|
28
|
+
"expected": '$1',
|
29
|
+
"tokens": [{
|
30
|
+
"surface_form": ["が", "を"],
|
31
|
+
"pos": "助詞",
|
32
|
+
"pos_detail_1": "格助詞",
|
33
|
+
"_capture": "$1"
|
34
|
+
}, {
|
35
|
+
"pos": "助詞",
|
36
|
+
"pos_detail_1": "係助詞",
|
37
|
+
"_capture": "$2"
|
38
|
+
}]
|
39
|
+
}, {
|
40
|
+
"message": "助詞の連続",
|
41
|
+
"expected": '$1',
|
42
|
+
"tokens": [{
|
43
|
+
"surface_form": ["が", "を", "で", "に", "へ", "より"],
|
44
|
+
"pos": "助詞",
|
45
|
+
"pos_detail_1": "格助詞",
|
46
|
+
"_capture": "$1"
|
47
|
+
}, {
|
48
|
+
"pos": "助詞",
|
49
|
+
"pos_detail_1": "助詞",
|
50
|
+
"_capture": "$2"
|
51
|
+
}]
|
52
|
+
}, {
|
53
|
+
"message": "助詞の連続",
|
54
|
+
"expected": '$1',
|
55
|
+
"tokens": [{
|
56
|
+
"pos": "助詞",
|
57
|
+
"pos_detail_1": "格助詞",
|
58
|
+
"_capture": "$1"
|
59
|
+
}, {
|
60
|
+
"pos": "助詞",
|
61
|
+
"pos_detail_1": "格助詞",
|
62
|
+
"_capture": "$2"
|
63
|
+
}]
|
64
|
+
}, {
|
65
|
+
"message": "助詞の連続",
|
66
|
+
"expected": '$1',
|
67
|
+
"tokens": [{
|
68
|
+
"surface_form": "を",
|
69
|
+
"pos": "助詞",
|
70
|
+
"pos_detail_1": "格助詞",
|
71
|
+
"_capture": "$1"
|
72
|
+
}, {
|
73
|
+
"pos": "助詞",
|
74
|
+
"pos_detail_1": "副助詞",
|
75
|
+
"_capture": "$2"
|
76
|
+
}]
|
77
|
+
}, {
|
78
|
+
"message": "助詞の連続",
|
79
|
+
"expected": '$1',
|
80
|
+
"tokens": [{
|
81
|
+
"pos": "助詞",
|
82
|
+
"pos_detail_1": '連体化',
|
83
|
+
"_capture": "$1"
|
84
|
+
}, {
|
85
|
+
"pos": "助詞",
|
86
|
+
"pos_detail_1": '連体化',
|
87
|
+
"_capture": "$2"
|
88
|
+
}]
|
89
|
+
}, {
|
90
|
+
"message": "助詞の連続",
|
91
|
+
"expected": '$1',
|
92
|
+
"tokens": [{
|
93
|
+
"pos": "助詞",
|
94
|
+
"pos_detail_1": '格助詞',
|
95
|
+
"_capture": "$1"
|
96
|
+
}, {
|
97
|
+
"pos": "助詞",
|
98
|
+
"pos_detail_1": '連体化',
|
99
|
+
"_capture": "$2"
|
100
|
+
}]
|
101
|
+
}, {
|
102
|
+
"message": "助詞の連続",
|
103
|
+
"expected": '$1',
|
104
|
+
"tokens": [{
|
105
|
+
"pos": "助詞",
|
106
|
+
"pos_detail_1": '並立助詞',
|
107
|
+
"_capture": "$1"
|
108
|
+
}, {
|
109
|
+
"pos": "助詞",
|
110
|
+
"_capture": "$2"
|
111
|
+
}]
|
112
|
+
}, {
|
113
|
+
"message": "助詞の連続",
|
114
|
+
"expected": '$1',
|
115
|
+
"tokens": [{
|
116
|
+
"pos": "助詞",
|
117
|
+
"pos_detail_1": '副詞化',
|
118
|
+
"_capture": "$1"
|
119
|
+
}, {
|
120
|
+
"pos": "助詞",
|
121
|
+
"pos_detail_1": "格助詞",
|
122
|
+
"_capture": "$2"
|
123
|
+
}]
|
124
|
+
}, {
|
125
|
+
"message": '助詞の連続',
|
126
|
+
"expected": '$1',
|
127
|
+
"tokens": [{
|
128
|
+
"pos": "助詞",
|
129
|
+
"pos_detail_1": "接続助詞",
|
130
|
+
"_capture": "$1"
|
131
|
+
}, {
|
132
|
+
"pos": "副詞化",
|
133
|
+
"_capture": "$2"
|
134
|
+
}]
|
135
|
+
}, // {
|
136
|
+
// "message": '助動詞の連続',
|
137
|
+
// "tokens": [
|
138
|
+
// {
|
139
|
+
// "pos": "助動詞",
|
140
|
+
// },{
|
141
|
+
// "pos": "助動詞",
|
142
|
+
// }
|
143
|
+
// ]
|
144
|
+
// },
|
145
|
+
{
|
146
|
+
"message": '接続助詞と接続詞の連続',
|
147
|
+
"expected": '$1',
|
148
|
+
"tokens": [{
|
149
|
+
"pos": "助詞",
|
150
|
+
"pos_detail_1": "接続助詞",
|
151
|
+
"_capture": "$1"
|
152
|
+
}, {
|
153
|
+
"surface_form": ["で", "が", "の", "を", "へ", "や"],
|
154
|
+
"pos": "接続詞",
|
155
|
+
"_capture": "$2"
|
156
|
+
}]
|
157
|
+
}, {
|
158
|
+
"message": '接続助詞と助動詞の連続',
|
159
|
+
"expected": '$1',
|
160
|
+
"tokens": [{
|
161
|
+
"pos": "助詞",
|
162
|
+
"pos_detail_1": "接続助詞",
|
163
|
+
"_capture": "$1"
|
164
|
+
}, {
|
165
|
+
"surface_form": ["で", "が", "の", "を", "へ", "や"],
|
166
|
+
"pos": "助動詞",
|
167
|
+
"_capture": "$2"
|
168
|
+
}]
|
169
|
+
}];
|
170
|
+
//# sourceMappingURL=zyosi.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/dict/zyosi.js"],"names":["module","exports"],"mappings":"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","sourcesContent":["module.exports = [\n // {\n // \"message\": \"助詞の連続\",\n // \"tokens\": [\n // {\n // \"pos\": \"助詞\",\n // },{\n // \"pos\": \"助詞\",\n // \"pos_detail_2\": [\"一般\", \"*\"]//引用や連語ならスルー\n // }\n // ]\n // },\n {\n \"message\": \"助詞の連続\",\n \"expected\": '$1',\n \"tokens\": [\n {\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"係助詞\",\n \"_capture\": \"$1\"\n },{\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"係助詞\",\n \"_capture\": \"$2\"\n }\n ]\n },\n {\n \"message\": \"助詞の連続\",\n \"expected\": '$1',\n \"tokens\": [\n {\n \"surface_form\": [\"が\", \"を\"],\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"格助詞\",\n \"_capture\": \"$1\"\n },{\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"係助詞\",\n \"_capture\": \"$2\"\n }\n ]\n },\n {\n \"message\": \"助詞の連続\",\n \"expected\": '$1',\n \"tokens\": [\n {\n \"surface_form\": [\"が\", \"を\", \"で\", \"に\", \"へ\", \"より\"],\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"格助詞\",\n \"_capture\": \"$1\"\n },{\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"助詞\",\n \"_capture\": \"$2\"\n }\n ]\n },\n {\n \"message\": \"助詞の連続\",\n \"expected\": '$1',\n \"tokens\": [\n {\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"格助詞\",\n \"_capture\": \"$1\"\n },{\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"格助詞\",\n \"_capture\": \"$2\"\n }\n ]\n },\n {\n \"message\": \"助詞の連続\",\n \"expected\": '$1',\n \"tokens\": [\n {\n \"surface_form\": \"を\",\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"格助詞\",\n \"_capture\": \"$1\"\n },{\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"副助詞\",\n \"_capture\": \"$2\"\n }\n ]\n },\n {\n \"message\": \"助詞の連続\",\n \"expected\": '$1',\n \"tokens\": [\n {\n \"pos\": \"助詞\",\n \"pos_detail_1\": '連体化',\n \"_capture\": \"$1\"\n },{\n \"pos\": \"助詞\",\n \"pos_detail_1\": '連体化',\n \"_capture\": \"$2\"\n }\n ]\n },\n {\n \"message\": \"助詞の連続\",\n \"expected\": '$1',\n \"tokens\": [\n {\n \"pos\": \"助詞\",\n \"pos_detail_1\": '格助詞',\n \"_capture\": \"$1\"\n },{\n \"pos\": \"助詞\",\n \"pos_detail_1\": '連体化',\n \"_capture\": \"$2\"\n }\n ]\n },\n {\n \"message\": \"助詞の連続\",\n \"expected\": '$1',\n \"tokens\": [\n {\n \"pos\": \"助詞\",\n \"pos_detail_1\": '並立助詞',\n \"_capture\": \"$1\"\n },{\n \"pos\": \"助詞\",\n \"_capture\": \"$2\"\n }\n ]\n },\n {\n \"message\": \"助詞の連続\",\n \"expected\": '$1',\n \"tokens\": [\n {\n \"pos\": \"助詞\",\n \"pos_detail_1\": '副詞化',\n \"_capture\": \"$1\"\n },{\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"格助詞\",\n \"_capture\": \"$2\"\n }\n ]\n },\n {\n \"message\": '助詞の連続',\n \"expected\": '$1',\n \"tokens\": [\n {\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"接続助詞\",\n \"_capture\": \"$1\"\n },{\n \"pos\": \"副詞化\",\n \"_capture\": \"$2\"\n }\n ]\n },\n // {\n // \"message\": '助動詞の連続',\n // \"tokens\": [\n // {\n // \"pos\": \"助動詞\",\n // },{\n // \"pos\": \"助動詞\",\n // }\n // ]\n // },\n {\n \"message\": '接続助詞と接続詞の連続',\n \"expected\": '$1',\n \"tokens\": [\n {\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"接続助詞\",\n \"_capture\": \"$1\"\n },{\n \"surface_form\": [\"で\",\"が\",\"の\",\"を\",\"へ\",\"や\"],\n \"pos\": \"接続詞\",\n \"_capture\": \"$2\"\n }\n ]\n },\n {\n \"message\": '接続助詞と助動詞の連続',\n \"expected\": '$1',\n \"tokens\": [\n {\n \"pos\": \"助詞\",\n \"pos_detail_1\": \"接続助詞\",\n \"_capture\": \"$1\"\n },{\n \"surface_form\": [\"で\",\"が\",\"の\",\"を\",\"へ\",\"や\"],\n \"pos\": \"助動詞\",\n \"_capture\": \"$2\"\n }\n ]\n },\n];"],"file":"zyosi.js"}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
9
|
+
|
10
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
11
|
+
|
12
|
+
var arrow = require('./dict/arrow');
|
13
|
+
|
14
|
+
class EnhancedEngine {
|
15
|
+
constructor() {}
|
16
|
+
|
17
|
+
checkRetasu(tokenizer, text) {
|
18
|
+
return _asyncToGenerator(function* () {
|
19
|
+
if (/れ$/.test(text)) {
|
20
|
+
text += "る";
|
21
|
+
}
|
22
|
+
|
23
|
+
var tokens = yield tokenizer(text);
|
24
|
+
var meirei = yield tokenizer(tokens[0].surface_form + "。");
|
25
|
+
|
26
|
+
if (meirei[0].conjugated_form == "命令e" || /五段/.test(meirei[0].conjugated_type)) {
|
27
|
+
// 「れる」を抜いても命令形で意味が通じるか、最初の文字が五段活用動詞になると多分れ足す言葉
|
28
|
+
if (!arrow.jidousi_tadousi.includes(meirei[0].surface_form)) {
|
29
|
+
// 許可リストにもない
|
30
|
+
return true;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
return false;
|
35
|
+
})();
|
36
|
+
}
|
37
|
+
|
38
|
+
checkZyosi(tokenizer, result, fulltext) {
|
39
|
+
return _asyncToGenerator(function* () {
|
40
|
+
var piece = fulltext.slice(result.range[0], result.range[1]);
|
41
|
+
|
42
|
+
if (arrow.zyosi.includes(piece)) {
|
43
|
+
return false;
|
44
|
+
}
|
45
|
+
|
46
|
+
var fulltokens = yield tokenizer(fulltext);
|
47
|
+
var tokens = [];
|
48
|
+
fulltokens.reduce((prev, current) => {
|
49
|
+
if (prev.pos == "助詞" && current.pos == "助詞") {
|
50
|
+
if (prev.surface_form + current.surface_form == piece) {
|
51
|
+
tokens = [prev, current];
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
return current;
|
56
|
+
});
|
57
|
+
|
58
|
+
if (new RegExp(tokens[0].surface_form.repeat(3) + "|" + tokens[0].surface_form.repeat(2) + "[~〜ー!!]").test(fulltext)) {
|
59
|
+
return false;
|
60
|
+
}
|
61
|
+
|
62
|
+
if (tokens[0].surface_form == tokens[1].surface_form) {
|
63
|
+
return true;
|
64
|
+
}
|
65
|
+
|
66
|
+
if (/終助詞/.test(tokens[0].pos_detail_1) || /終助詞/.test(tokens[1].pos_detail_1) || /接続助詞/.test(tokens[0].pos_detail_1) || /のみ|から|だけ|とか|など|まで|ばかり|ばっかり|/.test(tokens[0].surface_form) && /格助詞/.test(tokens[1].pos_detail_1) || /連体化/.test(tokens[1].pos_detail_1) || /格助詞/.test(tokens[0].pos_detail_1) && /係助詞/.test(tokens[1].pos_detail_1) && !/[をが]/.test(tokens[0].surface_form) || /特殊/.test(tokens[0].pos_detail_1) || /特殊/.test(tokens[1].pos_detail_1) || /引用/.test(tokens[0].pos_detail_2) && /接続助詞/.test(tokens[1].pos_detail_1)) {
|
67
|
+
return false;
|
68
|
+
}
|
69
|
+
|
70
|
+
return true;
|
71
|
+
})();
|
72
|
+
}
|
73
|
+
|
74
|
+
}
|
75
|
+
|
76
|
+
var _default = new EnhancedEngine();
|
77
|
+
|
78
|
+
exports.default = _default;
|
79
|
+
//# sourceMappingURL=enhanced-engine.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/enhanced-engine.js"],"names":["arrow","require","EnhancedEngine","constructor","checkRetasu","tokenizer","text","test","tokens","meirei","surface_form","conjugated_form","conjugated_type","jidousi_tadousi","includes","checkZyosi","result","fulltext","piece","slice","range","zyosi","fulltokens","reduce","prev","current","pos","RegExp","repeat","pos_detail_1","pos_detail_2"],"mappings":"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","sourcesContent":["const arrow = require('./dict/arrow');\n\nclass EnhancedEngine {\n\n constructor() {\n }\n\n async checkRetasu(tokenizer, text){\n if(/れ$/.test(text)){\n text += \"る\";\n }\n let tokens = await tokenizer(text);\n let meirei = await tokenizer(tokens[0].surface_form + \"。\");\n if(meirei[0].conjugated_form == \"命令e\" || /五段/.test(meirei[0].conjugated_type)){\n // 「れる」を抜いても命令形で意味が通じるか、最初の文字が五段活用動詞になると多分れ足す言葉\n if(!arrow.jidousi_tadousi.includes(meirei[0].surface_form)){\n // 許可リストにもない\n return true;\n }\n }\n return false;\n }\n\n async checkZyosi(tokenizer, result, fulltext){\n let piece = fulltext.slice(result.range[0], result.range[1]);\n if(arrow.zyosi.includes(piece)){\n return false;\n }\n let fulltokens = await tokenizer(fulltext);\n let tokens = [];\n fulltokens.reduce((prev, current) => {\n if (prev.pos == \"助詞\" && current.pos == \"助詞\") {\n if(prev.surface_form + current.surface_form == piece){\n tokens = [prev, current];\n }\n }\n return current;\n });\n if(new RegExp(tokens[0].surface_form.repeat(3) + \"|\" + tokens[0].surface_form.repeat(2) + \"[~〜ー!!]\").test(fulltext)){\n return false;\n }\n if(tokens[0].surface_form == tokens[1].surface_form){\n return true;\n }\n if((/終助詞/.test(tokens[0].pos_detail_1) || /終助詞/.test(tokens[1].pos_detail_1))\n || /接続助詞/.test(tokens[0].pos_detail_1)\n || (/のみ|から|だけ|とか|など|まで|ばかり|ばっかり|/.test(tokens[0].surface_form) && /格助詞/.test(tokens[1].pos_detail_1))\n || /連体化/.test(tokens[1].pos_detail_1)\n || ((/格助詞/.test(tokens[0].pos_detail_1) && /係助詞/.test(tokens[1].pos_detail_1)) && !/[をが]/.test(tokens[0].surface_form))\n || (/特殊/.test(tokens[0].pos_detail_1) || /特殊/.test(tokens[1].pos_detail_1))\n || (/引用/.test(tokens[0].pos_detail_2) && /接続助詞/.test(tokens[1].pos_detail_1))\n ){\n return false;\n }\n return true;\n }\n\n}\n\nexport default new EnhancedEngine();"],"file":"enhanced-engine.js"}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var Romanizer = require('js-hira-kata-romanize');
|
9
|
+
|
10
|
+
class ModifiedEngine {
|
11
|
+
constructor() {
|
12
|
+
this.romanizer = new Romanizer({
|
13
|
+
chouon: Romanizer.CHOUON_CIRCUMFLEX,
|
14
|
+
upper: Romanizer.UPPER_NONE
|
15
|
+
});
|
16
|
+
}
|
17
|
+
|
18
|
+
romanize(hiraganaOrKatakana) {
|
19
|
+
return this.romanizer.romanize(hiraganaOrKatakana);
|
20
|
+
}
|
21
|
+
|
22
|
+
}
|
23
|
+
|
24
|
+
var _default = new ModifiedEngine();
|
25
|
+
|
26
|
+
exports.default = _default;
|
27
|
+
//# sourceMappingURL=modified-engine.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/modified-engine.js"],"names":["Romanizer","require","ModifiedEngine","constructor","romanizer","chouon","CHOUON_CIRCUMFLEX","upper","UPPER_NONE","romanize","hiraganaOrKatakana"],"mappings":";;;;;;;AAAA,IAAMA,SAAS,GAAGC,OAAO,CAAC,uBAAD,CAAzB;;AAEA,MAAMC,cAAN,CAAqB;AAEnBC,EAAAA,WAAW,GAAG;AACZ,SAAKC,SAAL,GAAiB,IAAIJ,SAAJ,CAAc;AAC7BK,MAAAA,MAAM,EAAEL,SAAS,CAACM,iBADW;AAE7BC,MAAAA,KAAK,EAAEP,SAAS,CAACQ;AAFY,KAAd,CAAjB;AAID;;AAEDC,EAAAA,QAAQ,CAACC,kBAAD,EAAoB;AAC1B,WAAO,KAAKN,SAAL,CAAeK,QAAf,CAAwBC,kBAAxB,CAAP;AACD;;AAXkB;;eAcN,IAAIR,cAAJ,E","sourcesContent":["const Romanizer = require('js-hira-kata-romanize');\n\nclass ModifiedEngine {\n\n constructor() {\n this.romanizer = new Romanizer({\n chouon: Romanizer.CHOUON_CIRCUMFLEX,\n upper: Romanizer.UPPER_NONE\n });\n }\n\n romanize(hiraganaOrKatakana){\n return this.romanizer.romanize(hiraganaOrKatakana);\n }\n}\n\nexport default new ModifiedEngine();"],"file":"modified-engine.js"}
|
@@ -0,0 +1,95 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _morphemeMatchTextlint = require("morpheme-match-textlint");
|
9
|
+
|
10
|
+
var _kuromojin = require("kuromojin");
|
11
|
+
|
12
|
+
var _enhancedEngine = _interopRequireDefault(require("./enhanced-engine"));
|
13
|
+
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
|
+
|
16
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
17
|
+
|
18
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
19
|
+
|
20
|
+
var loadDictionaries = () => {
|
21
|
+
// unavoidable
|
22
|
+
var dict1 = require('./dict/zyosi');
|
23
|
+
|
24
|
+
var dict2 = require('./dict/gozidatuzi');
|
25
|
+
|
26
|
+
var dict3 = require('./dict/retasu');
|
27
|
+
|
28
|
+
var dict4 = require('./dict/sanuki');
|
29
|
+
|
30
|
+
var dict5 = require('./dict/saire');
|
31
|
+
|
32
|
+
return dict1.concat(dict2, dict3, dict4, dict5);
|
33
|
+
};
|
34
|
+
|
35
|
+
var reporter = context => {
|
36
|
+
var {
|
37
|
+
Syntax,
|
38
|
+
RuleError,
|
39
|
+
fixer,
|
40
|
+
report,
|
41
|
+
getSource
|
42
|
+
} = context;
|
43
|
+
var matchAll = (0, _morphemeMatchTextlint.createTextlintMatcher)({
|
44
|
+
tokenize: _kuromojin.tokenize,
|
45
|
+
dictionaries: loadDictionaries()
|
46
|
+
});
|
47
|
+
var engine = _enhancedEngine.default;
|
48
|
+
return {
|
49
|
+
[Syntax.Str](node) {
|
50
|
+
return new Promise( /*#__PURE__*/function () {
|
51
|
+
var _ref = _asyncToGenerator(function* (resolve, reject) {
|
52
|
+
var text = getSource(node);
|
53
|
+
var results = yield matchAll(text);
|
54
|
+
|
55
|
+
for (var result of results) {
|
56
|
+
if (result.message == "れ足す言葉の可能性があります") {
|
57
|
+
if (!(yield engine.checkRetasu(_kuromojin.tokenize, text.slice(result.range[0], result.range[1])))) {
|
58
|
+
continue;
|
59
|
+
}
|
60
|
+
} else if (result.message == "助詞の連続") {
|
61
|
+
if (!(yield engine.checkZyosi(_kuromojin.tokenize, result, text))) {
|
62
|
+
continue;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
if (result.expected) {
|
67
|
+
report(node, new RuleError(result.message, {
|
68
|
+
index: result.index,
|
69
|
+
fix: fixer.replaceTextRange(result.range, result.expected)
|
70
|
+
}));
|
71
|
+
} else {
|
72
|
+
report(node, new RuleError(result.message, {
|
73
|
+
index: result.index
|
74
|
+
}));
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
resolve();
|
79
|
+
});
|
80
|
+
|
81
|
+
return function (_x, _x2) {
|
82
|
+
return _ref.apply(this, arguments);
|
83
|
+
};
|
84
|
+
}());
|
85
|
+
}
|
86
|
+
|
87
|
+
};
|
88
|
+
};
|
89
|
+
|
90
|
+
var _default = {
|
91
|
+
linter: reporter,
|
92
|
+
fixer: reporter
|
93
|
+
};
|
94
|
+
exports.default = _default;
|
95
|
+
//# sourceMappingURL=textlint-rule-for-creation.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/textlint-rule-for-creation.js"],"names":["loadDictionaries","dict1","require","dict2","dict3","dict4","dict5","concat","reporter","context","Syntax","RuleError","fixer","report","getSource","matchAll","tokenize","dictionaries","engine","EnhancedEngine","Str","node","Promise","resolve","reject","text","results","result","message","checkRetasu","slice","range","checkZyosi","expected","index","fix","replaceTextRange","linter"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,gBAAgB,GAAG,MAAM;AAC7B;AACA,MAAIC,KAAK,GAAGC,OAAO,CAAC,cAAD,CAAnB;;AACA,MAAIC,KAAK,GAAGD,OAAO,CAAC,mBAAD,CAAnB;;AACA,MAAIE,KAAK,GAAGF,OAAO,CAAC,eAAD,CAAnB;;AACA,MAAIG,KAAK,GAAGH,OAAO,CAAC,eAAD,CAAnB;;AACA,MAAII,KAAK,GAAGJ,OAAO,CAAC,cAAD,CAAnB;;AACA,SAAOD,KAAK,CAACM,MAAN,CAAaJ,KAAb,EAAoBC,KAApB,EAA2BC,KAA3B,EAAkCC,KAAlC,CAAP;AACD,CARD;;AAUA,IAAME,QAAQ,GAAIC,OAAD,IAAa;AAC5B,MAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA,SAAV;AAAqBC,IAAAA,KAArB;AAA4BC,IAAAA,MAA5B;AAAoCC,IAAAA;AAApC,MAAkDL,OAAxD;AACA,MAAMM,QAAQ,GAAG,kDAAsB;AACrCC,IAAAA,QAAQ,EAAEA,mBAD2B;AAErCC,IAAAA,YAAY,EAAEjB,gBAAgB;AAFO,GAAtB,CAAjB;AAIA,MAAMkB,MAAM,GAAGC,uBAAf;AACA,SAAO;AACL,KAACT,MAAM,CAACU,GAAR,EAAaC,IAAb,EAAmB;AACjB,aAAO,IAAIC,OAAJ;AAAA,qCAAY,WAAOC,OAAP,EAAgBC,MAAhB,EAA2B;AAC5C,cAAMC,IAAI,GAAGX,SAAS,CAACO,IAAD,CAAtB;AACA,cAAIK,OAAO,SAASX,QAAQ,CAACU,IAAD,CAA5B;;AACA,eAAK,IAAME,MAAX,IAAqBD,OAArB,EAA8B;AAC5B,gBAAGC,MAAM,CAACC,OAAP,IAAkB,gBAArB,EAAsC;AACpC,kBAAG,QAAQV,MAAM,CAACW,WAAP,CAAmBb,mBAAnB,EAA6BS,IAAI,CAACK,KAAL,CAAWH,MAAM,CAACI,KAAP,CAAa,CAAb,CAAX,EAA2BJ,MAAM,CAACI,KAAP,CAAa,CAAb,CAA3B,CAA7B,CAAR,CAAH,EAAsF;AACpF;AACD;AACF,aAJD,MAIM,IAAGJ,MAAM,CAACC,OAAP,IAAkB,OAArB,EAA6B;AACjC,kBAAG,QAAQV,MAAM,CAACc,UAAP,CAAkBhB,mBAAlB,EAA4BW,MAA5B,EAAoCF,IAApC,CAAR,CAAH,EAAsD;AACpD;AACD;AACF;;AACD,gBAAIE,MAAM,CAACM,QAAX,EAAqB;AACnBpB,cAAAA,MAAM,CAACQ,IAAD,EAAO,IAAIV,SAAJ,CAAcgB,MAAM,CAACC,OAArB,EAA8B;AACzCM,gBAAAA,KAAK,EAAEP,MAAM,CAACO,KAD2B;AAEzCC,gBAAAA,GAAG,EAAEvB,KAAK,CAACwB,gBAAN,CAAuBT,MAAM,CAACI,KAA9B,EAAqCJ,MAAM,CAACM,QAA5C;AAFoC,eAA9B,CAAP,CAAN;AAID,aALD,MAKO;AACLpB,cAAAA,MAAM,CAACQ,IAAD,EAAO,IAAIV,SAAJ,CAAcgB,MAAM,CAACC,OAArB,EAA8B;AACzCM,gBAAAA,KAAK,EAAEP,MAAM,CAACO;AAD2B,eAA9B,CAAP,CAAN;AAGD;AACF;;AACDX,UAAAA,OAAO;AACR,SAzBM;;AAAA;AAAA;AAAA;AAAA,UAAP;AA0BD;;AA5BI,GAAP;AA8BD,CArCD;;eAuCe;AACbc,EAAAA,MAAM,EAAE7B,QADK;AAEbI,EAAAA,KAAK,EAAEJ;AAFM,C","sourcesContent":["import { createTextlintMatcher } from \"morpheme-match-textlint\";\nimport { tokenize } from \"kuromojin\";\nimport EnhancedEngine from \"./enhanced-engine\";\n\nconst loadDictionaries = () => {\n // unavoidable\n let dict1 = require('./dict/zyosi');\n let dict2 = require('./dict/gozidatuzi');\n let dict3 = require('./dict/retasu');\n let dict4 = require('./dict/sanuki');\n let dict5 = require('./dict/saire');\n return dict1.concat(dict2, dict3, dict4, dict5);\n}\n\nconst reporter = (context) => {\n const { Syntax, RuleError, fixer, report, getSource } = context;\n const matchAll = createTextlintMatcher({\n tokenize: tokenize,\n dictionaries: loadDictionaries()\n });\n const engine = EnhancedEngine\n return {\n [Syntax.Str](node) {\n return new Promise(async (resolve, reject) => {\n const text = getSource(node);\n let results = await matchAll(text);\n for (const result of results) {\n if(result.message == \"れ足す言葉の可能性があります\"){\n if(!(await engine.checkRetasu(tokenize, text.slice(result.range[0],result.range[1])))){\n continue;\n }\n }else if(result.message == \"助詞の連続\"){\n if(!(await engine.checkZyosi(tokenize, result, text))){\n continue;\n }\n }\n if (result.expected) {\n report(node, new RuleError(result.message, {\n index: result.index,\n fix: fixer.replaceTextRange(result.range, result.expected)\n }));\n } else {\n report(node, new RuleError(result.message, {\n index: result.index\n }));\n }\n }\n resolve();\n });\n }\n };\n};\n\nexport default {\n linter: reporter,\n fixer: reporter\n};"],"file":"textlint-rule-for-creation.js"}
|
package/package.json
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
{
|
2
|
+
"version": "1.2.1",
|
3
|
+
"keywords": [
|
4
|
+
"textlintrule"
|
5
|
+
],
|
6
|
+
"main": "lib/textlint-rule-for-creation.js",
|
7
|
+
"files": [
|
8
|
+
"lib/",
|
9
|
+
"src/"
|
10
|
+
],
|
11
|
+
"repository": {
|
12
|
+
"type": "git",
|
13
|
+
"url": "git+https://github.com/doujinreviewers/textlint-rule-for-creation.git"
|
14
|
+
},
|
15
|
+
"homepage": "https://github.com/doujinreviewers/textlint-rule-for-creation",
|
16
|
+
"bugs": {
|
17
|
+
"url": "https://github.com/doujinreviewers/textlint-rule-for-creation/issues"
|
18
|
+
},
|
19
|
+
"scripts": {
|
20
|
+
"test": "textlint-scripts test",
|
21
|
+
"build": "textlint-scripts build",
|
22
|
+
"prepublish": "npm run --if-present build"
|
23
|
+
},
|
24
|
+
"devDependencies": {
|
25
|
+
"textlint-scripts": "^12.0.2",
|
26
|
+
"textlint-tester": "^12.0.2"
|
27
|
+
},
|
28
|
+
"name": "@doujinreviewers/textlint-rule-for-creation",
|
29
|
+
"author": "同人Reviewers",
|
30
|
+
"license": "MIT",
|
31
|
+
"description": "日本語の明確な誤りのみを検出するクリエイター向けtextlintルール",
|
32
|
+
"publishConfig": {
|
33
|
+
"access": "public"
|
34
|
+
},
|
35
|
+
"dependencies": {
|
36
|
+
"kuromojin": "^3.0.0",
|
37
|
+
"morpheme-match-textlint": "^2.0.6"
|
38
|
+
}
|
39
|
+
}
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module.exports = {
|
2
|
+
"jidousi_tadousi": [
|
3
|
+
"開け",
|
4
|
+
"あけ",
|
5
|
+
],
|
6
|
+
// 整理する気はない
|
7
|
+
"zyosi": [
|
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
|
+
"たりも",
|
68
|
+
"たりが",
|
69
|
+
"たりは",
|
70
|
+
"たりさえ",
|
71
|
+
"たりすら",
|
72
|
+
"たりなど",
|
73
|
+
"ながらも",
|
74
|
+
"つつも",
|
75
|
+
"なりが",
|
76
|
+
"なりを",
|
77
|
+
"てなんて",
|
78
|
+
"になんて",
|
79
|
+
"もなんて",
|
80
|
+
"ばかりなんて",
|
81
|
+
"ばっかりなんて",
|
82
|
+
"だけを",
|
83
|
+
"だけが",
|
84
|
+
"だけは",
|
85
|
+
"だけに",
|
86
|
+
"だけかも",
|
87
|
+
"だけかも",
|
88
|
+
"なと",
|
89
|
+
"てから",
|
90
|
+
"では",
|
91
|
+
"なんかに",
|
92
|
+
]
|
93
|
+
};
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module.exports = [
|
2
|
+
{
|
3
|
+
"message": "\"適用\"の誤用である可能性があります。適応 => 適用",
|
4
|
+
"expected": "を適用",
|
5
|
+
"tokens": [
|
6
|
+
{
|
7
|
+
"surface_form": "を",
|
8
|
+
"pos": "助詞",
|
9
|
+
"pos_detail_1": "格助詞",
|
10
|
+
"pos_detail_2": "一般",
|
11
|
+
"pos_detail_3": "*",
|
12
|
+
"conjugated_type": "*",
|
13
|
+
"conjugated_form": "*",
|
14
|
+
"basic_form": "を",
|
15
|
+
"reading": "ヲ",
|
16
|
+
"pronunciation": "ヲ"
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"surface_form": "適応",
|
20
|
+
"pos": "名詞",
|
21
|
+
"pos_detail_1": "サ変接続",
|
22
|
+
"pos_detail_2": "*",
|
23
|
+
"pos_detail_3": "*",
|
24
|
+
"conjugated_type": "*",
|
25
|
+
"conjugated_form": "*",
|
26
|
+
"basic_form": "適応",
|
27
|
+
"reading": "テキオウ",
|
28
|
+
"pronunciation": "テキオー"
|
29
|
+
}
|
30
|
+
]
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"message": "動詞の連用形+辛い(つらい)の場合は、「ずらい」ではなく「づらい」が適切です。",
|
34
|
+
"expected": "$1づらい",
|
35
|
+
"tokens": [
|
36
|
+
{
|
37
|
+
"pos": "動詞",
|
38
|
+
"pos_detail_1": "自立",
|
39
|
+
"conjugated_form": "連用形",
|
40
|
+
"_capture": "$1"
|
41
|
+
},
|
42
|
+
{
|
43
|
+
"surface_form": "ず",
|
44
|
+
},
|
45
|
+
{
|
46
|
+
"surface_form": "らい",
|
47
|
+
}
|
48
|
+
]
|
49
|
+
},
|
50
|
+
{
|
51
|
+
"message": "動詞の連用形+辛い(つらい)の場合は、「ずらい」ではなく「づらい」が適切です。",
|
52
|
+
"expected": "$1づらい",
|
53
|
+
"tokens": [
|
54
|
+
{
|
55
|
+
"pos": "動詞",
|
56
|
+
"pos_detail_1": "自立",
|
57
|
+
"conjugated_form": "連用形",
|
58
|
+
"_capture": "$1"
|
59
|
+
},
|
60
|
+
{
|
61
|
+
"surface_form": "ずら",
|
62
|
+
},
|
63
|
+
{
|
64
|
+
"surface_form": "い",
|
65
|
+
}
|
66
|
+
]
|
67
|
+
}
|
68
|
+
];
|