ecdict 1.2.alpha3 → 1.2.alpha4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|