lyracyst 0.0.7 → 0.0.8

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.
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lyracyst
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Drew Prentice
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-29 00:00:00.000000000 Z
11
+ date: 2014-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: httpi
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.1'
19
+ version: '1.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.1'
26
+ version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
- name: methadone
28
+ name: gli
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.3'
33
+ version: '2.10'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.3'
40
+ version: '2.10'
41
+ - !ruby/object:Gem::Dependency
42
+ name: httpi
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: multi_json
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -67,19 +81,19 @@ dependencies:
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0.5'
69
83
  - !ruby/object:Gem::Dependency
70
- name: wordnik
84
+ name: rainbow
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '4.12'
89
+ version: '2.0'
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '4.12'
96
+ version: '2.0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: aruba
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -136,34 +150,6 @@ dependencies:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
152
  version: '10.3'
139
- - !ruby/object:Gem::Dependency
140
- name: rspec
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '2.14'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '2.14'
153
- - !ruby/object:Gem::Dependency
154
- name: spinach
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '0.8'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '0.8'
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: yard
169
155
  requirement: !ruby/object:Gem::Requirement
@@ -178,7 +164,7 @@ dependencies:
178
164
  - - "~>"
179
165
  - !ruby/object:Gem::Version
180
166
  version: '0.8'
181
- description: Search Wordnik, thesaurus.altervista.org, and Arpabet from the command
167
+ description: Search Wordnik, thesaurus.altervista.org, and Rhymebrain from the command
182
168
  line.
183
169
  email: weirdpercent@gmail.com
184
170
  executables:
@@ -190,11 +176,9 @@ files:
190
176
  - LICENSE.md
191
177
  - bin/lyracyst
192
178
  - lib/lyracyst.rb
193
- - lib/lyracyst/define.rb
194
- - lib/lyracyst/get.rb
195
- - lib/lyracyst/relate.rb
196
- - lib/lyracyst/rhyme.rb
179
+ - lib/lyracyst/rhymebrain.rb
197
180
  - lib/lyracyst/version.rb
181
+ - lib/lyracyst/wordnik.rb
198
182
  homepage: http://github.com/weirdpercent/lyracyst
199
183
  licenses:
200
184
  - MIT
@@ -221,7 +205,6 @@ rubyforge_project:
221
205
  rubygems_version: 2.2.2
222
206
  signing_key:
223
207
  specification_version: 4
224
- summary: A powerful word search tool that fetches definitions, related words, and
225
- rhymes.
208
+ summary: A powerful word search tool.
226
209
  test_files: []
227
210
  has_rdoc:
@@ -1,35 +0,0 @@
1
- # coding: utf-8
2
- require 'wordnik'
3
-
4
- module Lyracyst
5
- # The Wordnik class defines methods for interacting with The
6
- # Wordnik API.
7
- class Define
8
- # Wordnik.com's service provides definitions. The logger
9
- # defaults to Rails.logger or Logger.new(STDOUT). Set to
10
- # Logger.new('/dev/null') to disable logging.
11
- #
12
- # @param search [String] The word or phrase to search for.
13
- # @param fmt [String] The response format, json or xml.
14
- def define(search, fmt)
15
- apikey = ENV['WORDNIK']
16
- Wordnik.configure do |cfg|
17
- cfg.api_key = apikey
18
- cfg.response_format = fmt
19
- cfg.logger = Logger.new('/dev/null')
20
- end
21
- defi = Wordnik.word.get_definitions(search)
22
- if defi != ''
23
- defi.map { |d|
24
- text = d['text']
25
- # att = d['attributionText']
26
- part = d['partOfSpeech']
27
- puts "Definition: #{part} - #{text}"
28
- # puts "Definition: #{part} - #{text} - #{att}" # With attribution
29
- }
30
- else
31
- puts 'Wordnik returned an empty string.'
32
- end
33
- end
34
- end
35
- end
data/lib/lyracyst/get.rb DELETED
@@ -1,21 +0,0 @@
1
- # coding: utf-8
2
- module Lyracyst
3
- #The Get class defines a method to search all sources.
4
- class Get
5
- # Get searches each source with the same query.
6
- #
7
- # @param search [String] The word to search for.
8
- # @param result [Array] The response array.
9
- # @param lang [String] The search language.
10
- # @param fmt [String] The response format, json or xml.
11
- def get(search, result, lang, fmt)
12
- de = Lyracyst::Define.new
13
- re = Lyracyst::Relate.new
14
- rh = Lyracyst::Rhyme.new
15
- de.define(search, fmt)
16
- re.relate(search, result, lang, fmt)
17
- result = []
18
- rh.rhyme(search, result)
19
- end
20
- end
21
- end
@@ -1,171 +0,0 @@
1
- # coding: utf-8
2
- require 'httpi'
3
- require 'multi_json'
4
- require 'multi_xml'
5
-
6
- module Lyracyst
7
- # The Relate class defines methods for interacting with the
8
- # Altervista API.
9
- class Relate
10
- # Altervista.org's thesaurus service provides related words.
11
- # The service limits each API key to 5000 queries a day. If
12
- # maximum number of queries has been reached, this method
13
- # will exit. Search language can be it_IT, fr_FR, de_DE,
14
- # en_US, el_GR, es_ES, de_DE, no_NO, pt_PT, ro_RO, ru_RU,
15
- # sk_SK. This method calls {Related#update} and {Related#submit}.
16
- #
17
- # @param search [String] The word or phrase to search for.
18
- # @param result [Array] The JSON response.
19
- # @param lang [String] Search language code.
20
- # @param fmt [String] Results format, json or xml.
21
- def relate(search, result, lang, fmt)
22
- max = 5000
23
- t = Time.now
24
- y = t.year.to_s
25
- m = t.month
26
- d = t.day
27
- if m < 10 then m = "0#{m}" else m = m.to_s; end
28
- if d < 10 then d = "0#{d}" else d = d.to_s; end
29
- date = "#{y}#{m}#{d}"
30
- dateint = date.to_i
31
- if File.exist?('json/synqc.json') == true
32
- rl = File.readlines('json/synqc.json')
33
- rl = rl[0]
34
- loadrl = MultiJson.load(rl)
35
- testdate = loadrl['date']
36
- querycount = loadrl['querycount']
37
- pdateint = testdate.to_i
38
- if dateint > pdateint == true
39
- re = Lyracyst::Relate.new
40
- #re.update(dateint, querycount)
41
- end
42
- else
43
- querycount = 0
44
- new = { 'date' => dateint, 'querycount' => querycount }
45
- #fo = File.open('json/synqc.json', "w+") # FIXME json dir operations fail in Cucumber
46
- #tofile = MultiJson.dump(new)
47
- #fo.print tofile
48
- #fo.close
49
- end
50
- if querycount < max
51
- urlprefix = 'http://thesaurus.altervista.org/thesaurus/v1'
52
- apikey = ENV['THESAURUS']
53
- url = "#{urlprefix}?key=#{apikey}&word=#{search}&language=#{lang}&output=#{fmt}"
54
- re = Lyracyst::Relate.new
55
- re.submit(url, dateint, result, querycount)
56
- else
57
- puts 'Max queries per day for related words has been reached.'
58
- end
59
- end
60
- # Opens URL and returns response. HTTPI supports multiple HTTP
61
- # clients, and selects the 'best' in the following order:
62
- # httpclient, curb, em_http, excon, net_http, net_http_persistent.
63
- # For C extensions, curb is recommended. For pure Ruby, use excon.
64
- # You can specify a client to use like this:
65
- # request = HTTPI::Request.new(url)
66
- # HTTPI.get(request, :curb)
67
- #
68
- # @param url [String] The query URL
69
- # @param result [Array] The response
70
- # @param rtype [String] Results format, json or xml.
71
- def http(url, result, rtype)
72
- request = HTTPI::Request.new(url)
73
- HTTPI.log = false
74
- request = HTTPI.get(request)
75
- if request.code == 200
76
- if request.headers['Content-Type'] =~ /json/
77
- rtype = 'json'
78
- result = request.body
79
- elsif request.headers['Content-Type'] =~ /xml/
80
- rtype = 'xml'
81
- result = request.body
82
- else
83
- puts "HTTP Content Type #{request.headers['Content-Type']}"
84
- end
85
- else
86
- puts "HTTP Status #{request.code}"
87
- puts "HTTP Body #{request.body}"
88
- end
89
- return result, rtype
90
- end
91
- # Parses a JSON response into a Ruby object. multi_json supports
92
- # multiple JSON parsers, and selects the 'best' in the following order:
93
- # oj, yajl, json, json_pure, okjson. For C extensions, oj is recommended.
94
- # For pure Ruby, use json_pure. This method calls {Related#extract}.
95
- #
96
- # @param result [String] The response body.
97
- def pjson(result)
98
- resulta = MultiJson.load(result)
99
- resulta = resulta['response']
100
- re = Lyracyst::Relate.new
101
- re.extract(resulta)
102
- end
103
- # Parses a XML response into a Ruby object. multi_xml supports
104
- # multiple XML parsers, and selects the 'best' in the following order:
105
- # ox, libxml, nokogiri, rexml. For C extensions, ox is recommended. For
106
- # pure Ruby, use REXML. This method calls {Related#extract}.
107
- #
108
- # @param result [String] The response body.
109
- def pxml(result)
110
- resulta = MultiXml.parse(result)
111
- resulta = resulta['response']
112
- re = Lyracyst::Relate.new
113
- re.extract(resulta)
114
- end
115
- # Extracts related words from the response and prints them.
116
- #
117
- # @param resulta [Array] An array of values from the response.
118
- def extract(resulta)
119
- x = 0
120
- y = resulta.length - 1
121
- while x <= y
122
- item=resulta[x]
123
- item=item['list']
124
- puts "Related words: #{item['category'].gsub(/\(|\)/, '')} - #{item['synonyms']}"
125
- x += 1
126
- end
127
- end
128
- # Submits search term and parameters to Altervista.
129
- # This method calls {Related#http}, {Related#pjson},
130
- # {Related#pxml} and {Related#update}.
131
- #
132
- # @param url [String] The assembled search URL.
133
- # @param dateint [Fixnum] Today's date.
134
- # @param result [String] The JSON response.
135
- # @param querycount [Fixnum] Number of queries today.
136
- def submit(url, dateint, result, querycount)
137
- #if ENVIRONMENT == 'javascript'
138
- #url = "#{url}&callback=synonymSearch"
139
- #end
140
- re = Lyracyst::Relate.new
141
- rtype = ''
142
- result = re.http(url, result, rtype)
143
- rtype = result[1]
144
- result = result[0]
145
- if rtype == 'json'
146
- re.pjson(result)
147
- elsif rtype == 'xml'
148
- re.pxml(result)
149
- else
150
- puts "Invalid data format."
151
- end
152
- querycount += 1
153
- #re.update(dateint, querycount)
154
- end
155
- # Sets today's date and writes it with querycount to syncqc.json.
156
- #
157
- # @param dateint [Fixnum] Today's date in integer form.
158
- # @param querycount [Fixnum] Number of daily queries in integer form.
159
- def update(dateint, querycount)
160
- qct = { 'date' => dateint, 'querycount' => querycount }
161
- if File.exist?('json/synqc.json') == true
162
- fo = File.open('json/synqc.json', "w+")
163
- else
164
- fo = File.new('json/synqc.json', "w+")
165
- end
166
- tofile = MultiJson.dump(qct)
167
- fo.print tofile
168
- fo.close
169
- end
170
- end
171
- end
@@ -1,48 +0,0 @@
1
- # coding: utf-8
2
- require 'httpi'
3
- require 'multi_json'
4
- module Lyracyst
5
- # The Rhyme class uses the ARPABET Heroku app to fetch rhymes.
6
- class Rhyme
7
- # ARPA created ARPABET decades ago to find words that
8
- # rhyme. The technology is still quite relevant today.
9
- # This program uses the Heroku app based on ARPABET.
10
- # This method calls {Rhyme#http}.
11
- #
12
- # @param search [String] The word or phrase to search for.
13
- def rhyme(search, result)
14
- url = "http://arpabet.heroku.com/words/#{search}"
15
- rh = Lyracyst::Rhyme.new
16
- rtype = ''
17
- result = rh.http(url, result)
18
- resulta = MultiJson.load(result)
19
- print "Rhymes with: "
20
- resulta.map { |x|
21
- print " #{x}"
22
- }
23
- print "\n"
24
- end
25
- # Opens URL and returns response. HTTPI supports multiple HTTP
26
- # clients, and selects the 'best' in the following order:
27
- # httpclient, curb, em_http, excon, net_http, net_http_persistent.
28
- # For C extensions, curb is recommended. For pure Ruby, use excon.
29
- # You can specify a client to use like this:
30
- # request = HTTPI::Request.new(url)
31
- # HTTPI.get(request, :curb)
32
- #
33
- # @param url [String] The query URL
34
- # @param result [Array] The response
35
- def http(url, result)
36
- request = HTTPI::Request.new(url)
37
- HTTPI.log = false
38
- request = HTTPI.get(request)
39
- if request.code == 200
40
- result = request.body
41
- else
42
- puts "HTTP Status #{request.code}"
43
- puts "HTTP Body #{request.body}"
44
- end
45
- return result
46
- end
47
- end
48
- end