name_gen 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b5f8dcadb8cf54f43a253b8d5f845b4b9875cfe8
4
- data.tar.gz: cf19afad60aacf8c54221ed3d9e5216a81974bb3
3
+ metadata.gz: 9d5b80b8bec3733a3be8d37faabb106cc90bf4d9
4
+ data.tar.gz: 76482bde2577a054b3f934ee2553778916490347
5
5
  SHA512:
6
- metadata.gz: 3e1e06dcec0570de6ac4b10cd1c19c603bc8f57a9c2be51814ee7970628e6b032ebcdf4a5e685876354da0c83fd8c8e3def941b0f7beddd46998c13d336cfce2
7
- data.tar.gz: db87cd94a00448022bff1e8d4e0e74eba52cd6f8d2f0aeabee5b2f4e2d0ceffb1a3c10062d18ce2f0ea542c596e6637a6fc52320efcb87127de286eb3a7d6bbc
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)
@@ -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,9 @@
1
+ module NameGen
2
+ class Config
3
+ attr_accessor :type
4
+
5
+ def initialize(type = :markov)
6
+ @type = type
7
+ end
8
+ end
9
+ end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module NameGen
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.2.1'.freeze
3
3
  end
data/lib/name_gen.rb CHANGED
@@ -1,17 +1,25 @@
1
- require "name_gen/version"
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
- @generator = Generator.new(type)
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 = "exe"
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
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.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - nikitasmall
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-18 00:00:00.000000000 Z
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: