lyracyst 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/bin/lyracyst +160 -36
- data/lib/lyracyst.rb +157 -33
- data/lib/lyracyst/rhymebrain.rb +4 -136
- data/lib/lyracyst/rhymebrain/combine.rb +42 -0
- data/lib/lyracyst/rhymebrain/info.rb +73 -0
- data/lib/lyracyst/rhymebrain/rhyme.rb +39 -0
- data/lib/lyracyst/rhymebrain/word.rb +27 -0
- data/lib/lyracyst/urban.rb +62 -0
- data/lib/lyracyst/version.rb +1 -1
- data/lib/lyracyst/wordnik.rb +8 -323
- data/lib/lyracyst/wordnik/define.rb +50 -0
- data/lib/lyracyst/wordnik/example.rb +45 -0
- data/lib/lyracyst/wordnik/hyphen.rb +58 -0
- data/lib/lyracyst/wordnik/origin.rb +76 -0
- data/lib/lyracyst/wordnik/phrase.rb +48 -0
- data/lib/lyracyst/wordnik/pronounce.rb +45 -0
- data/lib/lyracyst/wordnik/relate.rb +48 -0
- data/lib/lyracyst/wordnik/word.rb +43 -0
- metadata +50 -25
- data/LICENSE.md +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb07368fe2368b27ee37ec8f70d7f2d2a148db91
|
4
|
+
data.tar.gz: 22429d86922fcb5e73fe5a98981923da40e8d46b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 500198b5c4ee3a14352f07b62f0efd98f01dc62506fc2e93d9e851278537824a3b16c389afbe3e94d4b3f0999c399615255753755c541d25ff424d6d57ea10ec
|
7
|
+
data.tar.gz: 00aa7522afc18725af26ae6076fe31d4376bb18877e07db6baccaac69e2adced4757103dc675923688b10b11998a6ddc6745c27bb2f68967969380ed5f15a750
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
Changelog
|
2
2
|
===
|
3
3
|
|
4
|
+
Version 0.0.8 - Major Improvements
|
5
|
+
- The biggest milestone yet!
|
6
|
+
- Most Wordnik search functions now work
|
7
|
+
- Removed Altervista related words in favor of using Wordnik
|
8
|
+
- Migrated from [ARPABET](http://arpabet.heroku.com) to [Rhymebrain](http://rhymebrain.com/api.html) and using it to fetch rhymes, word info, and portmanteaus
|
9
|
+
- Migrated from [commander](http://github.com/visionmedia/commander) to [gli](http://github.com/davetron5000/gli) for CLI interface
|
10
|
+
- Configuration file for defaults (~/.lyracyst.yml)
|
11
|
+
|
4
12
|
Version 0.0.7 - Tests, Optimization, & More Cleanup
|
5
13
|
- Better docs
|
6
14
|
- Testing on more Ruby implementations
|
data/bin/lyracyst
CHANGED
@@ -1,27 +1,80 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# coding: utf-8
|
3
|
+
#%w(curb em-synchrony em-http eventmachine excon httpclient httpi net/http/persistent rainbow).map {|lib| require lib}
|
4
|
+
#%w(json/ext json/pure multi_json oj yajl).map {|lib| require lib}
|
5
|
+
#%w(libxml multi_xml ox rexml/document).map {|lib| require lib}
|
3
6
|
require 'gli'
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
require '
|
7
|
+
require 'lyracyst/rhymebrain'
|
8
|
+
require 'lyracyst/urban'
|
9
|
+
require 'lyracyst/version'
|
10
|
+
require 'lyracyst/wordnik'
|
11
|
+
require 'xml-fu'
|
12
|
+
module Lyracyst
|
13
|
+
|
14
|
+
HTTPI.log = false
|
15
|
+
|
16
|
+
# Optionally sets HTTP adapter with httpi. Supports [:httpclient,
|
17
|
+
# :curb, :em_http, :net_http_persistent, :excon, :rack]
|
18
|
+
#
|
19
|
+
# @param http [Symbol] The http adapter to use. Smart defaults.
|
20
|
+
def self.set_http(http)
|
21
|
+
HTTPI.adapter = http
|
22
|
+
end
|
23
|
+
|
24
|
+
# Optionally sets JSON adapter with multi_json. Supports [:oj,
|
25
|
+
# :yajl, :json_gem, :json_pure]
|
26
|
+
#
|
27
|
+
# @param mj [Symbol] The JSON adapter to use. Smart defaults.
|
28
|
+
def self.set_json(mj)
|
29
|
+
MultiJson.use(mj)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Optionally sets XML adapter with multi_xml. Supports [:ox,
|
33
|
+
# :libxml, :nokogiri, :rexml]
|
34
|
+
#
|
35
|
+
# @param mx [Symbol] The XML adapter to use. Smart defaults.
|
36
|
+
def self.set_xml(mx)
|
37
|
+
MultiXml.parser = mx
|
38
|
+
end
|
39
|
+
|
40
|
+
# Prints colored element label.
|
41
|
+
#
|
42
|
+
# @param label [String] The label to print
|
43
|
+
def self.label(label)
|
44
|
+
print Rainbow('[').blue.bright
|
45
|
+
print Rainbow(label).green.bright
|
46
|
+
print Rainbow(']').blue.bright
|
47
|
+
print Rainbow('|').bright
|
48
|
+
end
|
49
|
+
end
|
7
50
|
|
8
51
|
include GLI::App
|
9
|
-
program_desc 'A powerful word search tool that fetches definitions, related words, rhymes, and much more.'
|
52
|
+
program_desc 'A powerful word search tool that fetches definitions, related words, rhymes, and much more. Rhymes are provided by rhymebrain.com.'
|
10
53
|
config_file '.lyracyst.yml'
|
11
54
|
version Lyracyst::VERSION
|
12
55
|
|
56
|
+
desc 'Force overwrite'
|
57
|
+
long_desc 'Overwrites existing JSON & XML files'
|
58
|
+
switch [:f,:force]
|
59
|
+
|
13
60
|
desc 'HTTP adapter'
|
14
61
|
long_desc 'httpclient, curb, em_http, net_http_persistent, excon, rack'
|
15
|
-
default_value :
|
62
|
+
default_value :net_http_persistent
|
16
63
|
arg_name 'http'
|
17
64
|
flag [:h,:http]
|
18
65
|
|
19
66
|
desc 'JSON adapter'
|
20
67
|
long_desc 'oj, yajl, json_gem, json_pure'
|
21
|
-
default_value :
|
68
|
+
default_value :oj
|
22
69
|
arg_name 'json'
|
23
70
|
flag [:j,:json]
|
24
71
|
|
72
|
+
desc 'Output file'
|
73
|
+
long_desc 'filename.json or filename.xml'
|
74
|
+
default_value nil
|
75
|
+
arg_name 'outfile'
|
76
|
+
flag [:o,:out]
|
77
|
+
|
25
78
|
desc 'XML adapter'
|
26
79
|
long_desc 'ox, libxml, nokogiri, rexml'
|
27
80
|
default_value :rexml
|
@@ -46,7 +99,7 @@ command :define do |c|
|
|
46
99
|
part = options[:p]
|
47
100
|
params = {limit: 10, increl: false, canon: false, inctags: false}
|
48
101
|
params[:defdict] = options[:defdict]
|
49
|
-
df = Lyracyst::Wordnik.new
|
102
|
+
df = Lyracyst::Wordnik::Define.new
|
50
103
|
df.get_def(search, part, params)
|
51
104
|
end
|
52
105
|
end
|
@@ -69,7 +122,7 @@ command :example do |c|
|
|
69
122
|
params = {incdups: false, canon: false}
|
70
123
|
params[:skip] = skip
|
71
124
|
params[:limit] = limit
|
72
|
-
ex = Lyracyst::Wordnik.new
|
125
|
+
ex = Lyracyst::Wordnik::Example.new
|
73
126
|
ex.get_ex(search, params)
|
74
127
|
end
|
75
128
|
end
|
@@ -91,7 +144,7 @@ command :relate do |c|
|
|
91
144
|
rellimit = options[:rell]
|
92
145
|
params = {canon: false}
|
93
146
|
params[:rellimit] = rellimit
|
94
|
-
ex = Lyracyst::Wordnik.new
|
147
|
+
ex = Lyracyst::Wordnik::Relate.new
|
95
148
|
ex.get_rel(search, params, reltypes)
|
96
149
|
end
|
97
150
|
end
|
@@ -120,7 +173,7 @@ command :pronounce do |c|
|
|
120
173
|
params = {canon: false}
|
121
174
|
params[:source] = source
|
122
175
|
params[:limit] = limit
|
123
|
-
pr = Lyracyst::Wordnik.new
|
176
|
+
pr = Lyracyst::Wordnik::Pronounce.new
|
124
177
|
pr.get_pro(search, params, ptype)
|
125
178
|
end
|
126
179
|
end
|
@@ -143,7 +196,7 @@ command :hyphen do |c|
|
|
143
196
|
params = {canon: false}
|
144
197
|
if source != nil then params[:source] = source; end
|
145
198
|
params[:limit] = limit
|
146
|
-
hyph = Lyracyst::Wordnik.new
|
199
|
+
hyph = Lyracyst::Wordnik::Hyphen.new
|
147
200
|
hyph.get_hyph(search, params)
|
148
201
|
end
|
149
202
|
end
|
@@ -166,7 +219,7 @@ command :phrase do |c|
|
|
166
219
|
params = {canon: false}
|
167
220
|
params[:limit] = limit
|
168
221
|
params[:wlmi] = wlmi
|
169
|
-
phra = Lyracyst::Wordnik.new
|
222
|
+
phra = Lyracyst::Wordnik::Phrase.new
|
170
223
|
phra.get_phr(search, params)
|
171
224
|
end
|
172
225
|
end
|
@@ -177,12 +230,12 @@ command :origin do |c|
|
|
177
230
|
c.action do |global_options,options,args|
|
178
231
|
search = args[0]
|
179
232
|
params = {canon: false}
|
180
|
-
orig = Lyracyst::Wordnik.new
|
233
|
+
orig = Lyracyst::Wordnik::Origin.new
|
181
234
|
orig.get_et(search, params)
|
182
235
|
end
|
183
236
|
end
|
184
237
|
|
185
|
-
desc 'Fetches rhymes from Rhymebrain'
|
238
|
+
desc 'Fetches rhymes from Rhymebrain.com'
|
186
239
|
arg_name 'word'
|
187
240
|
command :rhyme do |c|
|
188
241
|
c.desc 'ISO639-1 language code (optional). Eg. en, de, es, fr, ru'
|
@@ -200,12 +253,12 @@ command :rhyme do |c|
|
|
200
253
|
params = {}
|
201
254
|
params[:lang] = lang
|
202
255
|
params[:max] = max
|
203
|
-
rhym = Lyracyst::Rhymebrain.new
|
256
|
+
rhym = Lyracyst::Rhymebrain::Rhyme.new
|
204
257
|
rhym.get_rhyme(search, params)
|
205
258
|
end
|
206
259
|
end
|
207
260
|
|
208
|
-
desc 'Fetches word info from Rhymebrain'
|
261
|
+
desc 'Fetches word info from Rhymebrain.com'
|
209
262
|
arg_name 'word'
|
210
263
|
command :info do |c|
|
211
264
|
c.desc 'ISO639-1 language code (optional). Eg. en, de, es, fr, ru'
|
@@ -223,12 +276,12 @@ command :info do |c|
|
|
223
276
|
params = {}
|
224
277
|
params[:lang] = lang
|
225
278
|
params[:max] = max
|
226
|
-
info = Lyracyst::Rhymebrain.new
|
279
|
+
info = Lyracyst::Rhymebrain::Info.new
|
227
280
|
info.get_info(search, params)
|
228
281
|
end
|
229
282
|
end
|
230
283
|
|
231
|
-
desc 'Fetches combined words (portmanteaus) from Rhymebrain'
|
284
|
+
desc 'Fetches combined words (portmanteaus) from Rhymebrain.com'
|
232
285
|
arg_name 'word'
|
233
286
|
command :combine do |c|
|
234
287
|
c.desc 'ISO639-1 language code (optional). Eg. en, de, es, fr, ru'
|
@@ -246,41 +299,61 @@ arg_name 'word'
|
|
246
299
|
params = {}
|
247
300
|
params[:lang] = lang
|
248
301
|
params[:max] = max
|
249
|
-
port = Lyracyst::Rhymebrain.new
|
302
|
+
port = Lyracyst::Rhymebrain::Combine.new
|
250
303
|
port.get_port(search, params)
|
251
304
|
end
|
252
305
|
end
|
253
306
|
|
307
|
+
desc 'Fetches definitions from Urban Dictionary'
|
308
|
+
arg_name 'word'
|
309
|
+
command :urban do |c|
|
310
|
+
c.action do |global_options,options,args|
|
311
|
+
search = args[0]
|
312
|
+
ur = Lyracyst::Urban::Define.new
|
313
|
+
ur.get_def(search)
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
254
317
|
pre do |global,command,options,args|
|
255
318
|
# Pre logic here
|
256
319
|
# Return true to proceed; false to abort and not call the
|
257
320
|
# chosen command
|
258
321
|
# Use skips_pre before a command to skip this block
|
259
322
|
# on that command only
|
260
|
-
|
323
|
+
if global[:o] != nil
|
324
|
+
outfile = global[:o]
|
325
|
+
if outfile =~ /\w*\.json/
|
326
|
+
$fmt = :json
|
327
|
+
elsif outfile =~ /\w*.xml/
|
328
|
+
$fmt = :xml
|
329
|
+
else
|
330
|
+
puts 'Invalid file extension.'
|
331
|
+
end
|
332
|
+
$tofile = []
|
333
|
+
end
|
261
334
|
http = global[:h]
|
262
335
|
json = global[:j]
|
263
336
|
xml = global[:x]
|
264
337
|
if http.class != Symbol then http = http.to_sym; end
|
265
|
-
|
338
|
+
Lyracyst.set_http(http)
|
266
339
|
if json.class != Symbol then json = json.to_sym; end
|
267
|
-
|
340
|
+
Lyracyst.set_json(json)
|
268
341
|
if xml.class != Symbol then xml = xml.to_sym; end
|
269
|
-
|
342
|
+
Lyracyst.set_xml(xml)
|
270
343
|
label = 'Global options'
|
271
|
-
|
272
|
-
print "
|
344
|
+
Lyracyst.label(label)
|
345
|
+
print "➜#{global}➜"
|
273
346
|
label = 'Command'
|
274
|
-
|
275
|
-
print "
|
347
|
+
Lyracyst.label(label)
|
348
|
+
print "➜#{command.name}➜"
|
276
349
|
label = 'Command options'
|
277
|
-
|
278
|
-
print "
|
350
|
+
Lyracyst.label(label)
|
351
|
+
print "➜#{options}➜"
|
279
352
|
label = 'Args'
|
280
|
-
|
281
|
-
print "
|
353
|
+
Lyracyst.label(label)
|
354
|
+
print "➜#{args}➜"
|
282
355
|
label = 'Bootstrapped'
|
283
|
-
|
356
|
+
Lyracyst.label(label)
|
284
357
|
puts ''
|
285
358
|
true
|
286
359
|
end
|
@@ -289,9 +362,61 @@ post do |global,command,options,args|
|
|
289
362
|
# Post logic here
|
290
363
|
# Use skips_post before a command to skip this
|
291
364
|
# block on that command only
|
292
|
-
|
293
|
-
|
294
|
-
|
365
|
+
if $fmt != nil
|
366
|
+
outfile = global[:o]
|
367
|
+
if File.exist?(outfile) && global[:f] == true
|
368
|
+
if $fmt == :json
|
369
|
+
fo = File.open(outfile, 'w+')
|
370
|
+
fo.print MultiJson.dump($tofile)
|
371
|
+
fo.close
|
372
|
+
elsif $fmt == :xml
|
373
|
+
fo = File.open(outfile, 'w+')
|
374
|
+
fo.print '<?xml version="1.0" encoding="utf-8"?>'
|
375
|
+
fo.print XmlFu.xml($tofile)
|
376
|
+
fo.close
|
377
|
+
else
|
378
|
+
puts 'Invalid file extension.'
|
379
|
+
end
|
380
|
+
puts Rainbow("Word search was written to #{outfile}.").bright
|
381
|
+
end
|
382
|
+
if File.exist?(outfile) && global[:f] == false
|
383
|
+
puts Rainbow("#{outfile} exists. Overwrite? y/n ").bright
|
384
|
+
ans = gets
|
385
|
+
if ans =~ /y/
|
386
|
+
if $fmt == :json
|
387
|
+
fo = File.open(outfile, 'w+')
|
388
|
+
fo.print MultiJson.dump($tofile)
|
389
|
+
fo.close
|
390
|
+
elsif $fmt == :xml
|
391
|
+
fo = File.open(outfile, 'w+')
|
392
|
+
fo.print '<?xml version="1.0" encoding="utf-8"?>'
|
393
|
+
fo.print XmlFu.xml($tofile)
|
394
|
+
fo.close
|
395
|
+
else
|
396
|
+
puts 'Invalid file extension.'
|
397
|
+
end
|
398
|
+
puts Rainbow("Word search was written to #{outfile}.").bright
|
399
|
+
else
|
400
|
+
puts 'Please try again with a different filename.'
|
401
|
+
end
|
402
|
+
else
|
403
|
+
if $fmt == :json
|
404
|
+
fo = File.open(outfile, 'w+')
|
405
|
+
fo.print MultiJson.dump($tofile)
|
406
|
+
fo.close
|
407
|
+
elsif $fmt == :xml
|
408
|
+
fo = File.open(outfile, 'w+')
|
409
|
+
fo.print '<?xml version="1.0" encoding="utf-8"?>'
|
410
|
+
fo.print XmlFu.xml($tofile)
|
411
|
+
fo.close
|
412
|
+
else
|
413
|
+
puts 'Invalid file extension.'
|
414
|
+
end
|
415
|
+
puts Rainbow("Word search was written to #{outfile}.").bright
|
416
|
+
end
|
417
|
+
end
|
418
|
+
label = 'Shutdown'
|
419
|
+
Lyracyst.label(label)
|
295
420
|
puts ''
|
296
421
|
end
|
297
422
|
|
@@ -300,5 +425,4 @@ on_error do |exception|
|
|
300
425
|
# return false to skip default error handling
|
301
426
|
true
|
302
427
|
end
|
303
|
-
|
304
428
|
exit run(ARGV)
|
data/lib/lyracyst.rb
CHANGED
@@ -1,27 +1,80 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# coding: utf-8
|
3
|
+
#%w(curb em-synchrony em-http eventmachine excon httpclient httpi net/http/persistent rainbow).map {|lib| require lib}
|
4
|
+
#%w(json/ext json/pure multi_json oj yajl).map {|lib| require lib}
|
5
|
+
#%w(libxml multi_xml ox rexml/document).map {|lib| require lib}
|
3
6
|
require 'gli'
|
4
7
|
require 'lyracyst/rhymebrain'
|
8
|
+
require 'lyracyst/urban'
|
5
9
|
require 'lyracyst/version'
|
6
10
|
require 'lyracyst/wordnik'
|
11
|
+
require 'xml-fu'
|
12
|
+
module Lyracyst
|
13
|
+
|
14
|
+
HTTPI.log = false
|
15
|
+
|
16
|
+
# Optionally sets HTTP adapter with httpi. Supports [:httpclient,
|
17
|
+
# :curb, :em_http, :net_http_persistent, :excon, :rack]
|
18
|
+
#
|
19
|
+
# @param http [Symbol] The http adapter to use. Smart defaults.
|
20
|
+
def self.set_http(http)
|
21
|
+
HTTPI.adapter = http
|
22
|
+
end
|
23
|
+
|
24
|
+
# Optionally sets JSON adapter with multi_json. Supports [:oj,
|
25
|
+
# :yajl, :json_gem, :json_pure]
|
26
|
+
#
|
27
|
+
# @param mj [Symbol] The JSON adapter to use. Smart defaults.
|
28
|
+
def self.set_json(mj)
|
29
|
+
MultiJson.use(mj)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Optionally sets XML adapter with multi_xml. Supports [:ox,
|
33
|
+
# :libxml, :nokogiri, :rexml]
|
34
|
+
#
|
35
|
+
# @param mx [Symbol] The XML adapter to use. Smart defaults.
|
36
|
+
def self.set_xml(mx)
|
37
|
+
MultiXml.parser = mx
|
38
|
+
end
|
39
|
+
|
40
|
+
# Prints colored element label.
|
41
|
+
#
|
42
|
+
# @param label [String] The label to print
|
43
|
+
def self.label(label)
|
44
|
+
print Rainbow('[').blue.bright
|
45
|
+
print Rainbow(label).green.bright
|
46
|
+
print Rainbow(']').blue.bright
|
47
|
+
print Rainbow('|').bright
|
48
|
+
end
|
49
|
+
end
|
7
50
|
|
8
51
|
include GLI::App
|
9
|
-
program_desc 'A powerful word search tool that fetches definitions, related words, rhymes, and much more.'
|
52
|
+
program_desc 'A powerful word search tool that fetches definitions, related words, rhymes, and much more. Rhymes are provided by rhymebrain.com.'
|
10
53
|
config_file '.lyracyst.yml'
|
11
54
|
version Lyracyst::VERSION
|
12
55
|
|
56
|
+
desc 'Force overwrite'
|
57
|
+
long_desc 'Overwrites existing JSON & XML files'
|
58
|
+
switch [:f,:force]
|
59
|
+
|
13
60
|
desc 'HTTP adapter'
|
14
61
|
long_desc 'httpclient, curb, em_http, net_http_persistent, excon, rack'
|
15
|
-
default_value :
|
62
|
+
default_value :net_http_persistent
|
16
63
|
arg_name 'http'
|
17
64
|
flag [:h,:http]
|
18
65
|
|
19
66
|
desc 'JSON adapter'
|
20
67
|
long_desc 'oj, yajl, json_gem, json_pure'
|
21
|
-
default_value :
|
68
|
+
default_value :oj
|
22
69
|
arg_name 'json'
|
23
70
|
flag [:j,:json]
|
24
71
|
|
72
|
+
desc 'Output file'
|
73
|
+
long_desc 'filename.json or filename.xml'
|
74
|
+
default_value nil
|
75
|
+
arg_name 'outfile'
|
76
|
+
flag [:o,:out]
|
77
|
+
|
25
78
|
desc 'XML adapter'
|
26
79
|
long_desc 'ox, libxml, nokogiri, rexml'
|
27
80
|
default_value :rexml
|
@@ -46,7 +99,7 @@ command :define do |c|
|
|
46
99
|
part = options[:p]
|
47
100
|
params = {limit: 10, increl: false, canon: false, inctags: false}
|
48
101
|
params[:defdict] = options[:defdict]
|
49
|
-
df = Lyracyst::Wordnik.new
|
102
|
+
df = Lyracyst::Wordnik::Define.new
|
50
103
|
df.get_def(search, part, params)
|
51
104
|
end
|
52
105
|
end
|
@@ -69,7 +122,7 @@ command :example do |c|
|
|
69
122
|
params = {incdups: false, canon: false}
|
70
123
|
params[:skip] = skip
|
71
124
|
params[:limit] = limit
|
72
|
-
ex = Lyracyst::Wordnik.new
|
125
|
+
ex = Lyracyst::Wordnik::Example.new
|
73
126
|
ex.get_ex(search, params)
|
74
127
|
end
|
75
128
|
end
|
@@ -91,7 +144,7 @@ command :relate do |c|
|
|
91
144
|
rellimit = options[:rell]
|
92
145
|
params = {canon: false}
|
93
146
|
params[:rellimit] = rellimit
|
94
|
-
ex = Lyracyst::Wordnik.new
|
147
|
+
ex = Lyracyst::Wordnik::Relate.new
|
95
148
|
ex.get_rel(search, params, reltypes)
|
96
149
|
end
|
97
150
|
end
|
@@ -120,7 +173,7 @@ command :pronounce do |c|
|
|
120
173
|
params = {canon: false}
|
121
174
|
params[:source] = source
|
122
175
|
params[:limit] = limit
|
123
|
-
pr = Lyracyst::Wordnik.new
|
176
|
+
pr = Lyracyst::Wordnik::Pronounce.new
|
124
177
|
pr.get_pro(search, params, ptype)
|
125
178
|
end
|
126
179
|
end
|
@@ -143,7 +196,7 @@ command :hyphen do |c|
|
|
143
196
|
params = {canon: false}
|
144
197
|
if source != nil then params[:source] = source; end
|
145
198
|
params[:limit] = limit
|
146
|
-
hyph = Lyracyst::Wordnik.new
|
199
|
+
hyph = Lyracyst::Wordnik::Hyphen.new
|
147
200
|
hyph.get_hyph(search, params)
|
148
201
|
end
|
149
202
|
end
|
@@ -166,7 +219,7 @@ command :phrase do |c|
|
|
166
219
|
params = {canon: false}
|
167
220
|
params[:limit] = limit
|
168
221
|
params[:wlmi] = wlmi
|
169
|
-
phra = Lyracyst::Wordnik.new
|
222
|
+
phra = Lyracyst::Wordnik::Phrase.new
|
170
223
|
phra.get_phr(search, params)
|
171
224
|
end
|
172
225
|
end
|
@@ -177,12 +230,12 @@ command :origin do |c|
|
|
177
230
|
c.action do |global_options,options,args|
|
178
231
|
search = args[0]
|
179
232
|
params = {canon: false}
|
180
|
-
orig = Lyracyst::Wordnik.new
|
233
|
+
orig = Lyracyst::Wordnik::Origin.new
|
181
234
|
orig.get_et(search, params)
|
182
235
|
end
|
183
236
|
end
|
184
237
|
|
185
|
-
desc 'Fetches rhymes from Rhymebrain'
|
238
|
+
desc 'Fetches rhymes from Rhymebrain.com'
|
186
239
|
arg_name 'word'
|
187
240
|
command :rhyme do |c|
|
188
241
|
c.desc 'ISO639-1 language code (optional). Eg. en, de, es, fr, ru'
|
@@ -200,12 +253,12 @@ command :rhyme do |c|
|
|
200
253
|
params = {}
|
201
254
|
params[:lang] = lang
|
202
255
|
params[:max] = max
|
203
|
-
rhym = Lyracyst::Rhymebrain.new
|
256
|
+
rhym = Lyracyst::Rhymebrain::Rhyme.new
|
204
257
|
rhym.get_rhyme(search, params)
|
205
258
|
end
|
206
259
|
end
|
207
260
|
|
208
|
-
desc 'Fetches word info from Rhymebrain'
|
261
|
+
desc 'Fetches word info from Rhymebrain.com'
|
209
262
|
arg_name 'word'
|
210
263
|
command :info do |c|
|
211
264
|
c.desc 'ISO639-1 language code (optional). Eg. en, de, es, fr, ru'
|
@@ -223,12 +276,12 @@ command :info do |c|
|
|
223
276
|
params = {}
|
224
277
|
params[:lang] = lang
|
225
278
|
params[:max] = max
|
226
|
-
info = Lyracyst::Rhymebrain.new
|
279
|
+
info = Lyracyst::Rhymebrain::Info.new
|
227
280
|
info.get_info(search, params)
|
228
281
|
end
|
229
282
|
end
|
230
283
|
|
231
|
-
desc 'Fetches combined words (portmanteaus) from Rhymebrain'
|
284
|
+
desc 'Fetches combined words (portmanteaus) from Rhymebrain.com'
|
232
285
|
arg_name 'word'
|
233
286
|
command :combine do |c|
|
234
287
|
c.desc 'ISO639-1 language code (optional). Eg. en, de, es, fr, ru'
|
@@ -246,41 +299,61 @@ arg_name 'word'
|
|
246
299
|
params = {}
|
247
300
|
params[:lang] = lang
|
248
301
|
params[:max] = max
|
249
|
-
port = Lyracyst::Rhymebrain.new
|
302
|
+
port = Lyracyst::Rhymebrain::Combine.new
|
250
303
|
port.get_port(search, params)
|
251
304
|
end
|
252
305
|
end
|
253
306
|
|
307
|
+
desc 'Fetches definitions from Urban Dictionary'
|
308
|
+
arg_name 'word'
|
309
|
+
command :urban do |c|
|
310
|
+
c.action do |global_options,options,args|
|
311
|
+
search = args[0]
|
312
|
+
ur = Lyracyst::Urban::Define.new
|
313
|
+
ur.get_def(search)
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
254
317
|
pre do |global,command,options,args|
|
255
318
|
# Pre logic here
|
256
319
|
# Return true to proceed; false to abort and not call the
|
257
320
|
# chosen command
|
258
321
|
# Use skips_pre before a command to skip this block
|
259
322
|
# on that command only
|
260
|
-
|
323
|
+
if global[:o] != nil
|
324
|
+
outfile = global[:o]
|
325
|
+
if outfile =~ /\w*\.json/
|
326
|
+
$fmt = :json
|
327
|
+
elsif outfile =~ /\w*.xml/
|
328
|
+
$fmt = :xml
|
329
|
+
else
|
330
|
+
puts 'Invalid file extension.'
|
331
|
+
end
|
332
|
+
$tofile = []
|
333
|
+
end
|
261
334
|
http = global[:h]
|
262
335
|
json = global[:j]
|
263
336
|
xml = global[:x]
|
264
337
|
if http.class != Symbol then http = http.to_sym; end
|
265
|
-
|
338
|
+
Lyracyst.set_http(http)
|
266
339
|
if json.class != Symbol then json = json.to_sym; end
|
267
|
-
|
340
|
+
Lyracyst.set_json(json)
|
268
341
|
if xml.class != Symbol then xml = xml.to_sym; end
|
269
|
-
|
342
|
+
Lyracyst.set_xml(xml)
|
270
343
|
label = 'Global options'
|
271
|
-
|
272
|
-
print "
|
344
|
+
Lyracyst.label(label)
|
345
|
+
print "➜#{global}➜"
|
273
346
|
label = 'Command'
|
274
|
-
|
275
|
-
print "
|
347
|
+
Lyracyst.label(label)
|
348
|
+
print "➜#{command.name}➜"
|
276
349
|
label = 'Command options'
|
277
|
-
|
278
|
-
print "
|
350
|
+
Lyracyst.label(label)
|
351
|
+
print "➜#{options}➜"
|
279
352
|
label = 'Args'
|
280
|
-
|
281
|
-
print "
|
353
|
+
Lyracyst.label(label)
|
354
|
+
print "➜#{args}➜"
|
282
355
|
label = 'Bootstrapped'
|
283
|
-
|
356
|
+
Lyracyst.label(label)
|
284
357
|
puts ''
|
285
358
|
true
|
286
359
|
end
|
@@ -289,9 +362,61 @@ post do |global,command,options,args|
|
|
289
362
|
# Post logic here
|
290
363
|
# Use skips_post before a command to skip this
|
291
364
|
# block on that command only
|
292
|
-
|
293
|
-
|
294
|
-
|
365
|
+
if $fmt != nil
|
366
|
+
outfile = global[:o]
|
367
|
+
if File.exist?(outfile) && global[:f] == true
|
368
|
+
if $fmt == :json
|
369
|
+
fo = File.open(outfile, 'w+')
|
370
|
+
fo.print MultiJson.dump($tofile)
|
371
|
+
fo.close
|
372
|
+
elsif $fmt == :xml
|
373
|
+
fo = File.open(outfile, 'w+')
|
374
|
+
fo.print '<?xml version="1.0" encoding="utf-8"?>'
|
375
|
+
fo.print XmlFu.xml($tofile)
|
376
|
+
fo.close
|
377
|
+
else
|
378
|
+
puts 'Invalid file extension.'
|
379
|
+
end
|
380
|
+
puts Rainbow("Word search was written to #{outfile}.").bright
|
381
|
+
end
|
382
|
+
if File.exist?(outfile) && global[:f] == false
|
383
|
+
puts Rainbow("#{outfile} exists. Overwrite? y/n ").bright
|
384
|
+
ans = gets
|
385
|
+
if ans =~ /y/
|
386
|
+
if $fmt == :json
|
387
|
+
fo = File.open(outfile, 'w+')
|
388
|
+
fo.print MultiJson.dump($tofile)
|
389
|
+
fo.close
|
390
|
+
elsif $fmt == :xml
|
391
|
+
fo = File.open(outfile, 'w+')
|
392
|
+
fo.print '<?xml version="1.0" encoding="utf-8"?>'
|
393
|
+
fo.print XmlFu.xml($tofile)
|
394
|
+
fo.close
|
395
|
+
else
|
396
|
+
puts 'Invalid file extension.'
|
397
|
+
end
|
398
|
+
puts Rainbow("Word search was written to #{outfile}.").bright
|
399
|
+
else
|
400
|
+
puts 'Please try again with a different filename.'
|
401
|
+
end
|
402
|
+
else
|
403
|
+
if $fmt == :json
|
404
|
+
fo = File.open(outfile, 'w+')
|
405
|
+
fo.print MultiJson.dump($tofile)
|
406
|
+
fo.close
|
407
|
+
elsif $fmt == :xml
|
408
|
+
fo = File.open(outfile, 'w+')
|
409
|
+
fo.print '<?xml version="1.0" encoding="utf-8"?>'
|
410
|
+
fo.print XmlFu.xml($tofile)
|
411
|
+
fo.close
|
412
|
+
else
|
413
|
+
puts 'Invalid file extension.'
|
414
|
+
end
|
415
|
+
puts Rainbow("Word search was written to #{outfile}.").bright
|
416
|
+
end
|
417
|
+
end
|
418
|
+
label = 'Shutdown'
|
419
|
+
Lyracyst.label(label)
|
295
420
|
puts ''
|
296
421
|
end
|
297
422
|
|
@@ -300,5 +425,4 @@ on_error do |exception|
|
|
300
425
|
# return false to skip default error handling
|
301
426
|
true
|
302
427
|
end
|
303
|
-
|
304
428
|
exit run(ARGV)
|