jkproof 1.2.2 → 1.2.3
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.
- 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