ecdict 1.2.alpha3 → 1.2.alpha4
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/bin/ecdict +40 -31
- 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: f8bbfbe1dbd141fc1eecda848fa890fd0e4d85001a6d8e090ca735203786b7dd
|
4
|
+
data.tar.gz: c499d33a61ff61d7000538043fcf6691dd34310ccf5076e45c0e4054367708c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8e94e4a5dd550cf36dc3e7820b7920c8b45a743a493ff10e1a68e7940d7a536a53078416efe9a984c7aaadb20e1ffc98414c9474d88bf584ccd48bb4e30167c
|
7
|
+
data.tar.gz: cf720681affcbf4a6233bcb04f5bfd8d036a91133b06d73b0f4c4f4a79f96b350f8fc76189dce4cbecf042595d6f89130cd7a97bc43ed94f4ad0e295d7ac4034
|
data/bin/ecdict
CHANGED
@@ -15,6 +15,12 @@
|
|
15
15
|
# 1. ecdict installer
|
16
16
|
# 2. ecdict cmd
|
17
17
|
# 3. ecdict repl
|
18
|
+
#
|
19
|
+
# Exit -1: 下载原始数据失败
|
20
|
+
# Exit -2: 解压原始数据至CSV失败
|
21
|
+
# EXit -3: 从CSV生成数据库失败
|
22
|
+
# Exit 1: 无词典
|
23
|
+
# Exit 2: 缺少参数
|
18
24
|
# ------------------------------------------------------
|
19
25
|
|
20
26
|
require 'sqlite3'
|
@@ -24,7 +30,7 @@ ECDictRAWDATA = File.join(ECDICT_STORAGE, 'ecdict-csv.7z')
|
|
24
30
|
ECDictDB = File.join(ECDICT_STORAGE, 'ecdict.db')
|
25
31
|
ECDictCSV = File.join(ECDICT_STORAGE, 'ecdict.csv')
|
26
32
|
|
27
|
-
ECDICT_GEM_VERSION = "1.2.
|
33
|
+
ECDICT_GEM_VERSION = "1.2.alpha4"
|
28
34
|
|
29
35
|
# 这个版本是我从上游下载的CSV后自己压缩的
|
30
36
|
# 这个文件的实际创建日期(上游作者创建)是2017/06/04
|
@@ -38,6 +44,16 @@ require 'fileutils'
|
|
38
44
|
FileUtils.mkdir_p(ECDICT_STORAGE)
|
39
45
|
$DB = SQLite3::Database.new ECDictDB
|
40
46
|
|
47
|
+
def db_close
|
48
|
+
$DB.close if $DB
|
49
|
+
end
|
50
|
+
|
51
|
+
def db_close_and_exit(num = 0)
|
52
|
+
db_close
|
53
|
+
exit num
|
54
|
+
end
|
55
|
+
|
56
|
+
|
41
57
|
|
42
58
|
####################
|
43
59
|
# helper: for color
|
@@ -152,9 +168,6 @@ end
|
|
152
168
|
# 2. create table in the db
|
153
169
|
# 3. insert data from CSV into the table
|
154
170
|
#
|
155
|
-
# exit 1 : create db failed
|
156
|
-
# exit 2 : insert data failed
|
157
|
-
#
|
158
171
|
def generate_sqlite_db()
|
159
172
|
|
160
173
|
# SQLite3::Database.new已经生成了该文件,所以需要提前判断到底是否存在
|
@@ -171,9 +184,6 @@ def generate_sqlite_db()
|
|
171
184
|
end
|
172
185
|
end
|
173
186
|
|
174
|
-
def db_close
|
175
|
-
$DB.close if $DB
|
176
|
-
end
|
177
187
|
|
178
188
|
# 共15个字段,存的时候只需要14个
|
179
189
|
# 1.id 主键,自增
|
@@ -225,7 +235,7 @@ EOF
|
|
225
235
|
puts "=> 创建数据库文件#{ECDictDB}失败,或表`ecdict`生成失败"
|
226
236
|
db_close
|
227
237
|
File.delete(ECDictDB)
|
228
|
-
|
238
|
+
return false
|
229
239
|
end
|
230
240
|
|
231
241
|
|
@@ -288,13 +298,14 @@ EOF
|
|
288
298
|
rescue Exception => e
|
289
299
|
puts "=> #{e.message}"
|
290
300
|
puts "=> 数据库插入信息失败"
|
291
|
-
File.delete(ECDictDB)
|
292
301
|
db_close
|
293
|
-
|
302
|
+
File.delete(ECDictDB)
|
303
|
+
return false
|
294
304
|
end
|
295
305
|
puts
|
296
306
|
puts "=> 数据库#{ECDictDB}已完整生成"
|
297
307
|
db_close
|
308
|
+
return true
|
298
309
|
end
|
299
310
|
|
300
311
|
|
@@ -328,8 +339,8 @@ end
|
|
328
339
|
def reply_once(query)
|
329
340
|
|
330
341
|
if !check_db_integrity
|
331
|
-
puts "ecdict:
|
332
|
-
|
342
|
+
puts "ecdict: 数据库不存在或数据库不完整,请使用`ecdict -i`来下载安装词典数据"
|
343
|
+
db_close_and_exit(1)
|
333
344
|
end
|
334
345
|
|
335
346
|
tables = []
|
@@ -348,8 +359,9 @@ def reply_once(query)
|
|
348
359
|
end
|
349
360
|
|
350
361
|
if rows.empty?
|
351
|
-
puts "ecdict: 未找到结果,请检查单词拼写是否正确"
|
352
|
-
|
362
|
+
puts "ecdict: 未找到结果,请检查单词拼写是否正确"
|
363
|
+
db_close
|
364
|
+
return
|
353
365
|
else
|
354
366
|
line = rows[0]
|
355
367
|
phonetic,trans,definition,exchange = line[0],line[1],line[2],line[3]
|
@@ -395,11 +407,11 @@ def chinese_search(cn_word, support_phrase: false)
|
|
395
407
|
|
396
408
|
if cn_word.empty?
|
397
409
|
puts "ecdict: 请输入要查询的中文,或使用`ecdict -h`查看帮助"
|
398
|
-
|
410
|
+
db_close_and_exit(2)
|
399
411
|
end
|
400
412
|
if !check_db_integrity
|
401
413
|
puts "=> 数据库不存在或数据库不完整,请使用`ecdict -i`来下载安装词典数据"
|
402
|
-
|
414
|
+
db_close_and_exit(1)
|
403
415
|
end
|
404
416
|
|
405
417
|
if support_phrase
|
@@ -420,7 +432,8 @@ def chinese_search(cn_word, support_phrase: false)
|
|
420
432
|
end
|
421
433
|
if rows.empty?
|
422
434
|
puts "ecdict: 未找到相关英文,请不要输入中文短语或短句,仅支持词的搜索"
|
423
|
-
|
435
|
+
db_close
|
436
|
+
return
|
424
437
|
else
|
425
438
|
# 有的时候并不是没有结果,而是被我们过滤掉了,对此确认一下
|
426
439
|
found_a_word = false
|
@@ -543,12 +556,7 @@ def start_ecrepl
|
|
543
556
|
|
544
557
|
if !check_db_integrity
|
545
558
|
puts "ecdict: 数据库不存在或数据库不完整,请使用`ecdict -i`来下载安装词典数据"
|
546
|
-
|
547
|
-
end
|
548
|
-
|
549
|
-
def db_close_and_exit
|
550
|
-
$DB.close if $DB
|
551
|
-
exit 0
|
559
|
+
db_close_and_exit(1)
|
552
560
|
end
|
553
561
|
|
554
562
|
begin
|
@@ -606,7 +614,8 @@ def start_ecrepl
|
|
606
614
|
while line = Reline.readline("\e[32mecdict> \e[0m", true)
|
607
615
|
case word = line.chomp
|
608
616
|
when 'exit'
|
609
|
-
|
617
|
+
db_close
|
618
|
+
return
|
610
619
|
when ''
|
611
620
|
# NOOP
|
612
621
|
else
|
@@ -616,7 +625,8 @@ def start_ecrepl
|
|
616
625
|
rescue Interrupt
|
617
626
|
puts '^C'
|
618
627
|
`stty #{stty_save}` if stty_save
|
619
|
-
|
628
|
+
db_close
|
629
|
+
return
|
620
630
|
end
|
621
631
|
|
622
632
|
end
|
@@ -630,10 +640,10 @@ def delete_cache
|
|
630
640
|
begin
|
631
641
|
FileUtils.rm_rf(ECDICT_STORAGE)
|
632
642
|
rescue => e
|
633
|
-
puts "
|
634
|
-
puts "
|
643
|
+
puts "ecdict: #{e.message}"
|
644
|
+
puts "ecdict: 清空词典数据失败"
|
635
645
|
else
|
636
|
-
puts "
|
646
|
+
puts "ecdict: 清空词典数据完成"
|
637
647
|
end
|
638
648
|
puts
|
639
649
|
end
|
@@ -678,10 +688,10 @@ end
|
|
678
688
|
if ARGV.empty?
|
679
689
|
if !check_db_integrity
|
680
690
|
puts "ecdict: 数据库不存在或数据库不完整,请使用`ecdict -i`来下载安装词典数据"
|
681
|
-
|
691
|
+
db_close_and_exit(1)
|
682
692
|
end
|
683
693
|
puts "ecdict: 请输入要查询的词/词组 或使用`ecdict -h`查看帮助"
|
684
|
-
|
694
|
+
db_close_and_exit
|
685
695
|
end
|
686
696
|
|
687
697
|
query = ARGV.shift
|
@@ -696,4 +706,3 @@ when "-cp" then chinese_search(ARGV.join, support_phrase: true)
|
|
696
706
|
else
|
697
707
|
reply_once(query)
|
698
708
|
end
|
699
|
-
|