lyracyst 0.0.8 → 0.0.9

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.
@@ -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