nameit 0.1.0
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/.gitignore +17 -0
- data/.travis.yml +18 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +11 -0
- data/Guardfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +108 -0
- data/Rakefile +11 -0
- data/bin/nameit +37 -0
- data/data/nameit-adjectives.txt +1124 -0
- data/data/nameit-nouns.txt +981 -0
- data/lib/nameit.rb +58 -0
- data/lib/nameit/version.rb +6 -0
- data/nameit.gemspec +25 -0
- data/spec/nameit_spec.rb +89 -0
- metadata +120 -0
data/lib/nameit.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require "nameit/version"
|
4
|
+
require "securerandom"
|
5
|
+
|
6
|
+
class Nameit
|
7
|
+
|
8
|
+
class Random
|
9
|
+
|
10
|
+
def rand(n = 0)
|
11
|
+
SecureRandom.random_number(n)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(options = {})
|
16
|
+
@random = options.fetch(:random, ::Nameit::Random.new)
|
17
|
+
@number = options.fetch(:number, false)
|
18
|
+
@max_number = [options.fetch(:max_number, 999), 1].max
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate
|
22
|
+
name = "#{random_adjective}-#{random_noun}"
|
23
|
+
name += "-#{random_number}" if number
|
24
|
+
name
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.generate(options = {})
|
28
|
+
new(options).generate
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
attr_reader :max_number, :number, :random
|
34
|
+
|
35
|
+
def adjectives
|
36
|
+
@adjectives ||= IO.readlines(data_file("nameit-adjectives.txt"))
|
37
|
+
end
|
38
|
+
|
39
|
+
def data_file(name)
|
40
|
+
File.join(File.dirname(__FILE__), "..", "data", name)
|
41
|
+
end
|
42
|
+
|
43
|
+
def nouns
|
44
|
+
@nouns ||= IO.readlines(data_file("nameit-nouns.txt"))
|
45
|
+
end
|
46
|
+
|
47
|
+
def random_adjective
|
48
|
+
adjectives[random.rand(adjectives.size)].chomp
|
49
|
+
end
|
50
|
+
|
51
|
+
def random_noun
|
52
|
+
nouns[random.rand(nouns.size)].chomp
|
53
|
+
end
|
54
|
+
|
55
|
+
def random_number
|
56
|
+
"%0#{(Math.log10(max_number) + 1).to_i}d" % random.rand(max_number)
|
57
|
+
end
|
58
|
+
end
|
data/nameit.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'nameit/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "nameit"
|
8
|
+
spec.version = Nameit::VERSION
|
9
|
+
spec.authors = ["Fletcher Nichol"]
|
10
|
+
spec.email = ["fnichol@nichol.ca"]
|
11
|
+
spec.description = %q{Nameit is a small zero-dependency library and tool that helps you generate a random name for a project, database, session--you decide. You get glorious - style names such as "pushy-clock" and "lovely-ducks" or ask for a random number on the end to give you names like "numberless-cactus-123" and "superb-shoes-915".}
|
12
|
+
spec.summary = %q{Give it a name, why dont'cha?}
|
13
|
+
spec.homepage = "http://fnichol.github.com/nameit"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "minitest"
|
24
|
+
spec.add_development_dependency "simplecov"
|
25
|
+
end
|
data/spec/nameit_spec.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
if ENV['SIMPLECOV']
|
4
|
+
require 'simplecov'
|
5
|
+
SimpleCov.adapters.define 'gem' do
|
6
|
+
command_name 'Specs'
|
7
|
+
|
8
|
+
add_filter '.gem/'
|
9
|
+
add_filter '/spec/'
|
10
|
+
|
11
|
+
add_group 'Binaries', '/bin/'
|
12
|
+
add_group 'Libraries', '/lib/'
|
13
|
+
end
|
14
|
+
SimpleCov.start 'gem'
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'minitest/autorun'
|
18
|
+
require 'nameit'
|
19
|
+
|
20
|
+
class UnRandom
|
21
|
+
|
22
|
+
def self.rand(x = 0)
|
23
|
+
@values.nil? ? 2 : @values.next
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.values=(array)
|
27
|
+
@values = Array(array).cycle
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe Nameit do
|
32
|
+
|
33
|
+
describe "#generate" do
|
34
|
+
|
35
|
+
before { UnRandom.values = [55, 55, 105, 105] }
|
36
|
+
|
37
|
+
it "returns random <adjective>-<noun> names" do
|
38
|
+
nameit = Nameit.new(:random => UnRandom)
|
39
|
+
nameit.generate.must_equal "ambiguous-ball"
|
40
|
+
nameit.generate.must_equal "blue-book"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "returns random name with random number" do
|
44
|
+
nameit = Nameit.new(:random => UnRandom, :number => true)
|
45
|
+
nameit.stub(:rand, 67) do
|
46
|
+
nameit.generate.must_equal "ambiguous-ball-105"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it "return random name with a smaller zero-padded number" do
|
51
|
+
UnRandom.values = [55, 55, 2]
|
52
|
+
nameit = Nameit.new(
|
53
|
+
:random => UnRandom, :number => true, :max_number => 99)
|
54
|
+
nameit.generate.must_equal "ambiguous-ball-02"
|
55
|
+
end
|
56
|
+
|
57
|
+
it "uses SecureRandom.random_number by default" do
|
58
|
+
SecureRandom.stub :random_number, 0 do
|
59
|
+
Nameit.new.generate.must_equal "aback-able"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe ".generate" do
|
65
|
+
|
66
|
+
before { UnRandom.values = [2, 2, 3, 3] }
|
67
|
+
|
68
|
+
it "returns random <adjective>-<noun> names" do
|
69
|
+
Nameit.generate(:random => UnRandom).must_equal "abandoned-achieve"
|
70
|
+
Nameit.generate(:random => UnRandom).must_equal "abashed-achiever"
|
71
|
+
end
|
72
|
+
|
73
|
+
it "returns random name with random number" do
|
74
|
+
Nameit.generate(:random => UnRandom, :number => true).
|
75
|
+
must_equal "abandoned-achieve-003"
|
76
|
+
end
|
77
|
+
|
78
|
+
it "return random name with a smaller zero-padded number" do
|
79
|
+
Nameit.generate(:random => UnRandom, :number => true, :max_number => 99).
|
80
|
+
must_equal "abandoned-achieve-03"
|
81
|
+
end
|
82
|
+
|
83
|
+
it "uses SecureRandom.random_number by default" do
|
84
|
+
SecureRandom.stub :random_number, 0 do
|
85
|
+
Nameit.generate.must_equal "aback-able"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nameit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Fletcher Nichol
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Nameit is a small zero-dependency library and tool that helps you generate
|
70
|
+
a random name for a project, database, session--you decide. You get glorious - style
|
71
|
+
names such as "pushy-clock" and "lovely-ducks" or ask for a random number on the
|
72
|
+
end to give you names like "numberless-cactus-123" and "superb-shoes-915".
|
73
|
+
email:
|
74
|
+
- fnichol@nichol.ca
|
75
|
+
executables:
|
76
|
+
- nameit
|
77
|
+
extensions: []
|
78
|
+
extra_rdoc_files: []
|
79
|
+
files:
|
80
|
+
- .gitignore
|
81
|
+
- .travis.yml
|
82
|
+
- CHANGELOG.md
|
83
|
+
- Gemfile
|
84
|
+
- Guardfile
|
85
|
+
- LICENSE.txt
|
86
|
+
- README.md
|
87
|
+
- Rakefile
|
88
|
+
- bin/nameit
|
89
|
+
- data/nameit-adjectives.txt
|
90
|
+
- data/nameit-nouns.txt
|
91
|
+
- lib/nameit.rb
|
92
|
+
- lib/nameit/version.rb
|
93
|
+
- nameit.gemspec
|
94
|
+
- spec/nameit_spec.rb
|
95
|
+
homepage: http://fnichol.github.com/nameit
|
96
|
+
licenses:
|
97
|
+
- MIT
|
98
|
+
metadata: {}
|
99
|
+
post_install_message:
|
100
|
+
rdoc_options: []
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - '>='
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
108
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
requirements: []
|
114
|
+
rubyforge_project:
|
115
|
+
rubygems_version: 2.0.14
|
116
|
+
signing_key:
|
117
|
+
specification_version: 4
|
118
|
+
summary: Give it a name, why dont'cha?
|
119
|
+
test_files:
|
120
|
+
- spec/nameit_spec.rb
|