name_gen 0.2.0 → 0.2.1
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 +4 -4
- data/bin/name_gen +39 -0
- data/config/syllable.txt +1 -0
- data/lib/name_gen/config.rb +9 -0
- data/lib/name_gen/generator.rb +18 -0
- data/lib/name_gen/markov_generator.rb +19 -0
- data/lib/name_gen/rand_generator.rb +36 -0
- data/lib/name_gen/version.rb +1 -1
- data/lib/name_gen.rb +10 -2
- data/name_gen.gemspec +2 -2
- metadata +13 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d5b80b8bec3733a3be8d37faabb106cc90bf4d9
|
4
|
+
data.tar.gz: 76482bde2577a054b3f934ee2553778916490347
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a29968f350f1ed73894a7b7522658ab37f5e1f32a70a3813a9dfebdedbf238ce7d1e26ff47f0e031b67fa3c6118414086df858d86925dbe3124b97b58d75d0b4
|
7
|
+
data.tar.gz: 96e44882a2449a77bf2c46e2e0ac93bccf0c0d698b4017934d3613038cc93160c1424d3dae56ca03cef1ca42d6a270a52b26eda6e7b24b73ff8bcae97878d0be
|
data/bin/name_gen
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
|
5
|
+
require "bundler/setup"
|
6
|
+
require "name_gen"
|
7
|
+
|
8
|
+
Options = Struct.new(:type, :len)
|
9
|
+
|
10
|
+
class Parser
|
11
|
+
def self.parse(options)
|
12
|
+
args = Options.new('markov', 3)
|
13
|
+
|
14
|
+
opt_parser = OptionParser.new do |opts|
|
15
|
+
opts.banner = "Usage: name_gen [OPTIONS]. List of available options:"
|
16
|
+
|
17
|
+
opts.on("-t TYPE", "--type=TYPE", "Type of generator") do |type|
|
18
|
+
args.type = type
|
19
|
+
end
|
20
|
+
|
21
|
+
opts.on("-l LEN", "--len=LEN", "Number of syllables for name", Integer) do |len|
|
22
|
+
args.len = len
|
23
|
+
end
|
24
|
+
|
25
|
+
opts.on("-h", "--help", "Prints this help") do
|
26
|
+
puts opts
|
27
|
+
exit
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
opt_parser.parse!(options)
|
32
|
+
return args
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
options = Parser.parse(ARGV)
|
37
|
+
|
38
|
+
NameGen::init(options.type.to_sym)
|
39
|
+
p NameGen::get_name(options.len)
|
data/config/syllable.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
na mg ta re ra te ty ti ro co ci cy ua lo la le lo rem bet and pet op or oh ji jo fe fa ay au ve
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module NameGen
|
2
|
+
class Generator
|
3
|
+
def initialize
|
4
|
+
@markov_generator = NameGen::MarkovGenerator.new
|
5
|
+
@rand_generator = NameGen::RandGenerator.new
|
6
|
+
end
|
7
|
+
|
8
|
+
def get_name(syllables)
|
9
|
+
case NameGen::configuration.type
|
10
|
+
when :markov
|
11
|
+
@markov_generator.get_name(syllables)
|
12
|
+
when :rand
|
13
|
+
@rand_generator.get_name(syllables)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module NameGen
|
2
|
+
class MarkovGenerator
|
3
|
+
def initialize
|
4
|
+
@elements_collection = File.read(File.join(File.dirname(__FILE__),
|
5
|
+
'..', '..', 'config',
|
6
|
+
'syllable.txt')).split
|
7
|
+
end
|
8
|
+
|
9
|
+
def get_name(elements)
|
10
|
+
result_name = []
|
11
|
+
|
12
|
+
elements.times do
|
13
|
+
result_name << @elements_collection.sample
|
14
|
+
end
|
15
|
+
|
16
|
+
result_name.join.capitalize
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module NameGen
|
2
|
+
class RandGenerator
|
3
|
+
CONS = %w(q w r t p s d f g h j k l z x c v b n m)
|
4
|
+
VOWELS = %w(e y u i o a)
|
5
|
+
|
6
|
+
OPTIONS = [:con1_vow1, :con1, :con1_vow2, :vow1]
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_name(elements)
|
12
|
+
result_name = []
|
13
|
+
|
14
|
+
elements.times do
|
15
|
+
result_name << get_syllable
|
16
|
+
end
|
17
|
+
|
18
|
+
result_name.join.capitalize
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def get_syllable
|
24
|
+
case OPTIONS.sample
|
25
|
+
when :con1_vow1
|
26
|
+
[].push(CONS.sample).push(VOWELS.sample).shuffle.join
|
27
|
+
when :con1_vow2
|
28
|
+
[].push(CONS.sample).push(VOWELS.sample).push(VOWELS.sample).shuffle.join
|
29
|
+
when :con1
|
30
|
+
CONS.sample
|
31
|
+
when :vow1
|
32
|
+
VOWELS.sample
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/name_gen/version.rb
CHANGED
data/lib/name_gen.rb
CHANGED
@@ -1,17 +1,25 @@
|
|
1
|
-
require
|
1
|
+
require 'name_gen/version'
|
2
2
|
|
3
3
|
require_relative './name_gen/rand_generator'
|
4
4
|
require_relative './name_gen/markov_generator'
|
5
5
|
require_relative './name_gen/generator'
|
6
|
+
require_relative './name_gen/config'
|
6
7
|
|
7
8
|
module NameGen
|
8
9
|
class << self
|
10
|
+
attr_reader :configuration
|
11
|
+
|
9
12
|
def init(type = :markov)
|
10
|
-
@
|
13
|
+
@configuration = NameGen::Config.new(type)
|
14
|
+
@generator = NameGen::Generator.new
|
11
15
|
end
|
12
16
|
|
13
17
|
def get_name(elements = 3)
|
14
18
|
@generator.get_name(elements)
|
15
19
|
end
|
20
|
+
|
21
|
+
def configure
|
22
|
+
yield(configuration)
|
23
|
+
end
|
16
24
|
end
|
17
25
|
end
|
data/name_gen.gemspec
CHANGED
@@ -17,8 +17,8 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
18
|
f.match(%r{^(test|spec|features)/})
|
19
19
|
end
|
20
|
-
spec.bindir = "
|
21
|
-
spec.executables = spec.files.grep(%r{^
|
20
|
+
spec.bindir = "bin"
|
21
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.14"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: name_gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nikitasmall
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -55,7 +55,10 @@ dependencies:
|
|
55
55
|
description: Simple gem to create names
|
56
56
|
email:
|
57
57
|
- nikitasosnov@yahoo.com
|
58
|
-
executables:
|
58
|
+
executables:
|
59
|
+
- console
|
60
|
+
- name_gen
|
61
|
+
- setup
|
59
62
|
extensions: []
|
60
63
|
extra_rdoc_files: []
|
61
64
|
files:
|
@@ -67,8 +70,14 @@ files:
|
|
67
70
|
- README.md
|
68
71
|
- Rakefile
|
69
72
|
- bin/console
|
73
|
+
- bin/name_gen
|
70
74
|
- bin/setup
|
75
|
+
- config/syllable.txt
|
71
76
|
- lib/name_gen.rb
|
77
|
+
- lib/name_gen/config.rb
|
78
|
+
- lib/name_gen/generator.rb
|
79
|
+
- lib/name_gen/markov_generator.rb
|
80
|
+
- lib/name_gen/rand_generator.rb
|
72
81
|
- lib/name_gen/version.rb
|
73
82
|
- name_gen.gemspec
|
74
83
|
homepage:
|