namey 0.0.2 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/Gemfile +22 -1
  2. data/README.markdown +105 -0
  3. data/Rakefile +54 -0
  4. data/api/Gemfile +10 -0
  5. data/api/config.ru +8 -0
  6. data/api/namey_app.rb +50 -0
  7. data/api/public/LICENSE +176 -0
  8. data/api/public/Makefile +30 -0
  9. data/api/public/README.md +105 -0
  10. data/api/public/api.js +76 -0
  11. data/api/public/bootstrap.css +2467 -0
  12. data/api/public/bootstrap.min.css +356 -0
  13. data/api/public/docs/assets/css/docs.css +317 -0
  14. data/api/public/docs/assets/ico/bootstrap-apple-114x114.png +0 -0
  15. data/api/public/docs/assets/ico/bootstrap-apple-57x57.png +0 -0
  16. data/api/public/docs/assets/ico/bootstrap-apple-72x72.png +0 -0
  17. data/api/public/docs/assets/ico/favicon.ico +0 -0
  18. data/api/public/docs/assets/img/bird.png +0 -0
  19. data/api/public/docs/assets/img/browsers.png +0 -0
  20. data/api/public/docs/assets/img/example-diagram-01.png +0 -0
  21. data/api/public/docs/assets/img/example-diagram-02.png +0 -0
  22. data/api/public/docs/assets/img/example-diagram-03.png +0 -0
  23. data/api/public/docs/assets/img/grid-18px.png +0 -0
  24. data/api/public/docs/assets/img/twitter-logo-no-bird.png +0 -0
  25. data/api/public/docs/assets/js/application.js +52 -0
  26. data/api/public/docs/assets/js/google-code-prettify/prettify.css +94 -0
  27. data/api/public/docs/assets/js/google-code-prettify/prettify.js +28 -0
  28. data/api/public/docs/index.html +2037 -0
  29. data/api/public/docs/javascript.html +798 -0
  30. data/api/public/examples/container-app.html +119 -0
  31. data/api/public/examples/fluid.html +122 -0
  32. data/api/public/examples/hero.html +79 -0
  33. data/api/public/js/bootstrap-alerts.js +113 -0
  34. data/api/public/js/bootstrap-buttons.js +62 -0
  35. data/api/public/js/bootstrap-dropdown.js +55 -0
  36. data/api/public/js/bootstrap-modal.js +260 -0
  37. data/api/public/js/bootstrap-popover.js +86 -0
  38. data/api/public/js/bootstrap-scrollspy.js +107 -0
  39. data/api/public/js/bootstrap-tabs.js +80 -0
  40. data/api/public/js/bootstrap-twipsy.js +310 -0
  41. data/api/public/js/tests/index.html +40 -0
  42. data/api/public/js/tests/unit/bootstrap-alerts.js +41 -0
  43. data/api/public/js/tests/unit/bootstrap-buttons.js +42 -0
  44. data/api/public/js/tests/unit/bootstrap-dropdown.js +52 -0
  45. data/api/public/js/tests/unit/bootstrap-modal.js +151 -0
  46. data/api/public/js/tests/unit/bootstrap-popover.js +76 -0
  47. data/api/public/js/tests/unit/bootstrap-scrollspy.js +31 -0
  48. data/api/public/js/tests/unit/bootstrap-tabs.js +77 -0
  49. data/api/public/js/tests/unit/bootstrap-twipsy.js +81 -0
  50. data/api/public/js/tests/vendor/qunit.css +232 -0
  51. data/api/public/js/tests/vendor/qunit.js +1510 -0
  52. data/api/public/lib/bootstrap.less +26 -0
  53. data/api/public/lib/forms.less +479 -0
  54. data/api/public/lib/mixins.less +222 -0
  55. data/api/public/lib/patterns.less +1060 -0
  56. data/api/public/lib/reset.less +141 -0
  57. data/api/public/lib/scaffolding.less +137 -0
  58. data/api/public/lib/tables.less +224 -0
  59. data/api/public/lib/type.less +187 -0
  60. data/api/public/lib/variables.less +60 -0
  61. data/api/public/ui.js +42 -0
  62. data/api/views/index.erb +211 -0
  63. data/bin/{load-data → namey-load-data} +7 -1
  64. data/bin/random-name +4 -1
  65. data/data/dist.all.last +88799 -0
  66. data/data/names.db +0 -0
  67. data/lib/namey.rb +12 -5
  68. data/lib/namey/generator.rb +79 -10
  69. data/lib/namey/parser.rb +79 -16
  70. data/lib/namey/version.rb +2 -1
  71. data/namey.gemspec +8 -2
  72. data/spec/generator_spec.rb +54 -0
  73. data/spec/spec_helper.rb +19 -0
  74. metadata +95 -9
data/Gemfile CHANGED
@@ -1,4 +1,25 @@
1
- source "http://rubygems.org"
1
+ source :rubygems
2
2
 
3
3
  # Specify your gem's dependencies in namey.gemspec
4
4
  gemspec
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ gem 'simplecov', :require => false, :group => :test
10
+
11
+ gem "shoulda", ">= 0"
12
+ gem "rspec"
13
+
14
+ gem "bundler", "~> 1.0.0"
15
+ gem "watchr"
16
+ end
17
+
18
+ #
19
+ # couple extra gems for testing db connectivity
20
+ #
21
+ group :test do
22
+ gem "sequel"
23
+ gem "mysql"
24
+ gem "sqlite3"
25
+ end
@@ -0,0 +1,105 @@
1
+ Namey
2
+ =====
3
+
4
+ Namey is a ruby gem for auto-generating names. It uses the [US Census
5
+ Bureau database](http://www.census.gov/genealogy/names/) of first and last names to generate random
6
+ names. Since the database itself specifies the frequency of each name,
7
+ you can get specify whether you want a common name, rare name, etc.
8
+
9
+
10
+ ## Usage ##
11
+
12
+ Using namey is pretty straightforward.
13
+
14
+ require 'namey'
15
+ @generator = Namey::Generator.new
16
+
17
+ @generator.name
18
+ => "Maria Fisher"
19
+
20
+ Or, to get a particular frequency level, try one of these:
21
+
22
+ @generator.name(:common)
23
+ => "Michael Thomas"
24
+
25
+ @generator.name(:rare)
26
+ => "Deangelo Jotblad"
27
+
28
+ @generator.name(:all)
29
+ => "Emanuel Boddorf"
30
+
31
+ You can also specify `male` or `female` to stick to one gender:
32
+
33
+ @generator.male
34
+ => "David Gonzales"
35
+ @generator.female
36
+ => "Sharon Richardson"
37
+
38
+ @generator.male(:rare)
39
+ => "Son Plude"
40
+
41
+ @generator.female(:rare)
42
+ => "Blossom VanWie"
43
+
44
+ NOTE: All these methods default to returning common names unless you
45
+ specify a different level.
46
+
47
+ Finally, you can specify true/false as the second parameter to any
48
+ call to specify if you want a surname:
49
+
50
+ @generator.male(:common, false)
51
+ => "Michael"
52
+ @generator.male(:common, false)
53
+ => "William"
54
+
55
+ Finally, you can access the `generate` method directly and specify `min_freq`
56
+ and `max_freq` to get a range of names:
57
+
58
+ # a somewhat rare name
59
+ @generator.generate(:type => :male, :with_surname => true, :min_freq => 80, :max_freq => 100)
60
+ => "Salvatore Billard"
61
+
62
+ # a more rare name
63
+ @generator.generate(:type => :male, :with_surname => true, :min_freq => 90, :max_freq => 100)
64
+ => "Broderick Burhanuddin"
65
+
66
+ # a common name
67
+ @generator.generate(:type => :male, :with_surname => true, :min_freq => 0, :max_freq => 5)
68
+ => "James Davis"
69
+
70
+ # another common name
71
+ @generator.generate(:type => :female, :with_surname => true, :min_freq => 0, :max_freq => 5)
72
+ => "Linda Williams"
73
+
74
+ ## Data ##
75
+
76
+ Namey comes with a pre-loaded SQLite database. However, you can
77
+ specify a different datasource when initializing the gem:
78
+
79
+ @generator = Namey::Generator.new("mysql://username:passwrd@host/database")
80
+
81
+ Namey uses Sequel to access data, and is tested with both MySQL and
82
+ SQLite. It might need some tweaking to work with other engines.
83
+
84
+ If you want to fiddle around with the data, you can check out
85
+ Namey::Importer, or the `namey-load-data` script included with the
86
+ gem, which will generate the database from the original source files.
87
+
88
+
89
+ ## Capitalization ##
90
+
91
+ The data from the Census Bureau is in all caps, it looks a lot like
92
+ this:
93
+
94
+ SMITH 1.006 1.006 1
95
+ JOHNSON 0.810 1.816 2
96
+ WILLIAMS 0.699 2.515 3
97
+ JONES 0.621 3.136 4
98
+ BROWN 0.621 3.757 5
99
+
100
+ That's fine with basic names, but names with more than one capital in
101
+ them are challenging. The data is also stripped of apostrophes, so
102
+ O'Brien is actually OBRIEN. The namey parser attempts to correct some
103
+ of this, but it probably misses some. If you find any glaring
104
+ examples, just let me know.
105
+
data/Rakefile CHANGED
@@ -1,2 +1,56 @@
1
1
  require 'bundler'
2
2
  Bundler::GemHelper.install_tasks
3
+
4
+
5
+ require "namey/version"
6
+
7
+ require 'rspec/core'
8
+ require 'rspec/core/rake_task'
9
+ RSpec::Core::RakeTask.new(:spec) do |spec|
10
+ spec.pattern = FileList['spec/**/*_spec.rb']
11
+ end
12
+
13
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
14
+ spec.pattern = 'spec/**/*_spec.rb'
15
+ spec.rcov_opts = %w{--exclude .bundler,.rvm}
16
+ spec.rcov = true
17
+ end
18
+
19
+ task :default => :spec
20
+
21
+
22
+
23
+ desc "Generate RDoc"
24
+ task :doc => ['doc:generate']
25
+
26
+
27
+ #
28
+ # YARD task from http://stackoverflow.com/questions/2138427/can-i-get-my-readme-textile-into-my-rdoc-with-proper-formatting
29
+ #
30
+ namespace :doc do
31
+ project_root = File.expand_path(File.join(File.dirname(__FILE__)))
32
+ doc_destination = File.join(project_root, 'doc')
33
+
34
+ begin
35
+ require 'yard'
36
+ require 'yard/rake/yardoc_task'
37
+
38
+ YARD::Rake::YardocTask.new(:generate) do |yt|
39
+ yt.files = Dir.glob(File.join(project_root, 'lib', '**', '*.rb'))
40
+ #+
41
+ # [ File.join(project_root, 'README.markdown') ]
42
+ yt.options = ['--output-dir', doc_destination, '--readme', 'README.markdown']
43
+ end
44
+ rescue LoadError
45
+ desc "Generate YARD Documentation"
46
+ task :generate do
47
+ abort "Please install the YARD gem to generate rdoc."
48
+ end
49
+ end
50
+
51
+ desc "Remove generated documenation"
52
+ task :clean do
53
+ rm_r doc_destination if File.exists?(doc_destination)
54
+ end
55
+
56
+ end
@@ -0,0 +1,10 @@
1
+ source :rubygems
2
+ source 'http://gemcutter.org'
3
+
4
+ gem "sinatra"
5
+ gem "mysql"
6
+ gem "sequel"
7
+ gem "redcarpet"
8
+ gem "json"
9
+
10
+ gem "namey", :path => "/home/colin/Projects/namey"
@@ -0,0 +1,8 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+
4
+ Bundler.require
5
+
6
+ require './namey_app'
7
+ #run NameyApp
8
+ run Sinatra::Application
@@ -0,0 +1,50 @@
1
+ require 'sinatra'
2
+ require 'namey'
3
+ require 'json'
4
+
5
+ class Hash
6
+ def symbolize_keys!
7
+ keys.each do |key|
8
+ self[(key.to_sym rescue key) || key] = delete(key)
9
+ end
10
+ self
11
+ end
12
+ end
13
+
14
+ before do
15
+ @generator = Namey::Generator.new("mysql://root@localhost/namey")
16
+ end
17
+
18
+ get '/' do
19
+ # use index.haml for readme
20
+ erb :index #, :layout => :index
21
+ end
22
+
23
+ get '/name.?:format?' do
24
+ opts = {
25
+ :frequency => :common
26
+ }.merge(params.symbolize_keys!)
27
+
28
+ opts[:with_surname] = true if params[:with_surname] == "true"
29
+
30
+ [:type, :frequency].each do |key|
31
+ opts[key] = opts[key].to_sym if opts.has_key?(key)
32
+ end
33
+
34
+ opts.delete(:type) if ! [:male, :female, :surname].include?(opts[:type])
35
+ #opts[:type] = "both" if ! [:male, :female, :surname].include?(opts[:type])
36
+
37
+ count = (params.delete(:count) || 1).to_i
38
+ count = 10 if count > 10
39
+
40
+ names = 1.upto(count).collect do
41
+ @generator.generate(opts)
42
+ end
43
+
44
+ if params[:format] == "json"
45
+ content_type :json, 'charset' => 'utf-8'
46
+ JSON.pretty_generate names
47
+ else
48
+ ["<ul>", names.collect { |n| "<li>#{n}</li>" }.join(" "), "</ul>"].join("")
49
+ end
50
+ end
@@ -0,0 +1,176 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
@@ -0,0 +1,30 @@
1
+ VERSION=1.4.0
2
+ DATE=$(shell DATE)
3
+ BOOTSTRAP = ./bootstrap.css
4
+ BOOTSTRAP_MIN = ./bootstrap.min.css
5
+ BOOTSTRAP_LESS = ./lib/bootstrap.less
6
+ LESS_COMPRESSOR ?= `which lessc`
7
+ WATCHR ?= `which watchr`
8
+
9
+ build:
10
+ @@if test ! -z ${LESS_COMPRESSOR}; then \
11
+ sed -e 's/@VERSION/'"v${VERSION}"'/' -e 's/@DATE/'"${DATE}"'/' <${BOOTSTRAP_LESS} >${BOOTSTRAP_LESS}.tmp; \
12
+ lessc ${BOOTSTRAP_LESS}.tmp > ${BOOTSTRAP}; \
13
+ lessc ${BOOTSTRAP_LESS}.tmp > ${BOOTSTRAP_MIN} --compress; \
14
+ rm -f ${BOOTSTRAP_LESS}.tmp; \
15
+ echo "Bootstrap successfully built! - `date`"; \
16
+ else \
17
+ echo "You must have the LESS compiler installed in order to build Bootstrap."; \
18
+ echo "You can install it by running: npm install less -g"; \
19
+ fi
20
+
21
+ watch:
22
+ @@if test ! -z ${WATCHR}; then \
23
+ echo "Watching less files..."; \
24
+ watchr -e "watch('lib/.*\.less') { system 'make' }"; \
25
+ else \
26
+ echo "You must have the watchr installed in order to watch Bootstrap less files."; \
27
+ echo "You can install it by running: gem install watchr"; \
28
+ fi
29
+
30
+ .PHONY: build watch