name-generator 0.0.2
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.
- data/lib/name-generator.rb +2 -0
- data/lib/name-generator/main.rb +62 -0
- data/lib/name-generator/version.rb +9 -0
- data/spec/spec_helper.rb +1 -0
- metadata +83 -0
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'active_support/core_ext/array/random_access'
|
2
|
+
require 'active_support/core_ext/string/inflections'
|
3
|
+
|
4
|
+
# This is a ruby-rewrite of "namegen.py" by Laust Rud Jacobsen (2010).
|
5
|
+
|
6
|
+
# From the original source-file (http://www.ailis.de/~k/archives/28-Name-Generator.html)
|
7
|
+
#
|
8
|
+
# This class generates names in the quality of the planet names used in
|
9
|
+
# the classic game Elite. The algorithm used in this class comes from
|
10
|
+
# the Mote project (http://mote.sourceforge.net/)
|
11
|
+
|
12
|
+
|
13
|
+
module NameGenerator
|
14
|
+
class Main
|
15
|
+
|
16
|
+
def next_name syllables = random_syllable_count
|
17
|
+
name = generate_name(syllables)
|
18
|
+
until sensible_name?(name)
|
19
|
+
name = generate_name(syllables)
|
20
|
+
end
|
21
|
+
name.titlecase
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def generate_name syllables
|
26
|
+
name = (1...syllables).collect do
|
27
|
+
digraphs.sample
|
28
|
+
end
|
29
|
+
name << (digraphs + trigraphs).sample
|
30
|
+
|
31
|
+
name.join
|
32
|
+
end
|
33
|
+
|
34
|
+
def sensible_name? name
|
35
|
+
name !=~ /.*[aeiou]{3}.*/i # reject if at least three vowels in a row
|
36
|
+
end
|
37
|
+
|
38
|
+
def random_syllable_count
|
39
|
+
[2, 3, 4].sample
|
40
|
+
end
|
41
|
+
|
42
|
+
def digraphs
|
43
|
+
[
|
44
|
+
"a", "ac", "ad", "ar", "as", "at", "ax", "ba", "bi", "bo", "ce", "ci",
|
45
|
+
"co", "de", "di", "e", "ed", "en", "es", "ex", "fa", "fo", "ga", "ge",
|
46
|
+
"gi", "gu", "ha", "he", "in", "is", "it", "ju", "ka", "ky", "la", "le",
|
47
|
+
"le", "lo", "mi", "mo", "na", "ne", "ne", "ni", "no", "o", "ob", "oi",
|
48
|
+
"ol", "on", "or", "or", "os", "ou", "pe", "pi", "po", "qt", "re", "ro",
|
49
|
+
"sa", "se", "so", "ta", "te", "ti", "to", "tu", "ud", "um", "un", "us",
|
50
|
+
"ut", "va", "ve", "ve", "za", "zi"
|
51
|
+
]
|
52
|
+
end
|
53
|
+
|
54
|
+
def trigraphs
|
55
|
+
[
|
56
|
+
"cla", "clu", "cra", "cre", "dre", "dro", "pha", "phi", "pho", "sha",
|
57
|
+
"she", "sta", "stu", "tha", "the", "thi", "thy", "tri"
|
58
|
+
]
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'lib/name-generator'
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: name-generator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Laust Rud Jacobsen
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-10-14 00:00:00 +02:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: activesupport
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 5
|
30
|
+
segments:
|
31
|
+
- 3
|
32
|
+
version: "3"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
description:
|
36
|
+
email: rud@personal-it.dk
|
37
|
+
executables: []
|
38
|
+
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files: []
|
42
|
+
|
43
|
+
files:
|
44
|
+
- lib/name-generator/main.rb
|
45
|
+
- lib/name-generator/version.rb
|
46
|
+
- lib/name-generator.rb
|
47
|
+
- spec/spec_helper.rb
|
48
|
+
has_rdoc: true
|
49
|
+
homepage:
|
50
|
+
licenses: []
|
51
|
+
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
|
55
|
+
require_paths:
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
hash: 3
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
version: "0"
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
requirements: []
|
76
|
+
|
77
|
+
rubyforge_project:
|
78
|
+
rubygems_version: 1.3.7
|
79
|
+
signing_key:
|
80
|
+
specification_version: 3
|
81
|
+
summary: Easily generate game-compatible names
|
82
|
+
test_files:
|
83
|
+
- spec/spec_helper.rb
|