namey 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/api/namey_app.rb +3 -3
- data/api/public/ajax-loader.gif +0 -0
- data/api/public/namey.css +33 -0
- data/api/public/ui.js +16 -3
- data/api/views/index.erb +54 -62
- data/lib/namey/generator.rb +17 -1
- data/lib/namey/version.rb +1 -1
- metadata +12 -10
data/api/namey_app.rb
CHANGED
@@ -11,7 +11,7 @@ class Hash
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
|
14
|
+
before do
|
15
15
|
@generator = Namey::Generator.new
|
16
16
|
end
|
17
17
|
|
@@ -39,11 +39,11 @@ get '/name.?:format?' do
|
|
39
39
|
|
40
40
|
names = 1.upto(count).collect do
|
41
41
|
@generator.generate(opts)
|
42
|
-
end
|
42
|
+
end.compact
|
43
43
|
|
44
44
|
if params[:format] == "json"
|
45
45
|
content_type :json, 'charset' => 'utf-8'
|
46
|
-
JSON.
|
46
|
+
JSON.generate names
|
47
47
|
else
|
48
48
|
["<ul>", names.collect { |n| "<li>#{n}</li>" }.join(" "), "</ul>"].join("")
|
49
49
|
end
|
Binary file
|
@@ -0,0 +1,33 @@
|
|
1
|
+
body {
|
2
|
+
padding-top: 10px;
|
3
|
+
}
|
4
|
+
.hero-unit {
|
5
|
+
padding-top: 10px;
|
6
|
+
padding-bottom: 10px;
|
7
|
+
margin-bottom: 10px;
|
8
|
+
}
|
9
|
+
.hero-unit h1 {
|
10
|
+
font-size: 48px;
|
11
|
+
}
|
12
|
+
.hero-unit p {
|
13
|
+
font-size: 16px;
|
14
|
+
line-height: 18px;
|
15
|
+
font-weight: 100;
|
16
|
+
}
|
17
|
+
|
18
|
+
.custom_range_wrapper {
|
19
|
+
display: none;
|
20
|
+
}
|
21
|
+
|
22
|
+
form#name-results textarea, .biglabel {
|
23
|
+
color: black;
|
24
|
+
font-size: 110%;
|
25
|
+
}
|
26
|
+
.spinny {
|
27
|
+
display: none;
|
28
|
+
padding-left: 5px;
|
29
|
+
}
|
30
|
+
|
31
|
+
#about {
|
32
|
+
margin-top: 45px;
|
33
|
+
}
|
data/api/public/ui.js
CHANGED
@@ -1,17 +1,29 @@
|
|
1
1
|
$(document).ready(function() {
|
2
2
|
$("input[name=frequency]").change(function() {
|
3
|
-
console.log("HI!");
|
4
3
|
if ( $("input[name=frequency]:checked").val() == "custom" ) {
|
4
|
+
$(".custom_range_wrapper").fadeIn();
|
5
5
|
$("#min_freq,#max_freq").removeClass("disabled").removeAttr("disabled");
|
6
6
|
}
|
7
7
|
else {
|
8
|
+
$(".custom_range_wrapper").fadeOut();
|
8
9
|
$("#min_freq,#max_freq").addClass("disabled").attr("disabled", true); ;
|
9
10
|
}
|
11
|
+
});
|
10
12
|
|
13
|
+
$("input[name=type]").change(function() {
|
14
|
+
if ( $("input[name=type]:checked").val() != "surname" ) {
|
15
|
+
$(".surname-wrapper").fadeIn();
|
16
|
+
}
|
17
|
+
else {
|
18
|
+
$(".surname-wrapper").fadeOut();
|
19
|
+
}
|
11
20
|
});
|
12
21
|
|
22
|
+
|
13
23
|
$('#name-params').submit(function() {
|
14
24
|
|
25
|
+
$(".spinny").show();
|
26
|
+
|
15
27
|
var opts = {
|
16
28
|
count: $("select[name=count]").val(),
|
17
29
|
with_surname: $("input[name=with_surname]:checked").val() === "true"
|
@@ -33,8 +45,9 @@ $(document).ready(function() {
|
|
33
45
|
}
|
34
46
|
|
35
47
|
opts.callback = function(r) {
|
36
|
-
|
37
|
-
|
48
|
+
$(".spinny").hide();
|
49
|
+
$("#nameList").val(r.join("\n"));
|
50
|
+
}
|
38
51
|
namey.get(opts);
|
39
52
|
|
40
53
|
return false;
|
data/api/views/index.erb
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
<!-- shamelessly stolen from view-source:http://twitter.github.com/bootstrap/examples/hero.html -->
|
4
4
|
<head>
|
5
5
|
<meta charset="utf-8">
|
6
|
-
<title>Namey</title>
|
7
|
-
<meta name="description" content="">
|
8
|
-
<meta name="author" content="">
|
6
|
+
<title>Namey - A random name generator</title>
|
7
|
+
<meta name="description" content="a simple tool for generating random names">
|
8
|
+
<meta name="author" content="Colin Mitchell">
|
9
9
|
|
10
10
|
<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
|
11
11
|
<!--[if lt IE 9]>
|
@@ -20,25 +20,7 @@
|
|
20
20
|
|
21
21
|
<!-- Le styles -->
|
22
22
|
<link href="/bootstrap.css" rel="stylesheet">
|
23
|
-
<
|
24
|
-
body {
|
25
|
-
padding-top: 10px;
|
26
|
-
}
|
27
|
-
.hero-unit {
|
28
|
-
padding-top: 10px;
|
29
|
-
padding-bottom: 10px;
|
30
|
-
}
|
31
|
-
.hero-unit h1 {
|
32
|
-
font-size: 48px;
|
33
|
-
}
|
34
|
-
.hero-unit p {
|
35
|
-
font-size: 16px;
|
36
|
-
line-height: 18px;
|
37
|
-
font-weight: 100;
|
38
|
-
}
|
39
|
-
|
40
|
-
</style>
|
41
|
-
|
23
|
+
<link href="/namey.css" rel="stylesheet">
|
42
24
|
<!---
|
43
25
|
<link rel="shortcut icon" href="images/favicon.ico">
|
44
26
|
--->
|
@@ -49,23 +31,24 @@ padding-top: 10px;
|
|
49
31
|
|
50
32
|
<!-- Main hero unit for a primary marketing message or call to action -->
|
51
33
|
<div class="hero-unit">
|
52
|
-
<h1>Namey
|
53
|
-
<
|
54
|
-
|
55
|
-
gem of the same name. It uses the
|
34
|
+
<h1>Namey! <small>A random name generator</small></h1>
|
35
|
+
<p>Welcome to Namey, your friendly neighborhood random name
|
36
|
+
generator. It uses the
|
56
37
|
<a href="http://www.census.gov/genealogy/names/">US Census
|
57
38
|
Bureau database</a> of first and last names to generate random
|
58
39
|
names. You can specify gender, whether you want a common or
|
59
|
-
|
40
|
+
rare name, and so on. It's pretty easy, so... Lets make
|
41
|
+
some names!</p>
|
60
42
|
</div>
|
61
43
|
|
62
44
|
<section id="forms">
|
63
45
|
<div class="page-header">
|
64
|
-
<h1>
|
46
|
+
<h1>Options <small>What sort of names do you want?</small></h1>
|
65
47
|
</div>
|
48
|
+
|
66
49
|
<div class="row">
|
67
|
-
<div>
|
68
|
-
<form id="name-params">
|
50
|
+
<div class="span8">
|
51
|
+
<form id="name-params" class="form-stacked">
|
69
52
|
<fieldset>
|
70
53
|
<div class="clearfix">
|
71
54
|
<label id="type-opts">Name Type</label>
|
@@ -99,7 +82,7 @@ padding-top: 10px;
|
|
99
82
|
</div>
|
100
83
|
</div><!-- /clearfix -->
|
101
84
|
|
102
|
-
<div class="clearfix">
|
85
|
+
<div class="clearfix surname-wrapper">
|
103
86
|
<div class="input">
|
104
87
|
<ul class="inputs-list">
|
105
88
|
<li>
|
@@ -140,9 +123,13 @@ padding-top: 10px;
|
|
140
123
|
<li>
|
141
124
|
<label>
|
142
125
|
<input type="radio" name="frequency" value="custom" />
|
143
|
-
<span>Custom range
|
144
|
-
|
145
|
-
|
126
|
+
<span>Custom range </span>
|
127
|
+
|
128
|
+
<span class="custom_range_wrapper">
|
129
|
+
- From: <input class="span2 disabled" id="min_freq" name="min_freq" type="text" placeholder="(1-100)" disabled />
|
130
|
+
To: <input class="span2 disabled" id="max_freq" name="max_freq" type="text" placeholder="(1-100)" disabled /><br />
|
131
|
+
<small>(1 is super-common, 100 is super-rare)</small>
|
132
|
+
</span>
|
146
133
|
</label>
|
147
134
|
</li>
|
148
135
|
</ul>
|
@@ -164,48 +151,53 @@ padding-top: 10px;
|
|
164
151
|
</div><!-- /clearfix -->
|
165
152
|
|
166
153
|
<div class="clearfix">
|
167
|
-
<
|
154
|
+
<input type="submit" class="btn primary" value="Let's go!">
|
155
|
+
<span class="spinny"><img src="/ajax-loader.gif" /></span>
|
156
|
+
</div>
|
157
|
+
</fieldset>
|
158
|
+
</form>
|
159
|
+
</div>
|
160
|
+
|
161
|
+
<div class="span8" id="results">
|
162
|
+
<form id="name-results" class="form-stacked">
|
163
|
+
<label for="nameList" class="biglabel">Results:</label>
|
164
|
+
<fieldset>
|
165
|
+
<div class="clearfix">
|
168
166
|
<div class="input">
|
169
|
-
<textarea class="
|
167
|
+
<textarea class="large" name="nameList" id="nameList" rows="5"></textarea>
|
170
168
|
</div>
|
171
169
|
</div><!-- /clearfix -->
|
172
|
-
|
173
|
-
<div class="actions">
|
174
|
-
<input type="submit" class="btn primary" value="Gimme a name!">
|
175
|
-
</div>
|
176
170
|
</fieldset>
|
177
171
|
</form>
|
178
172
|
</div>
|
179
173
|
</div><!-- /row -->
|
180
|
-
|
181
174
|
</section>
|
182
175
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
176
|
+
<section id="about">
|
177
|
+
<div class="row">
|
178
|
+
<div class="span5">
|
179
|
+
<h2>Open Source</h2>
|
180
|
+
<p>Namey is powered by a ruby gem. The code is totally open source, do what you
|
181
|
+
like with it! <a href="https://github.com/muffinista/namey">Check it out on github</a></p>
|
182
|
+
</div>
|
183
|
+
<div class="span6">
|
184
|
+
<h2>I have an API!</h2>
|
185
|
+
<p>Are you a nerd? Do you like APIs? You're in luck! Namey
|
186
|
+
has a <a href="/api.js">Javascript API</a> available so
|
187
|
+
you can generate names however you would like.</p>
|
188
|
+
</div>
|
189
|
+
<div class="span5">
|
190
|
+
<h2>Muffinlabs</h2>
|
191
|
+
<p>Namey is
|
192
|
+
a <a href="http://muffinlabs.com">muffinlabs</a>
|
193
|
+
production. Please visit anytime!</p>
|
194
|
+
</div>
|
189
195
|
</div>
|
190
|
-
|
191
|
-
<h2>API Available</h2>
|
192
|
-
<p>Are you a nerd? Do you like APIs? You're in luck! Namey
|
193
|
-
has a <a href="/api.js">Javascript API</a> available so
|
194
|
-
you can generate names however you would like.</p>
|
195
|
-
</div>
|
196
|
-
<div class="span5">
|
197
|
-
<h2>Muffinlabs</h2>
|
198
|
-
<p>Namey is
|
199
|
-
a <a href="http://muffinlabs.com">muffinlabs</a>
|
200
|
-
production. Please visit!</p>
|
201
|
-
</div>
|
202
|
-
</div>
|
196
|
+
</section>
|
203
197
|
|
204
198
|
<footer>
|
205
199
|
<p>© Colin Mitchell 2011, <a href="http://muffinlabs.com">http://muffinlabs.com</a></p>
|
206
200
|
</footer>
|
207
|
-
|
208
201
|
</div> <!-- /container -->
|
209
|
-
|
210
202
|
</body>
|
211
203
|
</html>
|
data/lib/namey/generator.rb
CHANGED
@@ -70,7 +70,22 @@ module Namey
|
|
70
70
|
|
71
71
|
if ! ( params[:min_freq] || params[:max_freq] )
|
72
72
|
params[:min_freq], params[:max_freq] = frequency_values(params[:frequency])
|
73
|
+
else
|
74
|
+
|
75
|
+
#
|
76
|
+
# do some basic data validation in case someone is being a knucklehead
|
77
|
+
#
|
78
|
+
params[:min_freq] = params[:min_freq].to_i
|
79
|
+
params[:max_freq] = params[:max_freq].to_i
|
80
|
+
|
81
|
+
params[:max_freq] = params[:min_freq] + 1 if params[:max_freq] <= params[:min_freq]
|
82
|
+
|
83
|
+
# max_freq needs to be at least 4 to get any results back,
|
84
|
+
# because the most common male name only rates 3.3
|
85
|
+
# JAMES 3.318 3.318 1
|
86
|
+
params[:max_freq] = 4 if params[:max_freq] < 4
|
73
87
|
end
|
88
|
+
|
74
89
|
|
75
90
|
name = get_name(params[:type], params[:min_freq], params[:max_freq])
|
76
91
|
|
@@ -134,7 +149,8 @@ module Namey
|
|
134
149
|
# query the db for a name
|
135
150
|
#
|
136
151
|
def get_name(src, min_freq = 0, max_freq = 100)
|
137
|
-
random_sort(@db[src.to_sym].filter{(freq >= min_freq) & (freq <= max_freq)})
|
152
|
+
tmp = random_sort(@db[src.to_sym].filter{(freq >= min_freq) & (freq <= max_freq)})
|
153
|
+
tmp.count > 0 ? tmp.first[:name] : nil
|
138
154
|
end
|
139
155
|
end
|
140
156
|
end
|
data/lib/namey/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: namey
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-11 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sequel
|
16
|
-
requirement: &
|
16
|
+
requirement: &13029780 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *13029780
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &13029280 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *13029280
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: shoulda
|
38
|
-
requirement: &
|
38
|
+
requirement: &13028800 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *13028800
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yard
|
49
|
-
requirement: &
|
49
|
+
requirement: &13028320 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *13028320
|
58
58
|
description: Simple name generator, which can generate male/female names based on
|
59
59
|
US Census Data
|
60
60
|
email:
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- api/public/LICENSE
|
76
76
|
- api/public/Makefile
|
77
77
|
- api/public/README.md
|
78
|
+
- api/public/ajax-loader.gif
|
78
79
|
- api/public/api.js
|
79
80
|
- api/public/bootstrap.css
|
80
81
|
- api/public/bootstrap.min.css
|
@@ -126,6 +127,7 @@ files:
|
|
126
127
|
- api/public/lib/tables.less
|
127
128
|
- api/public/lib/type.less
|
128
129
|
- api/public/lib/variables.less
|
130
|
+
- api/public/namey.css
|
129
131
|
- api/public/ui.js
|
130
132
|
- api/views/index.erb
|
131
133
|
- bin/namey-load-data
|