lyracyst 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,138 +1,6 @@
1
1
  # coding: utf-8
2
- %w{httpi multi_json rainbow}.map {|lib| require lib}
2
+ require 'lyracyst/rhymebrain/combine'
3
+ require 'lyracyst/rhymebrain/info'
4
+ require 'lyracyst/rhymebrain/rhyme'
5
+ require 'lyracyst/rhymebrain/word'
3
6
 
4
- module Lyracyst
5
- # This class uses the Rhymebrain API to fetch rhymes, word info, and portmanteaus.
6
- class Rhymebrain
7
- HTTPI.log = false
8
-
9
- # Optionally sets HTTP adapter with httpi. Supports [:httpclient,
10
- # :curb, :em_http, :net_http_persistent, :excon, :rack]
11
- #
12
- # @param http [Symbol] The http adapter to use. Smart defaults.
13
- def set_http(http)
14
- HTTPI.adapter = http
15
- end
16
-
17
- # Optionally sets JSON adapter with multi_json. Supports [:oj,
18
- # :yajl, :json_gem, :json_pure]
19
- #
20
- # @param mj [Symbol] The JSON adapter to use. Smart defaults.
21
- def set_json(mj)
22
- MultiJson.use(mj)
23
- end
24
-
25
- # Prints colored element label.
26
- #
27
- # @param label [String] The label to print
28
- def label(label)
29
- print Rainbow("[").blue.bright
30
- print Rainbow(label).green.bright
31
- print Rainbow("] ").blue.bright
32
- end
33
-
34
- # Fetches dynamically generated URL. Functions are Rhymes,
35
- # WordInfo, and Portmaneaus.
36
- #
37
- # @param search [String] The word or phrase to search for.
38
- # @param func [String] The search function to use.
39
- # @param params [Hash] The search parameters to use.
40
- # @param result [String] The search response.
41
- def get_word(search, func, params, result)
42
- prefix = "http://rhymebrain.com/talk?function=get"
43
- word, pcont = "#{prefix}#{func}&word=#{search}&", []
44
- params.map { |k,v|
45
- if k == :lang then pcont.push "lang=#{v}&"; end
46
- if k == :max && k != nil then pcont.push "maxResults=#{v}&"; end
47
- }
48
- url = "#{word}#{pcont.join}"
49
- request = HTTPI::Request.new(url)
50
- getter = HTTPI.get(request)
51
- result = getter.body
52
- end
53
-
54
- # Fetches rhymes using the Rhymebrain API.
55
- #
56
- # @param search [String] The word or phrase to search for.
57
- # @param params [Hash] The search parameters to use.
58
- def get_rhyme(search, params)
59
- func, label, result = 'Rhymes', 'Rhymes', nil
60
- rh = Lyracyst::Rhymebrain.new
61
- result = rh.get_word(search, func, params, result)
62
- result = MultiJson.load(result)
63
- if result != nil
64
- a, b, rcont = 0, result.length - 1, []
65
- while a <= b
66
- match = result[a]
67
- rhyme = match['word']
68
- rcont.push rhyme
69
- a += 1
70
- end
71
- rh.label(label)
72
- print Rainbow('- ').bright
73
- print rcont.join(Rainbow('|').bright)
74
- puts ''
75
- end
76
- end
77
-
78
- # Fetches word info using the Rhymebrain API.
79
- #
80
- # @param search [String] The word or phrase to search for.
81
- # @param params [Hash] The search parameters to use.
82
- def get_info(search, params)
83
- func, label, result = 'WordInfo', 'Word info', nil
84
- wi = Lyracyst::Rhymebrain.new
85
- result = wi.get_word(search, func, params, result)
86
- result = MultiJson.load(result)
87
- if result != nil
88
- word = result['word']
89
- pron = result['pron']
90
- ipa = result['ipa']
91
- flags = result['flags']
92
- syllables = result['syllables']
93
- wi.label(label)
94
- print Rainbow('- Word: ').bright
95
- print "#{word}"
96
- print Rainbow('|Pronunciation: ').bright
97
- print "#{pron}"
98
- print Rainbow('|IPA: ').bright
99
- print "#{ipa}"
100
- print Rainbow('|Syllables: ').bright
101
- print "#{syllables}"
102
- print Rainbow('|Flags: ').bright
103
- fcont = []
104
- if flags =~ /a/ then fcont.push 'The word is offensive.'; end
105
- if flags =~ /b/ then fcont.push 'The word might be found in most dictionaries.'; end
106
- if flags =~ /c/ then fcont.push 'The pronunciation is known with confidence. It was not automatically generated.'; end
107
- puts "#{fcont.join(Rainbow('|').bright)}"
108
- end
109
- end
110
-
111
- # Fetches portmaneaus using the Rhymebrain API.
112
- #
113
- # @param search [String] The word or phrase to search for.
114
- # @param params [Hash] The search parameters to use.
115
- def get_port(search, params)
116
- func, label, result = 'Portmanteaus', 'Portmanteaus', nil
117
- pm = Lyracyst::Rhymebrain.new
118
- result = pm.get_word(search, func, params, result)
119
- result = MultiJson.load(result)
120
- if result != nil
121
- a, b, pmcont = 0, result.length - 1, []
122
- while a <= b
123
- match = result[a]
124
- roots = match['source']
125
- combo = match['combined']
126
- both = "#{Rainbow('Root words: ').bright}#{roots}#{Rainbow('| Combination: ').bright}#{combo}"
127
- pmcont.push both
128
- a += 1
129
- end
130
- pm.label(label)
131
- print Rainbow('- ').bright
132
- print pmcont.join(Rainbow('|').bright)
133
- puts ''
134
- end
135
- end
136
-
137
- end
138
- end
@@ -0,0 +1,42 @@
1
+ # coding: utf-8
2
+ %w{httpi multi_json rainbow}.map {|lib| require lib}
3
+
4
+ module Lyracyst
5
+ class Rhymebrain
6
+ class Combine
7
+ # Fetches portmanteaus using the Rhymebrain API.
8
+ #
9
+ # @param search [String] The word or phrase to search for.
10
+ # @param params [Hash] The search parameters to use.
11
+ def get_port(search, params)
12
+ func, label, result = 'Portmanteaus', 'Portmanteaus', nil
13
+ pm = Lyracyst::Rhymebrain.new
14
+ result = pm.get_word(search, func, params, result)
15
+ result = MultiJson.load(result)
16
+ if result != nil
17
+ a, b, pmcont = 0, result.length - 1, []
18
+ if $fmt != nil
19
+ type = { 'type' => 'portmanteau' }
20
+ $tofile.push type
21
+ end
22
+ while a <= b
23
+ match = result[a]
24
+ roots = match['source']
25
+ combo = match['combined']
26
+ both = "#{Rainbow('Root words|').bright}#{roots}#{Rainbow('Combination|').bright}#{combo}"
27
+ if $fmt != nil
28
+ roots = { 'roots' => roots }
29
+ combo = { 'combo' => combo }
30
+ $tofile.push roots
31
+ $tofile.push combo
32
+ end
33
+ pmcont.push both
34
+ a += 1
35
+ end
36
+ Lyracyst.label(label)
37
+ puts pmcont.join(Rainbow('|').bright)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,73 @@
1
+ # coding: utf-8
2
+ %w{httpi multi_json rainbow}.map {|lib| require lib}
3
+
4
+ module Lyracyst
5
+ class Rhymebrain
6
+ class Info
7
+ # Fetches word info using the Rhymebrain API.
8
+ #
9
+ # @param search [String] The word or phrase to search for.
10
+ # @param params [Hash] The search parameters to use.
11
+ def get_info(search, params)
12
+ func, label, result = 'WordInfo', 'Word info', nil
13
+ wi = Lyracyst::Rhymebrain.new
14
+ result = wi.get_word(search, func, params, result)
15
+ result = MultiJson.load(result)
16
+ if result != nil
17
+ if $fmt != nil
18
+ type = { 'type' => 'word info' }
19
+ $tofile.push type
20
+ end
21
+ word = result['word']
22
+ pron = result['pron']
23
+ ipa = result['ipa']
24
+ flags = result['flags']
25
+ syllables = result['syllables']
26
+ Lyracyst.label(label)
27
+ print Rainbow('Word|').bright
28
+ print "#{word}"
29
+ print Rainbow('|Pronunciation|').bright
30
+ print "#{pron}"
31
+ print Rainbow('|IPA|').bright
32
+ print "#{ipa}"
33
+ print Rainbow('|Syllables|').bright
34
+ print "#{syllables}"
35
+ print Rainbow('|Flags|').bright
36
+ if $fmt != nil
37
+ word = { 'word' => word }
38
+ pron = { 'pronunciation' => pron }
39
+ ipa = { 'IPA pronunciation' => ipa }
40
+ syllables = { 'syllables' => syllables}
41
+ $tofile.push word
42
+ $tofile.push pron
43
+ $tofile.push ipa
44
+ $tofile.push syllables
45
+ end
46
+ fcont = []
47
+ if flags =~ /a/
48
+ fcont.push Rainbow('The word is offensive.').red.bright
49
+ if $fmt != nil
50
+ flag = { 'flag' => 'The word is offensive.'}
51
+ $tofile.push flag
52
+ end
53
+ end
54
+ if flags =~ /b/
55
+ fcont.push 'The word might be found in most dictionaries.'
56
+ if $fmt != nil
57
+ flag = { 'flag' => 'The word might be found in most dictionaries.'}
58
+ $tofile.push flag
59
+ end
60
+ end
61
+ if flags =~ /c/
62
+ fcont.push 'The pronunciation is known with confidence. It was not automatically generated.'
63
+ if $fmt != nil
64
+ flag = { 'flag' => 'The pronunciation is known with confidence. It was not automatically generated.'}
65
+ $tofile.push flag
66
+ end
67
+ end
68
+ puts "#{fcont.join(Rainbow('|').bright)}"
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,39 @@
1
+ # coding: utf-8
2
+ %w{httpi multi_json rainbow}.map {|lib| require lib}
3
+
4
+ module Lyracyst
5
+ class Rhymebrain
6
+ class Rhyme
7
+ # Fetches rhymes using the Rhymebrain API.
8
+ #
9
+ # @param search [String] The word or phrase to search for.
10
+ # @param params [Hash] The search parameters to use.
11
+ def get_rhyme(search, params)
12
+ func, label, result = 'Rhymes', 'Rhymes', nil
13
+ rh = Lyracyst::Rhymebrain.new
14
+ result = rh.get_word(search, func, params, result)
15
+ result = MultiJson.load(result)
16
+ if result != nil
17
+ a, b, rcont = 0, result.length - 1, []
18
+ if $fmt != nil
19
+ type = { 'type' => 'rhyme' }
20
+ $tofile.push type
21
+ end
22
+ while a <= b
23
+ match = result[a]
24
+ rhyme = match['word']
25
+ rcont.push rhyme
26
+ if $fmt != nil
27
+ rhyme = { 'rhyme' => rhyme }
28
+ $tofile.push rhyme
29
+ end
30
+ a += 1
31
+ end
32
+ Lyracyst.label(label)
33
+ print rcont.join(Rainbow('|').bright)
34
+ puts ''
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ %w{httpi multi_json rainbow}.map {|lib| require lib}
3
+
4
+ module Lyracyst
5
+ # This class uses the Rhymebrain API to fetch rhymes, word info, and portmanteaus.
6
+ class Rhymebrain
7
+ # Fetches dynamically generated URL. Functions are Rhymes,
8
+ # WordInfo, and Portmaneaus.
9
+ #
10
+ # @param search [String] The word or phrase to search for.
11
+ # @param func [String] The search function to use.
12
+ # @param params [Hash] The search parameters to use.
13
+ # @param result [String] The search response.
14
+ def get_word(search, func, params, result)
15
+ prefix = "http://rhymebrain.com/talk?function=get"
16
+ word, pcont = "#{prefix}#{func}&word=#{search}&", []
17
+ params.map { |k,v|
18
+ if k == :lang then pcont.push "lang=#{v}&"; end
19
+ if k == :max && k != nil then pcont.push "maxResults=#{v}&"; end
20
+ }
21
+ url = "#{word}#{pcont.join}"
22
+ request = HTTPI::Request.new(url)
23
+ getter = HTTPI.get(request)
24
+ result = getter.body
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,62 @@
1
+ %w{httpi multi_json rainbow}.map {|lib| require lib}
2
+ module Lyracyst
3
+ class Urban
4
+ # Fetches URL.
5
+ #
6
+ # @param search [String] The word or phrase to search for.
7
+ # @param result [String] The search response.
8
+ def get_word(search, result)
9
+ prefix = "http://api.urbandictionary.com/v0/define?term="
10
+ url = "#{prefix}#{search}"
11
+ request = HTTPI::Request.new(url)
12
+ getter = HTTPI.get(request)
13
+ result = getter.body
14
+ end
15
+ class Define
16
+ # Fetches definitions and examples from Urbandictionary.com.
17
+ #
18
+ # @param search [String] The word or phrase to search for.
19
+ def get_def(search)
20
+ label, result = 'Urban Dictionary', nil
21
+ ur = Lyracyst::Urban.new
22
+ result = ur.get_word(search, result)
23
+ result = MultiJson.load(result)
24
+ tags = result['tags']
25
+ rtype = result['result_type']
26
+ list = result['list']
27
+ Lyracyst.label(label)
28
+ print Rainbow("|Tags|#{tags}|Type|#{rtype}").bright
29
+ x, y, dcont = 0, list.length - 1, []
30
+ if $fmt != nil
31
+ type = { 'type' => 'urban' }
32
+ tags = { 'tags' => tags }
33
+ rtype = { 'result type' => rtype }
34
+ list = { 'list' => list }
35
+ $tofile.push type
36
+ $tofile.push tags
37
+ $tofile.push rtype
38
+ $tofile.push list
39
+ end
40
+ while x <= y
41
+ obj = list[x]
42
+ author = obj['author']
43
+ link = obj['permalink']
44
+ defi = obj['definition']
45
+ ex = obj['example']
46
+ puts "|#{defi}|#{ex}|#{author}|#{link}"
47
+ if $fmt != nil
48
+ author = { 'author' => author }
49
+ link = { 'link' => link }
50
+ defi = { 'definition' => defi }
51
+ ex = { 'example' => ex }
52
+ $tofile.push defi
53
+ $tofile.push ex
54
+ $tofile.push author
55
+ $tofile.push link
56
+ end
57
+ x += 1
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
2
  module Lyracyst
3
3
  # Semantic program version
4
- VERSION = '0.0.8'
4
+ VERSION = '0.0.9'
5
5
  end
@@ -1,326 +1,11 @@
1
1
  # coding: utf-8
2
- #%w(curb em-synchrony em-http eventmachine excon httpclient httpi net/http/persistent rainbow).map {|lib| require lib}
3
- #%w(json/ext json/pure multi_json oj yajl).map {|lib| require lib}
4
- #%w(libxml multi_xml ox rexml/document).map {|lib| require lib}
5
- %w{httpi multi_json multi_xml rainbow}.map {|lib| require lib}
2
+ require 'lyracyst/wordnik/define'
3
+ require 'lyracyst/wordnik/example'
4
+ require 'lyracyst/wordnik/hyphen'
5
+ require 'lyracyst/wordnik/origin'
6
+ require 'lyracyst/wordnik/phrase'
7
+ require 'lyracyst/wordnik/pronounce'
8
+ require 'lyracyst/wordnik/relate'
9
+ require 'lyracyst/wordnik/word'
6
10
 
7
- module Lyracyst
8
11
 
9
- # Wordnik.com's service provides definitions, examples,
10
- # related words, pronunciations, hyphenation, phrases,
11
- # and etymologies.
12
- class Wordnik
13
- HTTPI.log = false
14
-
15
- # Optionally sets HTTP adapter with httpi. Supports [:httpclient,
16
- # :curb, :em_http, :net_http_persistent, :excon, :rack]
17
- #
18
- # @param http [Symbol] The http adapter to use. Smart defaults.
19
- def set_http(http)
20
- HTTPI.adapter = http
21
- end
22
-
23
- # Optionally sets JSON adapter with multi_json. Supports [:oj,
24
- # :yajl, :json_gem, :json_pure]
25
- #
26
- # @param mj [Symbol] The JSON adapter to use. Smart defaults.
27
- def set_json(mj)
28
- MultiJson.use(mj)
29
- end
30
-
31
- # Optionally sets XML adapter with multi_json. Supports [:ox,
32
- # :libxml, :nokogiri, :rexml]
33
- #
34
- # @param mx [Symbol] The XML adapter to use. Smart defaults.
35
- def set_xml(mx)
36
- MultiXml.parser = mx
37
- end
38
-
39
- # Prints colored element label.
40
- #
41
- # @param label [String] The label to print
42
- def label(label)
43
- print Rainbow("[").blue.bright
44
- print Rainbow(label).green.bright
45
- print Rainbow("] ").blue.bright
46
- end
47
-
48
- # Fetches dynamically generated URL. Functions are definitions,
49
- # examples, relatedWords, pronunciations, hyphenation, phrases,
50
- # and etymologies.
51
- #
52
- # @param search [String] The word or phrase to search for.
53
- # @param func [String] The search function to use.
54
- # @param params [Hash] The search parameters to use.
55
- # @param result [String] The search response.
56
- def get_word(search, func, params, result)
57
- prefix = 'http://api.wordnik.com:80/v4/word.json/'
58
- word, pcont = "#{prefix}#{search}/#{func}?", []
59
- params.map { |k,v|
60
- if k == :canon then pcont.push "useCanonical=#{v}&"; end
61
- if k == :incdups then pcont.push "includeDuplicates=#{v}&"; end
62
- if k == :increl then pcont.push "includeRelated=#{v}&"; end
63
- if k == :inctags then pcont.push "includeTags=#{v}&"; end
64
- if k == :limit then pcont.push "limit=#{v}&"; end
65
- if k == :part then pcont.push "partOfSpeech=#{v}&"; end
66
- if k == :rellimit then pcont.push "limitPerRelationshipType=#{v}&"; end
67
- if k == :reltypes then pcont.push "relationshipTypes=#{v}&"; end
68
- if k == :skip then pcont.push "skip=#{v}&"; end
69
- if k == :source then pcont.push "sourceDictionary=#{v}&"; end
70
- if k == :defdict then pcont.push "sourceDictionaries=#{v}&"; end
71
- if k == :tformat then pcont.push "typeFormat=#{v}&"; end
72
- if k == :wlmi then pcont.push "wlmi=#{v}&"; end
73
- }
74
- apikey = ENV['WORDNIK']
75
- pcont.push "api_key=#{apikey}"
76
- url = "#{word}#{pcont.join}"
77
- request = HTTPI::Request.new(url)
78
- getter = HTTPI.get(request)
79
- result = getter.body
80
- end
81
-
82
- # Fetches definitions from Wordnik. Parts include:
83
- # 'noun,adjective,verb,adverb,interjection,pronoun,
84
- # preposition,abbreviation,affix,article,auxiliary-verb,
85
- # conjunction,definite-article,family-name,given-name,
86
- # idiom,imperative,noun-plural,noun-posessive,
87
- # past-participle,phrasal-prefix,proper-noun,
88
- # proper-noun-plural,proper-noun-posessive,suffix,
89
- # verb-intransitive,verb-transitive'
90
- #
91
- # @param search [String] The word or phrase to search for.
92
- # @param part [String] Comma-separated list of parts of speech.
93
- # @param params [Hash] The search parameters to use.
94
- def get_def(search, part, params)
95
- func, label, result = 'definitions', 'Definition', nil
96
- if part != nil then params[:part] = part; end
97
- defi = Lyracyst::Wordnik.new
98
- result = defi.get_word(search, func, params, result)
99
- result = MultiJson.load(result)
100
- if result != nil
101
- x, y = 0, result.length - 1
102
- while x <= y
103
- d = result[x]
104
- text = d['text']
105
- part = d['partOfSpeech']
106
- defi.label(label)
107
- print Rainbow("#{part} - ").bright
108
- puts "#{text}"
109
- x += 1
110
- end
111
- else
112
- puts 'Wordnik returned an empty string.'
113
- end
114
- end
115
-
116
- # Fetches examples from Wordnik.
117
- #
118
- # @param search [String] The word or phrase to search for.
119
- # @param params [Hash] The search parameters to use.
120
- def get_ex(search, params)
121
- func, label, result = 'examples', 'Example', nil
122
- exam = Lyracyst::Wordnik.new
123
- result = exam.get_word(search, func, params, result)
124
- result = MultiJson.load(result)
125
- result = result['examples']
126
- if result != nil
127
- x, y = 0, result.length - 1
128
- while x <= y
129
- ex = result[x]
130
- title = ex['title']
131
- text = ex['text']
132
- url = ex['url']
133
- exam.label(label)
134
- print Rainbow("#{title} - ").bright
135
- puts "#{text} - #{url}"
136
- x += 1
137
- end
138
- else
139
- puts 'Wordnik failed to fetch word info.'
140
- end
141
- end
142
-
143
- # Fetches pronunciations from Wordnik. Types include ['ahd'
144
- # 'arpabet', 'gcide-diacritical', 'IPA']
145
- #
146
- # @param search [String] The word or phrase to search for.
147
- # @param params [Hash] The search parameters to use.
148
- # @param ptype [String] Pronunciation type.
149
- def get_pro(search, params, ptype)
150
- func, label, result = 'pronunciations', 'Pronunciation', nil
151
- if ptype != nil then params[:tformat] = ptype; end
152
- pron = Lyracyst::Wordnik.new
153
- result = pron.get_word(search, func, params, result)
154
- result = MultiJson.load(result)
155
- if result != nil
156
- x, y = 0, result.length - 1
157
- while x <= y
158
- pro = result[x]
159
- rawtype = pro['rawType']
160
- raw = pro['raw']
161
- pron.label(label)
162
- print Rainbow("- ").bright
163
- puts "#{raw} - #{rawtype}"
164
- x += 1
165
- end
166
- else
167
- puts 'Wordnik failed to fetch word info.'
168
- end
169
- end
170
-
171
- # Fetches related words from Wordnik. Types include ['synonym',
172
- # 'antonym', 'variant', 'equivalent', 'cross-reference',
173
- # 'related-word', 'rhyme', 'form', 'etymologically-related-term',
174
- # 'hypernym', 'hyponym', 'inflected-form', 'primary', 'same-context',
175
- # 'verb-form', 'verb-stem']
176
- #
177
- # @param search [String] The word or phrase to search for.
178
- # @param params [Hash] The search parameters to use.
179
- # @param reltypes [String] Relationship type.
180
- def get_rel(search, params, reltypes)
181
- func, label, result = 'relatedWords', 'Related words', nil
182
- if reltypes != nil then params[:reltypes] = reltypes; end
183
- rel = Lyracyst::Wordnik.new
184
- result = rel.get_word(search, func, params, result)
185
- result = MultiJson.load(result)
186
- if result != nil
187
- x, y = 0, result.length - 1
188
- while x <= y
189
- re = result[x]
190
- words, type = re['words'], re['relationshipType']
191
- rel.label(label)
192
- print Rainbow("#{type} - ").bright
193
- puts "#{words.join(', ')}"
194
- x += 1
195
- end
196
- else
197
- puts 'Wordnik failed to fetch word info.'
198
- end
199
- end
200
-
201
- # Fetches hyphenations from Wordnik.
202
- #
203
- # @param search [String] The word or phrase to search for.
204
- # @param params [Hash] The search parameters to use.
205
- def get_hyph(search, params)
206
- func, label, result = 'hyphenation', 'Hyphenation', nil
207
- hyph = Lyracyst::Wordnik.new
208
- result = hyph.get_word(search, func, params, result)
209
- result = MultiJson.load(result)
210
- if result != nil
211
- x, y, hcont = 0, result.length - 1, []
212
- hyph.label(label)
213
- print Rainbow("- ").bright
214
- while x <= y
215
- hy = result[x]
216
- ht = hy['text']
217
- if hy['type'] == 'stress'
218
- hcont.push Rainbow(ht).red.bright
219
- elsif hy['type'] == 'secondary stress'
220
- hcont.push Rainbow(ht).bright
221
- else
222
- hcont.push ht
223
- end
224
- x += 1
225
- end
226
- puts hcont.join('-')
227
- else
228
- puts 'Wordnik failed to fetch word info.'
229
- end
230
- end
231
-
232
- # Fetches bi-gram phrases from Wordnik.
233
- #
234
- # @param search [String] The word or phrase to search for.
235
- # @param params [Hash] The search parameters to use.
236
- def get_phr(search, params)
237
- func, label, result = 'phrases', 'Bi-gram phrases', nil
238
- phr = Lyracyst::Wordnik.new
239
- result = phr.get_word(search, func, params, result)
240
- result = MultiJson.load(result)
241
- if result != nil
242
- x, y, phcont = 0, result.length - 1, []
243
- phr.label(label)
244
- print Rainbow("- ").bright
245
- while x <= y
246
- ph = result[x]
247
- one = ph['gram1']
248
- two = ph['gram2']
249
- if one == search
250
- item = "#{Rainbow(one).bright} #{two}"
251
- else
252
- item = "#{one} #{Rainbow(two).bright}"
253
- end
254
- phcont.push item
255
- x += 1
256
- end
257
- puts "#{phcont.join('|')}"
258
- else
259
- puts 'Wordnik failed to fetch word info.'
260
- end
261
- end
262
-
263
- # Fetches etymologies from Wordnik.
264
- #
265
- # @param search [String] The word or phrase to search for.
266
- # @param params [Hash] The search parameters to use.
267
- def get_et(search, params)
268
- func, label, result = 'etymologies', 'Etymology', nil
269
- #etymology = Lyracyst::Wordnik.new
270
- #result = etymology.get_word(search, func, params, result)
271
- result = get_word(search, func, params, result)
272
- if result != nil && result != '[]'
273
- result = MultiJson.load(result)
274
- a, b, cont = 0, result.length - 1, []
275
- while a <= b
276
- xml = result[a]
277
- xml = MultiXml.parse(xml)
278
- root = xml['ety']
279
- content, ets, er = root['__content__'], root['ets'], root['er']
280
- #etymology.label(label)
281
- label(label)
282
- print Rainbow("- ").bright
283
- print "#{content} - "
284
- if ets != nil
285
- c, d, etscont = 0, ets.length - 1, []
286
- while c <= d
287
- if d == 0
288
- etsc = ets['__content__']
289
- etscont.push etsc
290
- else
291
- etsc = ets[c]
292
- etscont.push etsc['__content__']
293
- end
294
- c += 1
295
- end
296
- print "#{etscont.join('|')}"
297
- else
298
- puts ''
299
- end
300
- if er != nil
301
- print ' - '
302
- e, f, ercont = 0, er.length - 1, []
303
- while e <= f
304
- if f == 0
305
- erc = er['__content__']
306
- ercont.push erc
307
- else
308
- erc = er[e]
309
- ercont.push erc['__content__']
310
- end
311
- e += 1
312
- end
313
- print "#{ercont.join('|')}"
314
- else
315
- puts ''
316
- end
317
- a += 1
318
- puts ''
319
- end
320
- else
321
- puts 'Wordnik failed to fetch word info.'
322
- end
323
- end
324
-
325
- end
326
- end