cr.rb 4.0.1 → 4.0.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/bin/cr +105 -91
- data/lib/cr.rb +10 -6
- 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: acfa8f2eec1e398a8c0cdd160f06011caf9f47222a03ee6782cd2bc34c39f472
|
4
|
+
data.tar.gz: 6e551fc99f60f805f4f625f3bc4b98504b7bce1f03b600a350fcc69062f7c9cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af63a8b63dbd7b0f218508f0e84d6183330349132957745f65ef054864b0e7c9500269012015f973f4981a68fc82bd7e26bb7aa33a9a5e6c8681591b3e06b426
|
7
|
+
data.tar.gz: cedfc4de30d4d7f6a15ddbd671da52917469524ed87b901692f388add29d1d6eaae627a95c1194bc65e29910beca3fd7f0fa50112797139c86e5260d53c2f573
|
data/bin/cr
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# coding: utf-8
|
3
2
|
# ------------------------------------------------------
|
4
3
|
# File : cr.rb
|
5
4
|
# Authors : ccmywish <ccmywish@qq.com>
|
6
5
|
# Created on : <2021-07-08>
|
7
|
-
# Last modified : <
|
6
|
+
# Last modified : <2023-02-05>
|
8
7
|
#
|
9
8
|
# cr:
|
10
9
|
#
|
11
10
|
# This file is used to explain a CRyptic command
|
12
|
-
# or an acronym's real meaning in computer world or
|
13
|
-
# other fields.
|
11
|
+
# or an acronym's real meaning in computer world or
|
12
|
+
# other fields.
|
14
13
|
#
|
15
14
|
# ------------------------------------------------------
|
16
15
|
|
@@ -25,15 +24,15 @@ $CR_DEFAULT_DICTS = [
|
|
25
24
|
"https://github.com/cryptic-resolver/cryptic_computer.git",
|
26
25
|
"https://github.com/cryptic-resolver/cryptic_windows.git",
|
27
26
|
"https://github.com/cryptic-resolver/cryptic_linux.git",
|
28
|
-
"https://github.com/cryptic-resolver/
|
27
|
+
"https://github.com/cryptic-resolver/cryptic_technology"
|
29
28
|
]
|
30
29
|
|
31
30
|
# The config file will override the default dicts, but not default library!
|
32
|
-
if ENV['CRYPTIC_RESOLVER_CONFIG']
|
31
|
+
if ENV['CRYPTIC_RESOLVER_CONFIG']
|
33
32
|
file = ENV['CRYPTIC_RESOLVER_CONFIG']
|
34
33
|
if test('f', file)
|
35
|
-
config = Tomlrb.load_file file
|
36
|
-
|
34
|
+
config = Tomlrb.load_file file
|
35
|
+
|
37
36
|
CR_EXTRA_LIBRARY ||= config['EXTRA_LIBRARY']
|
38
37
|
|
39
38
|
if config['DEFAULT_DICTS']
|
@@ -99,7 +98,7 @@ def is_there_any_dict?
|
|
99
98
|
Dir.mkdir CR_DEFAULT_LIBRARY
|
100
99
|
end
|
101
100
|
|
102
|
-
!Dir.empty? CR_DEFAULT_LIBRARY
|
101
|
+
!Dir.empty? CR_DEFAULT_LIBRARY
|
103
102
|
end
|
104
103
|
|
105
104
|
|
@@ -117,24 +116,24 @@ def add_default_dicts_if_none_exists
|
|
117
116
|
else
|
118
117
|
# *nix-like
|
119
118
|
CR_DEFAULT_DICTS_USER_AND_NAMES.each_with_index do |name, i|
|
120
|
-
fork do
|
119
|
+
fork do
|
121
120
|
puts "cr: Pulling #{name}..."
|
122
121
|
`git -C #{CR_DEFAULT_LIBRARY} clone #{CR_DEFAULT_DICTS[i]} -q`
|
123
122
|
end
|
124
123
|
end
|
125
|
-
Process.waitall
|
124
|
+
Process.waitall
|
126
125
|
end
|
127
126
|
|
128
127
|
rescue Interrupt
|
129
128
|
puts "cr: Cancel add default dicts"
|
130
129
|
exit 1
|
131
130
|
end
|
132
|
-
|
131
|
+
|
133
132
|
puts "cr: Add done"
|
134
133
|
word_count(p: false)
|
135
|
-
puts
|
134
|
+
puts
|
136
135
|
puts "#{$DefaultLibWordCount} words added"
|
137
|
-
|
136
|
+
|
138
137
|
# Really added
|
139
138
|
return true
|
140
139
|
end
|
@@ -153,8 +152,8 @@ def update_dicts()
|
|
153
152
|
puts "cr: Updating all dicts in Default library..."
|
154
153
|
|
155
154
|
begin
|
156
|
-
Dir.chdir CR_DEFAULT_LIBRARY do
|
157
|
-
|
155
|
+
Dir.chdir CR_DEFAULT_LIBRARY do
|
156
|
+
|
158
157
|
if RUBY_PLATFORM.include? "mingw"
|
159
158
|
# Windows doesn't have fork
|
160
159
|
Dir.children(CR_DEFAULT_LIBRARY).each do |dict|
|
@@ -164,7 +163,7 @@ def update_dicts()
|
|
164
163
|
else
|
165
164
|
# *nix
|
166
165
|
Dir.children(CR_DEFAULT_LIBRARY).each do |dict|
|
167
|
-
fork do
|
166
|
+
fork do
|
168
167
|
puts "cr: Wait to update #{dict}..."
|
169
168
|
`git -C ./#{dict} pull -q`
|
170
169
|
end
|
@@ -195,7 +194,7 @@ end
|
|
195
194
|
|
196
195
|
|
197
196
|
def add_dict(repo)
|
198
|
-
if repo.nil?
|
197
|
+
if repo.nil?
|
199
198
|
puts bold(red("cr: Need an argument!"))
|
200
199
|
exit -1
|
201
200
|
end
|
@@ -232,12 +231,12 @@ end
|
|
232
231
|
|
233
232
|
|
234
233
|
def del_dict(repo)
|
235
|
-
if repo.nil?
|
234
|
+
if repo.nil?
|
236
235
|
puts bold(red("cr: Need an argument!"))
|
237
236
|
exit -1
|
238
237
|
end
|
239
|
-
Dir.chdir CR_DEFAULT_LIBRARY do
|
240
|
-
begin
|
238
|
+
Dir.chdir CR_DEFAULT_LIBRARY do
|
239
|
+
begin
|
241
240
|
# Dir.rmdir repo # Can't rm a filled dir
|
242
241
|
# FileUtils.rmdir repo # Can't rm a filled dir
|
243
242
|
FileUtils.rm_rf repo
|
@@ -251,8 +250,8 @@ end
|
|
251
250
|
|
252
251
|
|
253
252
|
def load_sheet(library, dict, sheet_name)
|
254
|
-
file = library + "/#{dict}/#{sheet_name}.toml"
|
255
|
-
|
253
|
+
file = library + "/#{dict}/#{sheet_name}.toml"
|
254
|
+
|
256
255
|
if File.exist? file
|
257
256
|
return Tomlrb.load_file file # gem 'tomlrb'
|
258
257
|
# return TOML.load_file file # gem 'toml'
|
@@ -267,21 +266,21 @@ end
|
|
267
266
|
#
|
268
267
|
# A info looks like this
|
269
268
|
# emacs = {
|
270
|
-
# name = "Emacs"
|
269
|
+
# name = "Emacs"
|
271
270
|
# desc = "edit macros"
|
272
271
|
# more = "a feature-rich editor"
|
273
272
|
# see = ["Vim"]
|
274
273
|
# }
|
275
274
|
#
|
276
|
-
# @param info [Hash] the information of the given word (mapped to a keyword in TOML)
|
275
|
+
# @param info [Hash] the information of the given word (mapped to a keyword in TOML)
|
277
276
|
#
|
278
277
|
def pp_info(info)
|
279
278
|
name = info['name'] || red("No name!") # keyword `or` is invalid here in Ruby
|
280
|
-
|
279
|
+
|
281
280
|
desc = info['desc']
|
282
281
|
more = info['more']
|
283
|
-
|
284
|
-
if desc
|
282
|
+
|
283
|
+
if desc
|
285
284
|
puts "\n #{name}: #{desc}"
|
286
285
|
print "\n ",more,"\n" if more
|
287
286
|
else
|
@@ -292,12 +291,19 @@ def pp_info(info)
|
|
292
291
|
if see_also = info['see']
|
293
292
|
print "\n", purple("SEE ALSO ")
|
294
293
|
if see_also.is_a?(Array)
|
295
|
-
see_also.
|
294
|
+
last_ndx = see_also.size - 1
|
295
|
+
see_also.each_with_index do |x,i|
|
296
|
+
if last_ndx == i
|
297
|
+
print underline(x) # Last word doesn't show space
|
298
|
+
else
|
299
|
+
print underline(x),' '
|
300
|
+
end
|
301
|
+
end
|
296
302
|
else
|
297
|
-
print underline(see_also)
|
303
|
+
print underline(see_also)
|
298
304
|
end
|
299
305
|
puts
|
300
|
-
end
|
306
|
+
end
|
301
307
|
puts
|
302
308
|
end
|
303
309
|
|
@@ -313,9 +319,9 @@ end
|
|
313
319
|
# So we can directly lookup to it
|
314
320
|
#
|
315
321
|
# Notice that, we must jump to a specific word definition
|
316
|
-
# So in the toml file, you must specify the precise word.
|
322
|
+
# So in the toml file, you must specify the precise word.
|
317
323
|
# If it has multiple meanings, for example
|
318
|
-
#
|
324
|
+
#
|
319
325
|
# [blah]
|
320
326
|
# same = "xdg" # this is wrong, because xdg has multiple
|
321
327
|
# # definitions, and all of them specify a
|
@@ -333,27 +339,27 @@ def pp_same_info(library, dict, word, cache_content, same_key, own_name)
|
|
333
339
|
|
334
340
|
# If it's a synonym for anther word,
|
335
341
|
# we should lookup into this dict again, but maybe with a different file
|
336
|
-
|
342
|
+
|
337
343
|
# file name
|
338
344
|
x = word.chr.downcase
|
339
|
-
|
340
|
-
#
|
345
|
+
|
346
|
+
#
|
341
347
|
# dictionary maintainer must obey the rule for xxx.yyy word:
|
342
348
|
# xxx should be lower case
|
343
349
|
# yyy can be any case
|
344
|
-
#
|
350
|
+
#
|
345
351
|
# Because yyy should clearly explain the category info, IBM is better than ibm
|
346
352
|
# Implementation should not be too simple if we want to stress the function we
|
347
|
-
# expect.
|
348
|
-
#
|
353
|
+
# expect.
|
354
|
+
#
|
349
355
|
# 'jump to' will output to user, so this is important not only inside our sheet.
|
350
|
-
#
|
356
|
+
#
|
351
357
|
# same = "XDM downloader=>xdm.Download"
|
352
358
|
#
|
353
359
|
# We split 'same' key into two parts via spaceship symbol `=>`, first part will
|
354
360
|
# output to user, the second part is for internal jump.
|
355
361
|
#
|
356
|
-
|
362
|
+
|
357
363
|
jump_to, same = same_key.split("=>")
|
358
364
|
same = jump_to if same.nil?
|
359
365
|
|
@@ -363,17 +369,17 @@ def pp_same_info(library, dict, word, cache_content, same_key, own_name)
|
|
363
369
|
puts blue(bold(own_name)) + ' redirects to ' + blue(bold(jump_to))
|
364
370
|
|
365
371
|
#
|
366
|
-
# As '.' is used to delimit a word and a category, what if
|
372
|
+
# As '.' is used to delimit a word and a category, what if
|
367
373
|
# we jump to a dotted word?
|
368
|
-
#
|
374
|
+
#
|
369
375
|
# [eg]
|
370
|
-
# same = "e.g." # this must lead to a wrong resolution to
|
371
|
-
# # word 'e', category 'g'
|
376
|
+
# same = "e.g." # this must lead to a wrong resolution to
|
377
|
+
# # word 'e', category 'g'
|
372
378
|
#
|
373
379
|
# All you need is to be like this:
|
374
|
-
#
|
380
|
+
#
|
375
381
|
# [eg]
|
376
|
-
# same = "'e.g.'" # cr will notice the single quote
|
382
|
+
# same = "'e.g.'" # cr will notice the single quote
|
377
383
|
#
|
378
384
|
|
379
385
|
if same =~ /^'(.*)'$/
|
@@ -381,7 +387,7 @@ def pp_same_info(library, dict, word, cache_content, same_key, own_name)
|
|
381
387
|
else
|
382
388
|
same, category = same.split('.')
|
383
389
|
end
|
384
|
-
|
390
|
+
|
385
391
|
if same.chr == x
|
386
392
|
# No need to load another dictionary if match
|
387
393
|
sheet_content = cache_content
|
@@ -396,7 +402,7 @@ def pp_same_info(library, dict, word, cache_content, same_key, own_name)
|
|
396
402
|
end
|
397
403
|
|
398
404
|
if info.nil?
|
399
|
-
puts red("
|
405
|
+
puts red("WARN: Synonym jumps to the wrong place `#{same}`,
|
400
406
|
Please consider fixing this in `#{x}.toml` of the dictionary `#{dict}`")
|
401
407
|
# exit
|
402
408
|
return false
|
@@ -416,7 +422,7 @@ end
|
|
416
422
|
# Lookup the given word in a sheet (a toml file) and also print.
|
417
423
|
# The core idea is that:
|
418
424
|
#
|
419
|
-
# 1. if the word is `same` with another synonym, it will directly jump to
|
425
|
+
# 1. if the word is `same` with another synonym, it will directly jump to
|
420
426
|
# a word in this dictionary, but maybe a different sheet.
|
421
427
|
#
|
422
428
|
# 2. load the toml file and check the given word
|
@@ -426,7 +432,7 @@ end
|
|
426
432
|
# [abcd.tYPe]
|
427
433
|
#
|
428
434
|
def lookup(library, dict, file, word)
|
429
|
-
sheet_content = load_sheet(library, dict, file)
|
435
|
+
sheet_content = load_sheet(library, dict, file)
|
430
436
|
return false if sheet_content.nil?
|
431
437
|
|
432
438
|
info = sheet_content[word]
|
@@ -435,9 +441,9 @@ def lookup(library, dict, file, word)
|
|
435
441
|
# Warn if the info is empty. For example:
|
436
442
|
# emacs = { }
|
437
443
|
if info.size == 0
|
438
|
-
puts red("WARN: Lack of everything of the given word
|
444
|
+
puts red("WARN: Lack of everything of the given word
|
439
445
|
Please consider fixing this in the dict `#{dict}`")
|
440
|
-
exit
|
446
|
+
exit
|
441
447
|
end
|
442
448
|
|
443
449
|
|
@@ -446,7 +452,7 @@ def lookup(library, dict, file, word)
|
|
446
452
|
type_1_exist_flag = false
|
447
453
|
|
448
454
|
# if already jump, don't check the word itself
|
449
|
-
is_jump = false
|
455
|
+
is_jump = false
|
450
456
|
|
451
457
|
# synonym info print
|
452
458
|
if same_key = info['same']
|
@@ -462,8 +468,8 @@ def lookup(library, dict, file, word)
|
|
462
468
|
# To developer:
|
463
469
|
# The word should at least has one of `desc` and `more`
|
464
470
|
# But when none exists, this may not be considered wrong,
|
465
|
-
# Because the type2 make the case too.
|
466
|
-
#
|
471
|
+
# Because the type2 make the case too.
|
472
|
+
#
|
467
473
|
# So, just ignore it, even if it's really a mistake(insignificant)
|
468
474
|
# by dictionary maintainers.
|
469
475
|
#
|
@@ -493,7 +499,7 @@ def lookup(library, dict, file, word)
|
|
493
499
|
else
|
494
500
|
pp_info(info0)
|
495
501
|
end
|
496
|
-
|
502
|
+
|
497
503
|
# last meaning doesn't show this separate line
|
498
504
|
print blue(bold("OR")),"\n" unless categories.last == meaning
|
499
505
|
end
|
@@ -511,33 +517,33 @@ end
|
|
511
517
|
#
|
512
518
|
# 1. Search the default library first
|
513
519
|
# 2. Search the extra library if it does exist
|
514
|
-
#
|
520
|
+
#
|
515
521
|
# The `search` is done via the `lookup` function. It will print
|
516
522
|
# the info while finding. If `lookup` always return false then
|
517
523
|
# means lacking of this word in our dicts. So a welcomed
|
518
524
|
# contribution is printed on the screen.
|
519
525
|
#
|
520
526
|
def resolve_word(word)
|
521
|
-
|
527
|
+
|
522
528
|
add_default_dicts_if_none_exists
|
523
529
|
|
524
530
|
word = word.downcase # downcase! would lead to frozen error in Ruby 2.7.2
|
525
531
|
# The index is the toml file we'll look into
|
526
532
|
index = word.chr
|
527
|
-
case index
|
528
|
-
when '0'..'9'
|
533
|
+
case index
|
534
|
+
when '0'..'9'
|
529
535
|
index = '0-9'
|
530
536
|
end
|
531
537
|
|
532
538
|
# cache lookup's results
|
533
539
|
results = []
|
534
|
-
|
540
|
+
|
535
541
|
# First consider the default library
|
536
542
|
default = Dir.children(CR_DEFAULT_LIBRARY)
|
537
543
|
default.each do |dict|
|
538
544
|
results << lookup(CR_DEFAULT_LIBRARY,dict,index,word)
|
539
545
|
end
|
540
|
-
|
546
|
+
|
541
547
|
# Then is the extra library
|
542
548
|
if CR_EXTRA_LIBRARY
|
543
549
|
extra = Dir.children(CR_EXTRA_LIBRARY)
|
@@ -550,23 +556,28 @@ def resolve_word(word)
|
|
550
556
|
puts <<-NotFound
|
551
557
|
cr: Not found anything.
|
552
558
|
|
553
|
-
You
|
554
|
-
|
559
|
+
You could
|
560
|
+
|
561
|
+
#{blue("case 1: Update all dicts")}
|
562
|
+
|
563
|
+
#{yellow("$cr -u")}
|
564
|
+
|
565
|
+
#{blue("case 2: List available official and feature dicts")}
|
566
|
+
|
567
|
+
#{yellow("$cr -l")}
|
568
|
+
|
569
|
+
#{yellow("$cr -a repo")} (Add a specific dict to default lib)
|
570
|
+
|
571
|
+
#{blue("case 3: Contribute to theses dicts")}
|
555
572
|
|
556
|
-
|
557
|
-
|
558
|
-
`cr -l` to list available official dicts
|
559
|
-
|
560
|
-
`cr -a repo` to add some dicts
|
561
|
-
|
562
|
-
3. Contribute to theses dicts
|
573
|
+
Visit: https://github.com/cryptic-resolver
|
563
574
|
|
564
575
|
NotFound
|
565
576
|
|
566
577
|
else
|
567
578
|
return
|
568
579
|
end
|
569
|
-
|
580
|
+
|
570
581
|
end
|
571
582
|
|
572
583
|
|
@@ -592,15 +603,15 @@ end
|
|
592
603
|
# This `search_word_internal` routine is quite like `resolve_word`
|
593
604
|
# Notice:
|
594
605
|
# We handle two cases
|
595
|
-
#
|
606
|
+
#
|
596
607
|
# 1. the 'pattern' is the regexp itself
|
597
608
|
# 2. the 'pattern' is like '/blah/'
|
598
|
-
#
|
609
|
+
#
|
599
610
|
# The second is what Ruby and Perl users like to do, handle it!
|
600
611
|
#
|
601
612
|
def search_word_internal(pattern, library)
|
602
613
|
|
603
|
-
if pattern.nil?
|
614
|
+
if pattern.nil?
|
604
615
|
puts bold(red("cr: Need an argument!"))
|
605
616
|
exit -1
|
606
617
|
end
|
@@ -612,7 +623,7 @@ def search_word_internal(pattern, library)
|
|
612
623
|
else
|
613
624
|
regexp = %r[#{pattern}]
|
614
625
|
end
|
615
|
-
|
626
|
+
|
616
627
|
found_or_not = false
|
617
628
|
|
618
629
|
#
|
@@ -628,7 +639,7 @@ def search_word_internal(pattern, library)
|
|
628
639
|
sheets.each do |sheet|
|
629
640
|
sheet_content = load_sheet(library, dict, File.basename(sheet,'.toml'))
|
630
641
|
|
631
|
-
sheet_content.keys.each do
|
642
|
+
sheet_content.keys.each do
|
632
643
|
if _1 =~ regexp
|
633
644
|
found_or_not = true
|
634
645
|
similar_words_in_a_dict << _1
|
@@ -643,7 +654,7 @@ def search_word_internal(pattern, library)
|
|
643
654
|
LsTable.ls(similar_words_in_a_dict) do |e|
|
644
655
|
puts blue(e)
|
645
656
|
end
|
646
|
-
puts
|
657
|
+
puts
|
647
658
|
end
|
648
659
|
end
|
649
660
|
return found_or_not
|
@@ -661,7 +672,7 @@ Usage:
|
|
661
672
|
cr -c => Print word count
|
662
673
|
cr -l => List local dicts and official dicts
|
663
674
|
cr -u => Update all dicts in Default library
|
664
|
-
|
675
|
+
|
665
676
|
cr -a repo.git => Add a new dict
|
666
677
|
cr -a user/repo => Add a new dict from Github
|
667
678
|
cr -a repo => Add an official dict from Github
|
@@ -687,18 +698,18 @@ end
|
|
687
698
|
# 1. List Default library's dicts
|
688
699
|
# 2. List Extra library's dicts
|
689
700
|
# 3. List official dicts
|
690
|
-
#
|
701
|
+
#
|
691
702
|
def list_dicts
|
692
|
-
Dir.chdir CR_DEFAULT_LIBRARY do
|
703
|
+
Dir.chdir CR_DEFAULT_LIBRARY do
|
693
704
|
puts blue("=> Default library: #{CR_DEFAULT_LIBRARY}")
|
694
705
|
Dir.children(CR_DEFAULT_LIBRARY).each_with_index do |dict,i|
|
695
706
|
puts "#{blue(i+1)}. #{bold(green(dict))}"
|
696
707
|
end
|
697
708
|
end
|
698
709
|
|
699
|
-
if CR_EXTRA_LIBRARY
|
710
|
+
if CR_EXTRA_LIBRARY
|
700
711
|
puts
|
701
|
-
Dir.chdir CR_EXTRA_LIBRARY do
|
712
|
+
Dir.chdir CR_EXTRA_LIBRARY do
|
702
713
|
puts blue("=> Extra library: #{CR_EXTRA_LIBRARY}")
|
703
714
|
Dir.children(CR_EXTRA_LIBRARY).each_with_index do |dict,i|
|
704
715
|
puts "#{blue(i+1)}. #{bold(green(dict))}"
|
@@ -721,9 +732,9 @@ $DefaultLibWordCount = 0
|
|
721
732
|
$ExtraLibWordCount = 0
|
722
733
|
|
723
734
|
def count_dict_words(library, dict)
|
724
|
-
|
735
|
+
|
725
736
|
dict_dir = library + "/#{dict}"
|
726
|
-
|
737
|
+
|
727
738
|
wc = 0
|
728
739
|
|
729
740
|
Dir.children(dict_dir).each do |entry|
|
@@ -757,6 +768,9 @@ def word_count(p:)
|
|
757
768
|
|
758
769
|
if CR_EXTRA_LIBRARY
|
759
770
|
extra_lib = Dir.children(CR_EXTRA_LIBRARY)
|
771
|
+
extra_lib.reject! do |f|
|
772
|
+
File.file? f
|
773
|
+
end
|
760
774
|
# Count extra library
|
761
775
|
unless extra_lib.empty?
|
762
776
|
wc = 0
|
@@ -770,7 +784,7 @@ def word_count(p:)
|
|
770
784
|
end
|
771
785
|
$TwoLibWordCount = $DefaultLibWordCount + $ExtraLibWordCount
|
772
786
|
|
773
|
-
if p
|
787
|
+
if p
|
774
788
|
puts
|
775
789
|
puts "#{$DefaultLibWordCount.to_s.rjust(4)} words in Default library"
|
776
790
|
puts "#{$ExtraLibWordCount.to_s.rjust(4) } words in Extra library"
|
@@ -790,12 +804,12 @@ when '-v' then print_version
|
|
790
804
|
when '-h' then help
|
791
805
|
when '-l' then list_dicts
|
792
806
|
when '-c' then word_count(p: true)
|
793
|
-
when '-u' then update_dicts
|
807
|
+
when '-u' then update_dicts
|
794
808
|
when '-s' then search_word ARGV.shift
|
795
809
|
when '-a' then add_dict ARGV.shift
|
796
|
-
when '-d' then del_dict ARGV.shift
|
797
|
-
when '--help'
|
810
|
+
when '-d' then del_dict ARGV.shift
|
811
|
+
when '--help'
|
798
812
|
help
|
799
813
|
else
|
800
814
|
resolve_word arg
|
801
|
-
end
|
815
|
+
end
|
data/lib/cr.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# File : cr.rb
|
3
3
|
# Authors : ccmywish <ccmywish@qq.com>
|
4
4
|
# Created on : <2022-04-15>
|
5
|
-
# Last modified : <
|
5
|
+
# Last modified : <2023-02-05>
|
6
6
|
#
|
7
7
|
# cr:
|
8
8
|
#
|
@@ -10,18 +10,22 @@
|
|
10
10
|
#
|
11
11
|
# ------------------------------------------------------
|
12
12
|
|
13
|
-
CR_GEM_VERSION = "4.0.
|
13
|
+
CR_GEM_VERSION = "4.0.3"
|
14
14
|
|
15
15
|
|
16
16
|
CR_OFFICIAL_DICTS = <<-EOF
|
17
17
|
Default:
|
18
18
|
common computer windows
|
19
|
-
linux
|
19
|
+
linux technology
|
20
20
|
|
21
21
|
Field:
|
22
|
-
economy medicine
|
23
|
-
mechanical science
|
22
|
+
electronics economy medicine
|
23
|
+
mechanical science math
|
24
24
|
|
25
25
|
Specific:
|
26
26
|
dos x86 signal
|
27
|
-
|
27
|
+
|
28
|
+
Feature:
|
29
|
+
ccmywish/CRuby-Source-Code-Dictionary
|
30
|
+
|
31
|
+
EOF
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cr.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ccmywish
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tomlrb
|
@@ -70,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '0'
|
72
72
|
requirements: []
|
73
|
-
rubygems_version: 3.3.
|
73
|
+
rubygems_version: 3.3.26
|
74
74
|
signing_key:
|
75
75
|
specification_version: 4
|
76
76
|
summary: 'cr: Cryptic Resolver'
|