jkproof 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/Gemfile.lock +4 -6
- data/README.md +28 -3
- data/jkproof.gemspec +1 -1
- data/lib/jkproof/sentence.rb +43 -20
- data/lib/jkproof/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92e378ab167a6bde805c9090a8f7747e0c54054a25cd4ae1d75bf48114c5ae4c
|
4
|
+
data.tar.gz: 05ec8e0297975639fae9803083d7873f22e7c916e8b5d4632343e091ff69740c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35a643e68f7cc6cad00ec3354d28c2891afc23c67309f3712907ee99fecf5ac5d252ff274a0fbd9de96cfc191f2801e4003b8df3b71a0819119803b513a7bae9
|
7
|
+
data.tar.gz: ff2b85a22bb7d04869042b420b3c415ae77a18105a0488df9e483423b7d78380dc049e5a7c2b410b86c0b69991e711ca07d01d4eaf4e846129f5a0124bee2f0c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# ChangeLog
|
2
2
|
|
3
|
+
## v1.2.3
|
4
|
+
- 辞書ファイルが所定のフォーマットに沿っていなかった場合に処理を継続するよう修正
|
5
|
+
- エラー理由・検出語数・辞書タイプを戻り値に追加した
|
6
|
+
- `type` の `yml` と `json` を `local` に統一した
|
7
|
+
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
response = {
|
11
|
+
message: "1 ERROR(s) : error reason.",
|
12
|
+
count: 2,
|
13
|
+
type: "yml or json",
|
14
|
+
words: [
|
15
|
+
{ type: 'yahoo', correct: "correct1", wrong: "wrong1" },
|
16
|
+
{ type: 'local', correct: "correct2", wrong: "wrong2" },
|
17
|
+
],
|
18
|
+
}
|
19
|
+
```
|
20
|
+
|
3
21
|
## v1.2.2
|
4
22
|
- JSON形式に対応した
|
5
23
|
- `Jkproof.detect_words_has_error(sentence, json_dictionary)` のように第二引数にJSONデータを渡すことで対応可能
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
jkproof (1.2.
|
5
|
-
activesupport
|
6
|
-
dotenv
|
7
|
-
|
8
|
-
xml-simple
|
4
|
+
jkproof (1.2.3)
|
5
|
+
activesupport (~> 5.2)
|
6
|
+
dotenv (~> 2.6)
|
7
|
+
xml-simple (~> 1.1)
|
9
8
|
|
10
9
|
GEM
|
11
10
|
remote: https://rubygems.org/
|
@@ -18,7 +17,6 @@ GEM
|
|
18
17
|
concurrent-ruby (1.1.4)
|
19
18
|
diff-lcs (1.3)
|
20
19
|
dotenv (2.6.0)
|
21
|
-
highline (2.0.0)
|
22
20
|
i18n (1.5.1)
|
23
21
|
concurrent-ruby (~> 1.0)
|
24
22
|
minitest (5.11.3)
|
data/README.md
CHANGED
@@ -113,15 +113,40 @@ NO_FILTER=""
|
|
113
113
|
```ruby
|
114
114
|
# 検出された場合
|
115
115
|
Jkproof.detect_words_has_error("検知したい文章")
|
116
|
-
# => [
|
116
|
+
# => [
|
117
|
+
# message: "",
|
118
|
+
# count: 1,
|
119
|
+
# type: "yml",
|
120
|
+
# words: { type: "local", wrong: WrongWord, correct:CorrectWord },
|
121
|
+
# ]
|
117
122
|
|
118
123
|
# 検出されなかった場合
|
119
124
|
Jkproof.detect_words_has_error("")
|
120
|
-
# => [
|
125
|
+
# => [
|
126
|
+
# message: "",
|
127
|
+
# count: 0,
|
128
|
+
# type: "yml",
|
129
|
+
# words: [],
|
130
|
+
# ]
|
121
131
|
|
122
132
|
# JSONを渡す場合
|
123
133
|
Jkproof.detect_words_has_error("検知したい文章", json_dictionary)
|
124
|
-
# => [
|
134
|
+
# => [
|
135
|
+
# message: "",
|
136
|
+
# count: 1,
|
137
|
+
# type: "json",
|
138
|
+
# words: { type: "local", wrong: WrongWord, correct:CorrectWord },
|
139
|
+
# ]
|
140
|
+
|
141
|
+
# エラーがあった場合
|
142
|
+
# -- 処理自体は継続し、Yahooもしくは辞書のうち検知できるほうのみ返す
|
143
|
+
# -- どちらも返せない場合は空の配列を返す
|
144
|
+
# => [
|
145
|
+
# message: "x ERROR(s) : error reason.",
|
146
|
+
# count: 1,
|
147
|
+
# type: "json",
|
148
|
+
# words: { type: "yahoo", wrong: WrongWord, correct:CorrectWord },
|
149
|
+
# ]
|
125
150
|
```
|
126
151
|
|
127
152
|
## Development
|
data/jkproof.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
ex2.use JSON) Jkproof.detect_words_has_error(sentence, json)
|
18
18
|
EOF
|
19
19
|
spec.homepage = 'https://github.com/tosite0345/jkproof'
|
20
|
-
spec.license =
|
20
|
+
spec.license = 'MIT'
|
21
21
|
|
22
22
|
# spec.summary = %q{TODO: Write a short summary, because RubyGems requires one.}
|
23
23
|
# spec.description = %q{TODO: Write a longer description or delete this line.}
|
data/lib/jkproof/sentence.rb
CHANGED
@@ -18,37 +18,55 @@ module Jkproof
|
|
18
18
|
|
19
19
|
@yahoo_words = []
|
20
20
|
@buf = buf
|
21
|
-
fetch_yahoo_lint_words
|
22
21
|
end
|
23
22
|
|
24
23
|
def fetch_wrong_words
|
24
|
+
error_messages = []
|
25
25
|
wrong_words = []
|
26
26
|
excluded_correct_word = @buf
|
27
27
|
|
28
|
+
begin
|
29
|
+
fetch_yahoo_lint_words
|
30
|
+
rescue StandardError => e
|
31
|
+
error_messages.push "yahoo api. (#{e})"
|
32
|
+
end
|
33
|
+
|
28
34
|
# 正しいワードを取り除く
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
35
|
+
begin
|
36
|
+
@dictionary_words.each do |word|
|
37
|
+
# 誤りのある単語の文字数 > 正しい単語の文字数の場合、先に検知する
|
38
|
+
wrongs = fetch_wrong_words_than_long_correct_word(word['correct'], word['wrongs'])
|
39
|
+
wrongs.each do |wrong|
|
40
|
+
if excluded_correct_word.include?(wrong)
|
41
|
+
wrong_words.push(type: 'local', correct: word['correct'], wrong: wrong)
|
42
|
+
excluded_correct_word = excluded_correct_word.gsub(wrong, '####')
|
43
|
+
end
|
36
44
|
end
|
45
|
+
# 正しいワードを取り除く
|
46
|
+
excluded_correct_word = excluded_correct_word.gsub(word['correct'], '****')
|
37
47
|
end
|
38
|
-
# 正しいワードを取り除く
|
39
|
-
excluded_correct_word = excluded_correct_word.gsub(word['correct'], '****')
|
40
|
-
end
|
41
48
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
49
|
+
@dictionary_words.each do |word|
|
50
|
+
correct_word = word['correct']
|
51
|
+
word['wrongs'].each do |wrong|
|
52
|
+
if excluded_correct_word.include?(wrong)
|
53
|
+
wrong_words.push(type: 'local', wrong: wrong, correct: correct_word)
|
54
|
+
excluded_correct_word = excluded_correct_word.gsub(wrong, '####')
|
55
|
+
end
|
48
56
|
end
|
49
57
|
end
|
58
|
+
rescue StandardError => e
|
59
|
+
error_messages.push "yml or json dictionary. (#{e})"
|
50
60
|
end
|
51
|
-
|
61
|
+
|
62
|
+
messages = error_messages.empty? ? '' : "#{error_messages.count} ERROR(s) : #{error_messages.join(', ')}"
|
63
|
+
words = wrong_words.concat(@yahoo_words).uniq
|
64
|
+
{
|
65
|
+
message: messages,
|
66
|
+
count: words.size,
|
67
|
+
type: @type,
|
68
|
+
words: words
|
69
|
+
}
|
52
70
|
end
|
53
71
|
|
54
72
|
private
|
@@ -64,8 +82,13 @@ module Jkproof
|
|
64
82
|
# ローカルの辞書データを使う場合
|
65
83
|
yml_path = ENV['DICTIONARY_YML_PATH']
|
66
84
|
begin
|
67
|
-
|
68
|
-
|
85
|
+
if yml_path.blank?
|
86
|
+
@dictionary_words = []
|
87
|
+
@type = 'none'
|
88
|
+
else
|
89
|
+
@dictionary_words = YAML.load_file(yml_path)
|
90
|
+
@type = 'yml'
|
91
|
+
end
|
69
92
|
rescue StandardError => e
|
70
93
|
raise "#{e}(file_path: '#{yml_path}')"
|
71
94
|
end
|
data/lib/jkproof/version.rb
CHANGED