namey 0.0.6 → 0.0.7

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