lyracyst 0.0.1
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 +7 -0
- data/bin/lyracyst +186 -0
- data/changelog.md +12 -0
- data/lib/lyracyst.rb +186 -0
- data/license.md +22 -0
- data/readme.md +87 -0
- data/scaffold.md +14 -0
- metadata +110 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 58a980e0fde9e3c2924a28c3a7e72968564aa7be
|
4
|
+
data.tar.gz: 600427e32f40f28b791473e20d391e76c8368e75
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 00f2d7c0a6753333c51600dd6b4614bc80652e6bdd0df08bce169965468d3c1abe0210922424dd609163a0a70a784e3d2ae261dbd009303b957a73fc34aa0e76
|
7
|
+
data.tar.gz: ff477c269a4f9bcd9aad42aa2c27b0dd2c40596f8f7227873e879007faadf37e3af4010766584938b02e8bc313a7d8de2857de878cdb768aae4ca8b3b4e4f1fc
|
data/bin/lyracyst
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'commander/import'
|
5
|
+
#require 'configatron'
|
6
|
+
require 'multi_json'
|
7
|
+
#require 'nokogiri'
|
8
|
+
require 'open-uri/cached'
|
9
|
+
require 'wordnik'
|
10
|
+
OpenURI::Cache.cache_path = 'tmp/open-uri' #transparent caching
|
11
|
+
environment='ruby'
|
12
|
+
result=''
|
13
|
+
program :name, 'lyracyst'
|
14
|
+
program :version, '0.0.1'
|
15
|
+
program :description, 'A powerful word search tool that fetches definitions, related words, and rhymes.'
|
16
|
+
#search='test' # (urlencoded string)
|
17
|
+
#print "Enter a word: " #change commenting here to convert between command line and test modes
|
18
|
+
class Fetch
|
19
|
+
def search(url, result)
|
20
|
+
result=open(url).read #submit search query
|
21
|
+
end
|
22
|
+
def update(dateint, querycount)
|
23
|
+
qct={'date' => dateint, 'querycount' => querycount}
|
24
|
+
fo=File.open("json/synqc.json", "w+")
|
25
|
+
tofile=MultiJson.dump(qct)
|
26
|
+
fo.print tofile
|
27
|
+
fo.close
|
28
|
+
end
|
29
|
+
def rel(x, y, resulta)
|
30
|
+
while x <= y
|
31
|
+
resultl=resulta[x]
|
32
|
+
list=resultl['list']
|
33
|
+
cat=list['category'].gsub(/\(|\)/, '')
|
34
|
+
puts "Related words: #{list['category']} - #{list['synonyms']}"
|
35
|
+
x+=1
|
36
|
+
end
|
37
|
+
end
|
38
|
+
def submit(search, dateint, result, environment, querycount)
|
39
|
+
urlprefix='http://thesaurus.altervista.org/thesaurus/v1'
|
40
|
+
#apikey=File.readlines('keys/thesaurus.key') #search API key, get one at http://thesaurus.altervista.org/mykey
|
41
|
+
#apikey=apikey[0].chomp
|
42
|
+
apikey=ENV['THESAURUS'] #access thru ENV vars for safe Travis builds
|
43
|
+
searchlang='en_US' # it_IT, fr_FR, de_DE, en_US, el_GR, es_ES, de_DE, no_NO, pt_PT, ro_RO, ru_RU, sk_SK
|
44
|
+
dataoutput='json' # xml or json (default xml)
|
45
|
+
url="#{urlprefix}?key=#{apikey}&word=#{search}&language=#{searchlang}&output=#{dataoutput}"
|
46
|
+
if environment == 'javascript' # (requires output=json)
|
47
|
+
url="#{url}&callback=synonymSearch"
|
48
|
+
end
|
49
|
+
f=Fetch.new()
|
50
|
+
resultj=f.search(url, result) #submit search query
|
51
|
+
resultp=MultiJson.load(resultj)
|
52
|
+
resulta=resultp['response']
|
53
|
+
x=0
|
54
|
+
y=resulta.length-1
|
55
|
+
f.rel(x, y, resulta)
|
56
|
+
querycount+=1 #increment daily queries
|
57
|
+
f.update(dateint, querycount)
|
58
|
+
end
|
59
|
+
def parse(x, y, parse)
|
60
|
+
while x <= y
|
61
|
+
if parse[x] =~ / \d/
|
62
|
+
fix=parse[x]
|
63
|
+
parse[x]=fix.gsub(/ \d/ , "")
|
64
|
+
end
|
65
|
+
if parse[x] =~ / /
|
66
|
+
fix=parse[x]
|
67
|
+
parse[x]=fix.gsub(' ', "'")
|
68
|
+
end
|
69
|
+
print "#{parse[x]} "
|
70
|
+
x+=1
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
class Search
|
75
|
+
def related(search, result) # Each thesaurus.altervista.org application can perform upto 5000 queries per day.
|
76
|
+
environment='ruby'; maxqueries=5000; querycount=0; t=Time.now; y=t.year.to_s; m=t.month; d=t.day; #declarations
|
77
|
+
if m < 10 then m="0#{m}" else m=m.to_s; end #2-digits #FIXME < not valid?
|
78
|
+
if d < 10 then d="0#{d}" else d=d.to_s; end
|
79
|
+
date="#{y}#{m}#{d}"
|
80
|
+
dateint=date.to_i
|
81
|
+
#pd=Date.parse(date)
|
82
|
+
if File.exist?("json/synqc.json") == true
|
83
|
+
rl=File.readlines("json/synqc.json")
|
84
|
+
rl=rl[0]
|
85
|
+
loadrl=MultiJson.load(rl)
|
86
|
+
testdate=loadrl['date']
|
87
|
+
testcount=loadrl['querycount']
|
88
|
+
pdateint=testdate.to_i
|
89
|
+
if dateint > pdateint == true #track date changes
|
90
|
+
f=Fetch.new()
|
91
|
+
f.update(dateint, querycount)
|
92
|
+
end
|
93
|
+
else
|
94
|
+
testcount=0
|
95
|
+
end
|
96
|
+
if testcount < maxqueries #make sure we don't abuse the service
|
97
|
+
f=Fetch.new()
|
98
|
+
f.submit(search, dateint, result, environment, querycount)
|
99
|
+
else
|
100
|
+
puts "Max queries per day has been reached."
|
101
|
+
end
|
102
|
+
end
|
103
|
+
def define(search)
|
104
|
+
#apikey=File.readlines('keys/wordnik.key') #search API key, get one at http://developer.wordnik.com/
|
105
|
+
#apikey=apikey[0].chomp
|
106
|
+
apikey=ENV['WORDNIK'] #access thru ENV vars for safe Travis builds
|
107
|
+
Wordnik.configure do |cfg|
|
108
|
+
cfg.api_key=apikey
|
109
|
+
cfg.response_format='json'
|
110
|
+
cfg.logger = Logger.new('/dev/null') #defaults to Rails.logger or Logger.new(STDOUT). Set to Logger.new('/dev/null') to disable logging.
|
111
|
+
end
|
112
|
+
define=Wordnik.word.get_definitions(search)
|
113
|
+
define.map { |defi|
|
114
|
+
text=defi['text']; att=defi['attributionText']; part=defi['partOfSpeech'];
|
115
|
+
puts "Definition: #{part} - #{text}"
|
116
|
+
#puts "Definition: #{part} - #{text} - #{att}" #With attribution to source
|
117
|
+
}
|
118
|
+
end
|
119
|
+
def rhyme(search)
|
120
|
+
url="http://arpabet.heroku.com/words/#{search}"
|
121
|
+
f=Fetch.new()
|
122
|
+
result=f.search(url, result) #submit search query
|
123
|
+
parse=MultiJson.load(result)
|
124
|
+
print "Rhymes with: "
|
125
|
+
x=0
|
126
|
+
y=parse.length - 1
|
127
|
+
f.parse(x, y, parse)
|
128
|
+
print "\n"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
command :get do |c|
|
133
|
+
c.syntax = 'lyracyst get [options]'
|
134
|
+
c.summary = 'Fetches all sources'
|
135
|
+
c.description = 'Searches definitions, related words, and rhymes for a given query'
|
136
|
+
c.example 'Searches definitions, related words, and rhymes for a given query', 'lyracyst get test'
|
137
|
+
c.action do |args, options|
|
138
|
+
search=args[0]
|
139
|
+
s=Search.new
|
140
|
+
puts "Searching for [#{search}]:"
|
141
|
+
s.define(search)
|
142
|
+
s.related(search, result)
|
143
|
+
s.rhyme(search)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
command :define do |c|
|
148
|
+
c.syntax = 'lyracyst define [options]'
|
149
|
+
c.summary = 'Fetches definitions'
|
150
|
+
c.description = 'Uses the Wordnik API to get definitions'
|
151
|
+
c.example 'Uses the Wordnik API to get definitions', 'lyracyst define test'
|
152
|
+
c.action do |args, options|
|
153
|
+
search=args[0]
|
154
|
+
s=Search.new
|
155
|
+
puts "Searching for [#{search}]:"
|
156
|
+
s.define(search)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
command :related do |c|
|
161
|
+
c.syntax = 'lyracyst related [options]'
|
162
|
+
c.summary = 'Fetches related words'
|
163
|
+
c.description = 'Uses the Altervista API to get related words'
|
164
|
+
c.example 'Uses the Altervista API to get related words', 'lyracyst related test'
|
165
|
+
#c.option '--some-switch', 'Some switch that does something' # it_IT, fr_FR, de_DE, en_US, el_GR, es_ES, de_DE, no_NO, pt_PT, ro_RO, ru_RU, sk_SK
|
166
|
+
c.action do |args, options|
|
167
|
+
search=args[0]
|
168
|
+
s=Search.new
|
169
|
+
puts "Searching for [#{search}]:"
|
170
|
+
s.related(search)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
command :rhyme do |c|
|
175
|
+
c.syntax = 'lyracyst rhyme [options]'
|
176
|
+
c.summary = 'Fetches rhymes'
|
177
|
+
c.description = 'Uses the ARPABET system to get rhymes'
|
178
|
+
c.example 'Uses the ARPABET system to get rhymes', 'lyracyst rhyme test'
|
179
|
+
c.action do |args, options|
|
180
|
+
search=args[0]
|
181
|
+
s=Search.new
|
182
|
+
puts "Searching for [#{search}]:"
|
183
|
+
s.rhyme(search)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
data/changelog.md
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
Changelog
|
2
|
+
===
|
3
|
+
|
4
|
+
Version 0.0.1 - Feature complete
|
5
|
+
- Ruby environment works
|
6
|
+
- Secure Travis build works
|
7
|
+
- JSON data handling works
|
8
|
+
- Definitions work
|
9
|
+
- Related words work
|
10
|
+
- Thesaurus daily query limit enforced
|
11
|
+
- Rhymes work
|
12
|
+
- Improved Code Climate
|
data/lib/lyracyst.rb
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'commander/import'
|
5
|
+
#require 'configatron'
|
6
|
+
require 'multi_json'
|
7
|
+
#require 'nokogiri'
|
8
|
+
require 'open-uri/cached'
|
9
|
+
require 'wordnik'
|
10
|
+
OpenURI::Cache.cache_path = 'tmp/open-uri' #transparent caching
|
11
|
+
environment='ruby'
|
12
|
+
result=''
|
13
|
+
program :name, 'lyracyst'
|
14
|
+
program :version, '0.0.1'
|
15
|
+
program :description, 'A powerful word search tool that fetches definitions, related words, and rhymes.'
|
16
|
+
#search='test' # (urlencoded string)
|
17
|
+
#print "Enter a word: " #change commenting here to convert between command line and test modes
|
18
|
+
class Fetch
|
19
|
+
def search(url, result)
|
20
|
+
result=open(url).read #submit search query
|
21
|
+
end
|
22
|
+
def update(dateint, querycount)
|
23
|
+
qct={'date' => dateint, 'querycount' => querycount}
|
24
|
+
fo=File.open("json/synqc.json", "w+")
|
25
|
+
tofile=MultiJson.dump(qct)
|
26
|
+
fo.print tofile
|
27
|
+
fo.close
|
28
|
+
end
|
29
|
+
def rel(x, y, resulta)
|
30
|
+
while x <= y
|
31
|
+
resultl=resulta[x]
|
32
|
+
list=resultl['list']
|
33
|
+
cat=list['category'].gsub(/\(|\)/, '')
|
34
|
+
puts "Related words: #{list['category']} - #{list['synonyms']}"
|
35
|
+
x+=1
|
36
|
+
end
|
37
|
+
end
|
38
|
+
def submit(search, dateint, result, environment, querycount)
|
39
|
+
urlprefix='http://thesaurus.altervista.org/thesaurus/v1'
|
40
|
+
#apikey=File.readlines('keys/thesaurus.key') #search API key, get one at http://thesaurus.altervista.org/mykey
|
41
|
+
#apikey=apikey[0].chomp
|
42
|
+
apikey=ENV['THESAURUS'] #access thru ENV vars for safe Travis builds
|
43
|
+
searchlang='en_US' # it_IT, fr_FR, de_DE, en_US, el_GR, es_ES, de_DE, no_NO, pt_PT, ro_RO, ru_RU, sk_SK
|
44
|
+
dataoutput='json' # xml or json (default xml)
|
45
|
+
url="#{urlprefix}?key=#{apikey}&word=#{search}&language=#{searchlang}&output=#{dataoutput}"
|
46
|
+
if environment == 'javascript' # (requires output=json)
|
47
|
+
url="#{url}&callback=synonymSearch"
|
48
|
+
end
|
49
|
+
f=Fetch.new()
|
50
|
+
resultj=f.search(url, result) #submit search query
|
51
|
+
resultp=MultiJson.load(resultj)
|
52
|
+
resulta=resultp['response']
|
53
|
+
x=0
|
54
|
+
y=resulta.length-1
|
55
|
+
f.rel(x, y, resulta)
|
56
|
+
querycount+=1 #increment daily queries
|
57
|
+
f.update(dateint, querycount)
|
58
|
+
end
|
59
|
+
def parse(x, y, parse)
|
60
|
+
while x <= y
|
61
|
+
if parse[x] =~ / \d/
|
62
|
+
fix=parse[x]
|
63
|
+
parse[x]=fix.gsub(/ \d/ , "")
|
64
|
+
end
|
65
|
+
if parse[x] =~ / /
|
66
|
+
fix=parse[x]
|
67
|
+
parse[x]=fix.gsub(' ', "'")
|
68
|
+
end
|
69
|
+
print "#{parse[x]} "
|
70
|
+
x+=1
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
class Search
|
75
|
+
def related(search, result) # Each thesaurus.altervista.org application can perform upto 5000 queries per day.
|
76
|
+
environment='ruby'; maxqueries=5000; querycount=0; t=Time.now; y=t.year.to_s; m=t.month; d=t.day; #declarations
|
77
|
+
if m < 10 then m="0#{m}" else m=m.to_s; end #2-digits #FIXME < not valid?
|
78
|
+
if d < 10 then d="0#{d}" else d=d.to_s; end
|
79
|
+
date="#{y}#{m}#{d}"
|
80
|
+
dateint=date.to_i
|
81
|
+
#pd=Date.parse(date)
|
82
|
+
if File.exist?("json/synqc.json") == true
|
83
|
+
rl=File.readlines("json/synqc.json")
|
84
|
+
rl=rl[0]
|
85
|
+
loadrl=MultiJson.load(rl)
|
86
|
+
testdate=loadrl['date']
|
87
|
+
testcount=loadrl['querycount']
|
88
|
+
pdateint=testdate.to_i
|
89
|
+
if dateint > pdateint == true #track date changes
|
90
|
+
f=Fetch.new()
|
91
|
+
f.update(dateint, querycount)
|
92
|
+
end
|
93
|
+
else
|
94
|
+
testcount=0
|
95
|
+
end
|
96
|
+
if testcount < maxqueries #make sure we don't abuse the service
|
97
|
+
f=Fetch.new()
|
98
|
+
f.submit(search, dateint, result, environment, querycount)
|
99
|
+
else
|
100
|
+
puts "Max queries per day has been reached."
|
101
|
+
end
|
102
|
+
end
|
103
|
+
def define(search)
|
104
|
+
#apikey=File.readlines('keys/wordnik.key') #search API key, get one at http://developer.wordnik.com/
|
105
|
+
#apikey=apikey[0].chomp
|
106
|
+
apikey=ENV['WORDNIK'] #access thru ENV vars for safe Travis builds
|
107
|
+
Wordnik.configure do |cfg|
|
108
|
+
cfg.api_key=apikey
|
109
|
+
cfg.response_format='json'
|
110
|
+
cfg.logger = Logger.new('/dev/null') #defaults to Rails.logger or Logger.new(STDOUT). Set to Logger.new('/dev/null') to disable logging.
|
111
|
+
end
|
112
|
+
define=Wordnik.word.get_definitions(search)
|
113
|
+
define.map { |defi|
|
114
|
+
text=defi['text']; att=defi['attributionText']; part=defi['partOfSpeech'];
|
115
|
+
puts "Definition: #{part} - #{text}"
|
116
|
+
#puts "Definition: #{part} - #{text} - #{att}" #With attribution to source
|
117
|
+
}
|
118
|
+
end
|
119
|
+
def rhyme(search)
|
120
|
+
url="http://arpabet.heroku.com/words/#{search}"
|
121
|
+
f=Fetch.new()
|
122
|
+
result=f.search(url, result) #submit search query
|
123
|
+
parse=MultiJson.load(result)
|
124
|
+
print "Rhymes with: "
|
125
|
+
x=0
|
126
|
+
y=parse.length - 1
|
127
|
+
f.parse(x, y, parse)
|
128
|
+
print "\n"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
command :get do |c|
|
133
|
+
c.syntax = 'lyracyst get [options]'
|
134
|
+
c.summary = 'Fetches all sources'
|
135
|
+
c.description = 'Searches definitions, related words, and rhymes for a given query'
|
136
|
+
c.example 'Searches definitions, related words, and rhymes for a given query', 'lyracyst get test'
|
137
|
+
c.action do |args, options|
|
138
|
+
search=args[0]
|
139
|
+
s=Search.new
|
140
|
+
puts "Searching for [#{search}]:"
|
141
|
+
s.define(search)
|
142
|
+
s.related(search, result)
|
143
|
+
s.rhyme(search)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
command :define do |c|
|
148
|
+
c.syntax = 'lyracyst define [options]'
|
149
|
+
c.summary = 'Fetches definitions'
|
150
|
+
c.description = 'Uses the Wordnik API to get definitions'
|
151
|
+
c.example 'Uses the Wordnik API to get definitions', 'lyracyst define test'
|
152
|
+
c.action do |args, options|
|
153
|
+
search=args[0]
|
154
|
+
s=Search.new
|
155
|
+
puts "Searching for [#{search}]:"
|
156
|
+
s.define(search)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
command :related do |c|
|
161
|
+
c.syntax = 'lyracyst related [options]'
|
162
|
+
c.summary = 'Fetches related words'
|
163
|
+
c.description = 'Uses the Altervista API to get related words'
|
164
|
+
c.example 'Uses the Altervista API to get related words', 'lyracyst related test'
|
165
|
+
#c.option '--some-switch', 'Some switch that does something' # it_IT, fr_FR, de_DE, en_US, el_GR, es_ES, de_DE, no_NO, pt_PT, ro_RO, ru_RU, sk_SK
|
166
|
+
c.action do |args, options|
|
167
|
+
search=args[0]
|
168
|
+
s=Search.new
|
169
|
+
puts "Searching for [#{search}]:"
|
170
|
+
s.related(search)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
command :rhyme do |c|
|
175
|
+
c.syntax = 'lyracyst rhyme [options]'
|
176
|
+
c.summary = 'Fetches rhymes'
|
177
|
+
c.description = 'Uses the ARPABET system to get rhymes'
|
178
|
+
c.example 'Uses the ARPABET system to get rhymes', 'lyracyst rhyme test'
|
179
|
+
c.action do |args, options|
|
180
|
+
search=args[0]
|
181
|
+
s=Search.new
|
182
|
+
puts "Searching for [#{search}]:"
|
183
|
+
s.rhyme(search)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
data/license.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
========
|
3
|
+
|
4
|
+
**Copyright (c) 2014 Drew Prentice**
|
5
|
+
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
8
|
+
in the Software without restriction, including without limitation the rights
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
11
|
+
furnished to do so, subject to the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
14
|
+
copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
+
SOFTWARE.**
|
data/readme.md
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
lyracyst
|
2
|
+
===
|
3
|
+
|
4
|
+
[](http://en.wikipedia.org/wiki/File:Lyra_constellation_detail_long_exposure.jpg)
|
5
|
+
|
6
|
+
Constellation Lyra photo by [Scott Roy Atwood](http://en.wikipedia.org/wiki/File:Lyra_constellation_detail_long_exposure.jpg)
|
7
|
+
|
8
|
+
[](https://travis-ci.org/weirdpercent/lyracyst)[](https://gemnasium.com/weirdpercent/lyracyst)[](https://codeclimate.com/github/weirdpercent/lyracyst)
|
9
|
+
|
10
|
+
A powerful word search tool for writers of all kinds.
|
11
|
+
|
12
|
+
### Synopsis
|
13
|
+
|
14
|
+
Search [Wordnik](http://www.wordnik.com/), [thesaurus.altervista.org](http://thesaurus.altervista.org/), and [Arpabet](http://en.wikipedia.org/wiki/Arpabet) from the command line.
|
15
|
+
|
16
|
+
### Features
|
17
|
+
|
18
|
+
- Open URI fetching w/ transparent caching
|
19
|
+
- Definitions from Wordnik
|
20
|
+
- Rhymes from arpabet.heroku.com
|
21
|
+
- Related words from thesaurus.altervista.org
|
22
|
+
- XML & JSON parsing
|
23
|
+
- Export wordlists matching search criteria
|
24
|
+
|
25
|
+
### Usage
|
26
|
+
|
27
|
+
bundle install
|
28
|
+
rake
|
29
|
+
|
30
|
+
### Code Example
|
31
|
+
|
32
|
+
s=Search.new
|
33
|
+
s.nik(search) # Wordnik definitions
|
34
|
+
s.syn(search) # Altervista synonyms
|
35
|
+
s.rhy(search) # Arpabet rhymes
|
36
|
+
|
37
|
+
### Motivation
|
38
|
+
|
39
|
+
I do a lot of writing and I wanted a tool for constructing song lyrics, poetry, and stories that rock.
|
40
|
+
|
41
|
+
### Tests
|
42
|
+
|
43
|
+
TODO
|
44
|
+
|
45
|
+
### Contributing workflow
|
46
|
+
|
47
|
+
Here’s how we suggest you go about proposing a change to this project:
|
48
|
+
|
49
|
+
1. [Fork this project][fork] to your account.
|
50
|
+
2. [Create a branch][branch] for the change you intend to make.
|
51
|
+
3. Make your changes to your fork.
|
52
|
+
4. [Send a pull request][pr] from your fork’s branch to our `master` branch.
|
53
|
+
|
54
|
+
Using the web-based interface to make changes is fine too, and will help you
|
55
|
+
by automatically forking the project and prompting to send a pull request too.
|
56
|
+
|
57
|
+
[fork]: http://help.github.com/forking/
|
58
|
+
[branch]: https://help.github.com/articles/creating-and-deleting-branches-within-your-repository
|
59
|
+
[pr]: http://help.github.com/pull-requests/
|
60
|
+
|
61
|
+
### License
|
62
|
+
|
63
|
+
The MIT License (MIT)
|
64
|
+
|
65
|
+
**Copyright (c) 2014 Drew Prentice**
|
66
|
+
|
67
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
68
|
+
of this software and associated documentation files (the "Software"), to deal
|
69
|
+
in the Software without restriction, including without limitation the rights
|
70
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
71
|
+
copies of the Software, and to permit persons to whom the Software is
|
72
|
+
furnished to do so, subject to the following conditions:
|
73
|
+
|
74
|
+
The above copyright notice and this permission notice shall be included in all
|
75
|
+
copies or substantial portions of the Software.
|
76
|
+
|
77
|
+
**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
78
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
79
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
80
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
81
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
82
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
83
|
+
SOFTWARE.**
|
84
|
+
|
85
|
+
### Gratitude
|
86
|
+
|
87
|
+
Many thanks to all contributors to the gems used in this project!
|
data/scaffold.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
### Generate eye-popping scaffolds for rails
|
2
|
+
|
3
|
+
rails g beautiful_scaffold scaffoldname title:string id:integer calc:float about:text cost:price rainbow:color doc:richtext markup:wysiwyg
|
4
|
+
|
5
|
+
Types available:
|
6
|
+
|
7
|
+
- integer
|
8
|
+
- float
|
9
|
+
- text
|
10
|
+
- string
|
11
|
+
- price
|
12
|
+
- color
|
13
|
+
- richtext
|
14
|
+
- wysiwyg
|
metadata
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lyracyst
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Drew Prentice
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-04-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: commander
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: multi_json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.9'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.9'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: open-uri-cached
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: wordnik
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.12'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.12'
|
69
|
+
description: Search Wordnik, thesaurus.altervista.org, and Arpabet from the command
|
70
|
+
line.
|
71
|
+
email:
|
72
|
+
- weirdpercent@gmail.com
|
73
|
+
executables:
|
74
|
+
- lyracyst
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- bin/lyracyst
|
79
|
+
- changelog.md
|
80
|
+
- lib/lyracyst.rb
|
81
|
+
- license.md
|
82
|
+
- readme.md
|
83
|
+
- scaffold.md
|
84
|
+
homepage: http://github.com/weirdpercent/lyracyst
|
85
|
+
licenses:
|
86
|
+
- MIT
|
87
|
+
metadata: {}
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options: []
|
90
|
+
require_paths:
|
91
|
+
- lib
|
92
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 2.2.2
|
102
|
+
requirements: []
|
103
|
+
rubyforge_project:
|
104
|
+
rubygems_version: 2.2.2
|
105
|
+
signing_key:
|
106
|
+
specification_version: 4
|
107
|
+
summary: A powerful word search tool that fetches definitions, related words, and
|
108
|
+
rhymes.
|
109
|
+
test_files: []
|
110
|
+
has_rdoc:
|