igo 0.1.5 → 0.1.5.2
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/README.md +1 -1
- data/lib/igo/ja.rb +45 -32
- data/lib/igo/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab222a0efa1f35160d81754868b2e3e894b0ff13191ee79289eb9b47fd7372f9
|
4
|
+
data.tar.gz: 5ac5823cd268aa689c04e48a213abcd940f6fcfa60f2eb96768f7b34c21fb4d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f33dfbc21ec3e627f8e31775437f0a07e4d914da6f14f47fa1fe86915469dbbc0ecb8b1a89d8fede83ca54a3ea239508b05624a3cfff9f073ddb3e7982d0e23b
|
7
|
+
data.tar.gz: ab3ce5df11dc5e0ac84eb93a311d007d79b2d421ad0437a3fcc09c3a99652d55a56673306b97f2f6098b3315aa1a290170ba54d1d01dc30b87cb2a7facd5ef1e
|
data/README.md
CHANGED
data/lib/igo/ja.rb
CHANGED
@@ -3,6 +3,7 @@ require 'open-uri'
|
|
3
3
|
require 'uri'
|
4
4
|
require 'concurrent'
|
5
5
|
require 'timeout'
|
6
|
+
require 'romaji'
|
6
7
|
|
7
8
|
module Igo
|
8
9
|
|
@@ -19,9 +20,6 @@ module Igo
|
|
19
20
|
# cutted = j.cut "あー、合成は結合法則を満たすんでしたね", s: true
|
20
21
|
# #=> "あー 、 合成 は 結合法則 を 満たす ん でした ね"
|
21
22
|
#
|
22
|
-
# 下ノ関数は、暫く未完成です、ごめんね:
|
23
|
-
#
|
24
|
-
# `j.romaji`, `j.kana`, `j.tag`。
|
25
23
|
#
|
26
24
|
module Ja
|
27
25
|
|
@@ -48,9 +46,10 @@ module Igo
|
|
48
46
|
|
49
47
|
tag(str, s: s, kana: false, tag: false)
|
50
48
|
end
|
51
|
-
# def romaji str
|
52
|
-
# end
|
53
49
|
|
50
|
+
private def _romaji str
|
51
|
+
Romaji.kana2romaji str
|
52
|
+
end
|
54
53
|
# def kana str
|
55
54
|
# end
|
56
55
|
def kana str, s: false, lr: "()"
|
@@ -70,9 +69,10 @@ module Igo
|
|
70
69
|
# else cutted.map(&:last)
|
71
70
|
# end
|
72
71
|
|
73
|
-
tag(str, s: s, lr: lr, tag: false, kana: true)
|
72
|
+
tag(str, s: s, lr: lr, tag: false, kana: true, kana_only: true)
|
74
73
|
end
|
75
|
-
|
74
|
+
|
75
|
+
def ruby str, s: false, lr: "()", romaji: false
|
76
76
|
# str = URI.encode_www_form_component(str)
|
77
77
|
# doc = Nokogiri::HTML(URI.open(SEARCH_URL + str).read)
|
78
78
|
|
@@ -93,16 +93,16 @@ module Igo
|
|
93
93
|
# else cutted
|
94
94
|
# end
|
95
95
|
|
96
|
-
tag
|
96
|
+
tag str, s: s, lr: lr, kana: true, tag: false, romaji: romaji
|
97
97
|
|
98
98
|
end
|
99
99
|
# TODO: tag word function
|
100
100
|
#
|
101
101
|
def romaji str, s: false
|
102
|
-
|
102
|
+
tag str, s: s, romaji: true, kana_only: true, tag: false
|
103
103
|
end
|
104
104
|
|
105
|
-
def tag str, s: false, ns: 0, lr: "()", sp:"_", short: false, tag: true, kana: false, timeout: 10
|
105
|
+
def tag str, s: false, ns: 0, lr: "()", sp:"_", short: false, tag: true, kana: false, timeout: 10, kana_only: false, romaji: false
|
106
106
|
|
107
107
|
def async_query(arr, timeout=0, &block)
|
108
108
|
promises = arr.map do |element|
|
@@ -126,44 +126,57 @@ module Igo
|
|
126
126
|
results
|
127
127
|
end
|
128
128
|
|
129
|
-
def _tag str,
|
129
|
+
def _tag str, romaji: false
|
130
130
|
str = URI.encode_www_form_component(str)
|
131
131
|
doc = Nokogiri::HTML(URI.open(SEARCH_URL + str).read)
|
132
132
|
|
133
133
|
cutted = doc.css(".japanese_word")
|
134
|
-
.map do
|
135
|
-
_1
|
136
|
-
_1
|
134
|
+
.map do
|
135
|
+
text = _1.css(".japanese_word__text_wrapper, japanese_word__text_wrapper").text.strip
|
136
|
+
kn = _1&.css(".japanese_word__furigana").text
|
137
|
+
cat = _1.attr("data-pos")
|
138
|
+
|
139
|
+
romj = kn.empty? ? _romaji(text) : _romaji(kn)
|
140
|
+
|
141
|
+
[text, # text
|
142
|
+
romaji ? romj : kn , # romaji || kana || ""
|
143
|
+
cat] # tag || nil
|
137
144
|
end
|
138
|
-
# .map{_1.values_at(* [0, vis_kana ? 1 : 0, vis_tag ? 2 : 0].uniq)}
|
139
145
|
end
|
140
146
|
|
141
|
-
def _stringify cutted, s: "/", lr: "()", sp:"_", short: false, vis_tag: true, vis_kana: true
|
147
|
+
def _stringify cutted, s: "/", lr: "()", sp:"_", short: false, vis_tag: true, vis_kana: true, kana_only: false, romaji: false
|
142
148
|
# cutted.each{ _1[1] = nil } unless vis_kana
|
143
149
|
# cutted.each{ _1[2] = nil } unless vis_tag
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
+
if kana_only
|
151
|
+
return cutted.map do
|
152
|
+
(_1[1].empty? ? _1[0] : _1[1]) +
|
153
|
+
((vis_kana && _1[2]) ? (sp + _1[2]) : "")
|
154
|
+
end.join(s)
|
155
|
+
else
|
156
|
+
unless s.is_a?(String)
|
157
|
+
s = " "
|
158
|
+
end
|
159
|
+
left, right = case lr
|
160
|
+
when String then (lr*2).split("").values_at(0, -1)
|
161
|
+
when Array then lr
|
162
|
+
end
|
163
|
+
cutted.map do
|
164
|
+
_1[0] +
|
165
|
+
((vis_tag && !_1[1]&.empty? )? (left + _1[1] + right) : "") +
|
166
|
+
((vis_kana && _1[2]) ? (sp + _1[2]) : "")
|
167
|
+
end.join(s)
|
150
168
|
end
|
151
|
-
cutted.map do
|
152
|
-
_1[0] +
|
153
|
-
((vis_tag && !_1[1]&.empty? )? (left + _1[1] + right) : "") +
|
154
|
-
((vis_kana && _1[2]) ? (sp + _1[2]) : "")
|
155
|
-
end.join(s)
|
156
169
|
end
|
157
170
|
|
158
|
-
def singo_proc str, s: false, ns: 0, lr: "()", sp:"_", short: false, vis_tag: true, vis_kana: true
|
159
|
-
cutted = _tag str,
|
171
|
+
def singo_proc str, s: false, ns: 0, lr: "()", sp:"_", short: false, vis_tag: true, vis_kana: true, kana_only: false, romaji: false
|
172
|
+
cutted = _tag str, romaji: romaji
|
160
173
|
if short
|
161
174
|
short = short.is_a?(Integer) ? short : 4
|
162
175
|
cutted = cutted.map{[ *_1[0,2], (_1[2][0, short].downcase rescue nil) ]}
|
163
176
|
end
|
164
177
|
|
165
178
|
if s
|
166
|
-
_stringify cutted, s: s, lr: lr, sp: sp, short: short, vis_tag: vis_kana, vis_kana: vis_tag
|
179
|
+
_stringify cutted, s: s, lr: lr, sp: sp, short: short, vis_tag: vis_kana, vis_kana: vis_tag, kana_only: kana_only, romaji: romaji
|
167
180
|
else
|
168
181
|
cutted = cutted.map{_1.values_at(* [0, vis_kana ? 1 : 0, vis_tag ? 2 : 0].uniq)}
|
169
182
|
cutted[0].size == 1 ? cutted.flatten : cutted
|
@@ -172,10 +185,10 @@ module Igo
|
|
172
185
|
|
173
186
|
case str
|
174
187
|
when String
|
175
|
-
singo_proc str, s: s, ns: ns, lr: lr, sp: sp, short: short, vis_tag: tag, vis_kana: kana
|
188
|
+
singo_proc str, s: s, ns: ns, lr: lr, sp: sp, short: short, vis_tag: tag, vis_kana: kana, kana_only: kana_only, romaji: romaji
|
176
189
|
when Array
|
177
190
|
async_query str, timeout do
|
178
|
-
singo_proc _1, s: s, ns: ns, lr: lr, sp: sp, short: short, vis_tag: tag, vis_kana: kana
|
191
|
+
singo_proc _1, s: s, ns: ns, lr: lr, sp: sp, short: short, vis_tag: tag, vis_kana: kana, kana_only: kana_only, romaji: romaji
|
179
192
|
end
|
180
193
|
end
|
181
194
|
# TODO
|
data/lib/igo/version.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: igo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.5
|
4
|
+
version: 0.1.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- saisui
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-26 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
13
|
+
description: A gem for chinese / japanese word cut, pronounciation, hiragana, kana.
|
14
14
|
email:
|
15
15
|
- kozmozenjel@outlook.com
|
16
16
|
executables: []
|