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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/igo/ja.rb +45 -32
  4. data/lib/igo/version.rb +1 -1
  5. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f601c65deddd555e091f5688fec28cad9a5a38e9b1c30e6618ce076e8dacce6a
4
- data.tar.gz: dcab0296c1c6e1ee7e6ad44f0fc77900235364a932c89e1f7795292f6b36cc07
3
+ metadata.gz: ab222a0efa1f35160d81754868b2e3e894b0ff13191ee79289eb9b47fd7372f9
4
+ data.tar.gz: 5ac5823cd268aa689c04e48a213abcd940f6fcfa60f2eb96768f7b34c21fb4d1
5
5
  SHA512:
6
- metadata.gz: 2724f4e58e730c0c86b107475dc18c27d65ea3c5b990236e4ebe9e55db9d959ac538004d0957563a986397e0ca240846b5025259f6e192c8007bbfc958694e2a
7
- data.tar.gz: b6dfe00759471e08c933827822db4e9bc0cf869c614b24173a26bd451076db17439b96e5d81adeca647167741d1ef43e5098fb34bfedbcf42efd21d00ccdee9f
6
+ metadata.gz: f33dfbc21ec3e627f8e31775437f0a07e4d914da6f14f47fa1fe86915469dbbc0ecb8b1a89d8fede83ca54a3ea239508b05624a3cfff9f073ddb3e7982d0e23b
7
+ data.tar.gz: ab3ce5df11dc5e0ac84eb93a311d007d79b2d421ad0437a3fcc09c3a99652d55a56673306b97f2f6098b3315aa1a290170ba54d1d01dc30b87cb2a7facd5ef1e
data/README.md CHANGED
@@ -52,7 +52,7 @@ reference:
52
52
 
53
53
  下ノ関数は、暫く未完成です、ごめんね:
54
54
 
55
- `j.romaji`
55
+ `j.dict`
56
56
 
57
57
  ## 用法 :: Usage / Zh
58
58
 
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
- def ruby str, s: false, lr: "()"
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(str, s: s, lr: lr, kana: 1, tag: false)
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, vis_kana: true, vis_tag: true
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 [_1.css(".japanese_word__text_wrapper, japanese_word__text_wrapper").text.strip, # text
135
- _1&.css(".japanese_word__furigana").text||nil, # kana
136
- _1.attr("data-pos")] # tag
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
- unless s.is_a?(String)
145
- s = " "
146
- end
147
- left, right = case lr
148
- when String then (lr*2).split("").values_at(0, -1)
149
- when Array then lr
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, vis_kana: vis_kana, vis_tag: vis_tag
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Igo
4
- VERSION = "0.1.5"
4
+ VERSION = "0.1.5.2"
5
5
  end
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-25 00:00:00.000000000 Z
11
+ date: 2023-12-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: It is easy.
13
+ description: A gem for chinese / japanese word cut, pronounciation, hiragana, kana.
14
14
  email:
15
15
  - kozmozenjel@outlook.com
16
16
  executables: []