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 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: