namey 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,7 +11,7 @@ class Hash
11
11
  end
12
12
  end
13
13
 
14
- configure do
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.pretty_generate names
46
+ JSON.generate names
47
47
  else
48
48
  ["<ul>", names.collect { |n| "<li>#{n}</li>" }.join(" "), "</ul>"].join("")
49
49
  end
@@ -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
+ }
@@ -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
- $("#nameList").val(r);
37
- }
48
+ $(".spinny").hide();
49
+ $("#nameList").val(r.join("\n"));
50
+ }
38
51
  namey.get(opts);
39
52
 
40
53
  return false;
@@ -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
- <style type="text/css">
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!</h1>
53
- <h2>A random name generator</h1>
54
- <p>Welcome to Namey, the random name generator, powered by the ruby
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
- rare name, and so on. It's pretty easy, so...</p>
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>Lets make some names!</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: </span>
144
- From: <input class="span2 disabled" id="min_freq" name="min_freq" type="text" placeholder="(0-100)" disabled />
145
- To: <input class="span2 disabled" id="max_freq" name="max_freq" type="text" placeholder="(0-100)" disabled />
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
- <label for="disabledInput">Results:</label>
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="xxlarge" name="nameList" id="nameList" rows="5"></textarea>
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
- <!-- Example row of columns -->
184
- <div class="row">
185
- <div class="span5">
186
- <h2>Open Source</h2>
187
- <p>The code for namey is totally open source, do what you
188
- like with it! <a href="https://github.com/muffinista/namey">Check it out on github</a></p>
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
- <div class="span6">
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>&copy; 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>
@@ -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)}).first[:name]
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
@@ -1,4 +1,4 @@
1
1
  module Namey
2
2
  NAME = "namey"
3
- VERSION = "0.0.6"
3
+ VERSION = "0.0.7"
4
4
  end
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.6
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-10 00:00:00.000000000Z
12
+ date: 2011-11-11 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sequel
16
- requirement: &12886880 !ruby/object:Gem::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: *12886880
24
+ version_requirements: *13029780
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sqlite3
27
- requirement: &12886380 !ruby/object:Gem::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: *12886380
35
+ version_requirements: *13029280
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: shoulda
38
- requirement: &12885900 !ruby/object:Gem::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: *12885900
46
+ version_requirements: *13028800
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &12885420 !ruby/object:Gem::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: *12885420
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