random_name_generator 0.0.7 → 1.0.0

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: c959fbffdb7ee309edcc01531d7bb7be83f4f025
4
- data.tar.gz: 0f7aa83bf9afaceb275a2f4f2e08c934057f6a49
3
+ metadata.gz: ef97eac73bd01cde0aacdd9342b7514ffa29788d
4
+ data.tar.gz: 97dd28a80b0d73b84f8f00e2dc6103930fab19c2
5
5
  SHA512:
6
- metadata.gz: f68dcd0cb6733521769618c73e3f2ce18ef454e2381c9205c40a9da7183a188af1b196df3dda0bb9bfb1da395c60d6dd5212d542dff650f9af19ff97b14d5310
7
- data.tar.gz: 5480e195c271c543c83c7adb4952a82bb1246f8f554b90e3fc8c5441fdff2f1b647629641f04ed12056e0760afe8efc0f8bb9ba802c7efe9fe8ea507b7c33dda
6
+ metadata.gz: 40bb462a879adb4a844ed64b9443d5ded04f7c2f26a96355398501dbfb724b1e336d8e781391163ae3a33a9716fe6d2721af11c2993ee38958e3a2efa775f5b9
7
+ data.tar.gz: 46a06d12ab64b94ace324d895c4fd08a75acacbb02f35ee5ab1e7f14f603a87628a1e5d086c8c1aebd63b25e87a7810bd2d5c8e27606181688ab67812fc3fec2
@@ -0,0 +1,18 @@
1
+ engines:
2
+ bundler-audit:
3
+ enabled: true
4
+ duplication:
5
+ enabled: true
6
+ config:
7
+ languages:
8
+ - ruby
9
+ fixme:
10
+ enabled: true
11
+ rubocop:
12
+ enabled: true
13
+ ratings:
14
+ paths:
15
+ - Gemfile.lock
16
+ - "**.rb"
17
+ exclude_paths:
18
+ - test/
@@ -0,0 +1 @@
1
+ service_name: travis-ci
@@ -1,6 +1,6 @@
1
1
  Metrics/AbcSize:
2
2
  Enabled: true
3
- Max: 16
3
+ Max: 22
4
4
 
5
5
  Metrics/ClassLength:
6
6
  Description: 'Avoid classes longer than 100 lines of code.'
data/Gemfile CHANGED
@@ -14,3 +14,6 @@ group :development do
14
14
  gem 'reek'
15
15
  gem 'rubocop'
16
16
  end
17
+
18
+ gem 'codeclimate-test-reporter', group: :test, require: nil
19
+ gem 'coveralls', require: false
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- random_name_generator (0.0.7)
4
+ random_name_generator (1.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -15,11 +15,20 @@ GEM
15
15
  builder (3.2.2)
16
16
  codeclimate-engine-rb (0.3.1)
17
17
  virtus (~> 1.0)
18
+ codeclimate-test-reporter (0.5.0)
19
+ simplecov (>= 0.7.1, < 1.0.0)
18
20
  coderay (1.1.1)
19
21
  coercible (1.0.0)
20
22
  descendants_tracker (~> 0.0.1)
23
+ coveralls (0.8.13)
24
+ json (~> 1.8)
25
+ simplecov (~> 0.11.0)
26
+ term-ansicolor (~> 1.3)
27
+ thor (~> 0.19.1)
28
+ tins (~> 1.6.0)
21
29
  descendants_tracker (0.0.4)
22
30
  thread_safe (~> 0.3, >= 0.3.1)
31
+ docile (1.1.5)
23
32
  equalizer (0.0.11)
24
33
  ffi (1.9.10)
25
34
  guard (1.4.0)
@@ -30,6 +39,7 @@ GEM
30
39
  guard-compat (~> 1.2)
31
40
  minitest (>= 3.0)
32
41
  ice_nine (0.11.2)
42
+ json (1.8.3)
33
43
  listen (3.0.6)
34
44
  rb-fsevent (>= 0.9.3)
35
45
  rb-inotify (>= 0.9.7)
@@ -66,9 +76,17 @@ GEM
66
76
  ruby-progressbar (~> 1.7)
67
77
  unicode-display_width (~> 1.0, >= 1.0.1)
68
78
  ruby-progressbar (1.7.5)
79
+ simplecov (0.11.2)
80
+ docile (~> 1.1.0)
81
+ json (~> 1.8)
82
+ simplecov-html (~> 0.10.0)
83
+ simplecov-html (0.10.0)
69
84
  slop (3.6.0)
85
+ term-ansicolor (1.3.2)
86
+ tins (~> 1.0)
70
87
  thor (0.19.1)
71
88
  thread_safe (0.3.5)
89
+ tins (1.6.0)
72
90
  unicode-display_width (1.0.2)
73
91
  virtus (1.0.5)
74
92
  axiom-types (~> 0.1)
@@ -81,6 +99,8 @@ PLATFORMS
81
99
 
82
100
  DEPENDENCIES
83
101
  bundler (~> 1.11)
102
+ codeclimate-test-reporter
103
+ coveralls
84
104
  guard
85
105
  guard-minitest
86
106
  minitest
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # RandomNameGenerator
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/random_name_generator.svg)](https://badge.fury.io/rb/random_name_generator)
3
4
  [![Build Status](https://travis-ci.org/folkengine/random_name_generator.svg?branch=master)](https://travis-ci.org/folkengine/random_name_generator)
5
+ [![Code Climate](https://codeclimate.com/github/folkengine/random_name_generator/badges/gpa.svg)](https://codeclimate.com/github/folkengine/random_name_generator)
6
+ [![Dependency Status](https://gemnasium.com/folkengine/random_name_generator.svg)](https://gemnasium.com/folkengine/random_name_generator)
7
+ [![Coverage Status](https://coveralls.io/repos/github/folkengine/random_name_generator/badge.svg?branch=master)](https://coveralls.io/github/folkengine/random_name_generator?branch=master)
8
+ [![Inline docs](http://inch-ci.org/github/folkengine/random_name_generator.svg?branch=master)](http://inch-ci.org/github/folkengine/random_name_generator)
4
9
 
5
10
  Ruby port of [java-random-name-generator](https://github.com/folkengine/java-random-name-generator).
6
11
 
@@ -70,6 +75,18 @@ bin/random_name_generator [-efgr?]
70
75
 
71
76
  Add the gem's bin directory to you path in order to have instant access to RandomNameGenerator.
72
77
 
78
+ ## Porting and Refactoring Notes
79
+
80
+ The big refactoring over the original Java version is the creation of the RNGSyllable class. It takes
81
+ over most of the complexity of parsing each syllable, greatly simplifying the Random Name Generator code.
82
+
83
+ Part of the reason for working on this gem was to work on the following goals to improve my Ruby craft:
84
+
85
+ * Code confidently in the spirit of Advi Grimm's [Confident Ruby](http://www.confidentruby.com/).
86
+ * Use [Travis-CI](https://travis-ci.org/folkengine/random_name_generator) for build validation.
87
+ * Use [Rubocop](https://github.com/bbatsov/rubocop) and [Reek](https://github.com/troessner/reek) for code quality.
88
+ * Deploy it to [RubyGems.org](https://rubygems.org/gems/random_name_generator).
89
+
73
90
  ## Development
74
91
 
75
92
  After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -84,6 +101,8 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
84
101
 
85
102
  ## Alternatives
86
103
 
104
+ There are several other great name generator gems. They really aren't designed for fantasy style names.
105
+
87
106
  * [Faker](https://github.com/stympy/faker)
88
107
  * [Namey](https://github.com/muffinista/namey)
89
108
  * [How To Write A Name Generator (In Ruby)](http://www.skorks.com/2009/07/how-to-write-a-name-generator-in-ruby/)
@@ -16,6 +16,7 @@
16
16
  -am
17
17
  -an
18
18
  -anc
19
+ -and +c
19
20
  -ang
20
21
  -anti
21
22
  -ap
@@ -30,8 +31,10 @@ ama -c +c
30
31
  ay -c
31
32
  ast -c
32
33
  bat
34
+ dra +c
33
35
  dus
34
36
  ez -c +v
37
+ ha -c +c
35
38
  i -c +c
36
39
  ia -c +c
37
40
  it -c -v
@@ -43,6 +46,7 @@ or
43
46
  ra +c
44
47
  rat
45
48
  rax +v
49
+ real
46
50
  sh
47
51
  thi +c
48
52
 
@@ -53,6 +57,7 @@ thi +c
53
57
  +es -c
54
58
  +ias -c
55
59
  +iel
60
+ +ka
56
61
  +lat
57
62
  +lech
58
63
  +ma
@@ -63,6 +68,7 @@ thi +c
63
68
  +on -c
64
69
  +rept -v
65
70
  +res
71
+ +s -v
66
72
  +van
67
73
  +xas -v
68
74
  +y -c
@@ -71,9 +77,6 @@ thi +c
71
77
 
72
78
  # https://en.wikipedia.org/wiki/The_infernal_names
73
79
 
74
-
75
- Andhaka (Hindu mythology)
76
- Andras (Christian demonology)
77
80
  Andrealphus (Christian demonology)
78
81
  Andromalius (Christian demonology)
79
82
  Antichrist (Christian demonology)
@@ -1,5 +1,17 @@
1
1
  require_relative 'rng_syllable'
2
2
 
3
+ # RandomNameGenerator:
4
+ #
5
+ # Examples
6
+ #
7
+ # rng = RandomNameGenerator.new(RandomNameGenerator::GOBLIN)
8
+ # puts rng.compose(3)
9
+ #
10
+ # By default RandomNameGenerator uses the Fantasy syllable file and creates a name with between 2 and 5 syllables.
11
+ #
12
+ # rng = RandomNameGenerator.new
13
+ # puts rng.compose
14
+ #
3
15
  class RandomNameGenerator
4
16
  dirname = File.dirname(__FILE__)
5
17
 
@@ -19,6 +31,7 @@ class RandomNameGenerator
19
31
  refresh
20
32
  end
21
33
 
34
+ # Public: Static factory method that instantiates a RandomNameGenerator in a random language.
22
35
  def self.flip_mode
23
36
  langs = [RandomNameGenerator::FANTASY,
24
37
  RandomNameGenerator::ELVEN,
@@ -36,6 +49,16 @@ class RandomNameGenerator
36
49
  name.map(&:to_s).join.capitalize
37
50
  end
38
51
 
52
+ def self.pick_number_of_syllables
53
+ [2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5].sample
54
+ end
55
+
56
+ def to_s
57
+ "NameGenerator (#{@file.path})"
58
+ end
59
+
60
+ private
61
+
39
62
  def determine_middle_syllables(count, pre)
40
63
  determine_next_syllables(count, pre, @mid_syllables)
41
64
  end
@@ -76,13 +99,4 @@ class RandomNameGenerator
76
99
  end
77
100
  end
78
101
  end
79
-
80
- def self.pick_number_of_syllables
81
- distribution = [2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5]
82
- distribution.sample
83
- end
84
-
85
- def to_s
86
- "NameGenerator (#{@file.path})"
87
- end
88
102
  end
@@ -1,3 +1,18 @@
1
+ # RNGSyllable: Class for managing properties of individual syllables with in language name file. Each line within a file
2
+ # translates into a syllable object. The reason behind this class is to take over most of the complexity of parsing each
3
+ # syllable, greatly simplifying the work done by RandomNameGenerator. This code is not meant to be called directly as a
4
+ # part of standard usage.
5
+ #
6
+ # Examples
7
+ #
8
+ # syllable = RNGSyllable.new('-foo +c')
9
+ #
10
+ # This creates a foo syllable object that needs to be the first syllable and followed by a constant.
11
+ #
12
+ # For testing purposes, passing in another RNGSyllable object will create a clone:
13
+ #
14
+ # syllable_clone = RNGSyllable.new(syllable)
15
+ #
1
16
  # SYLLABLE CLASSIFICATION:
2
17
  # Name is usually composed from 3 different class of syllables, which include prefix, middle part and suffix.
3
18
  # To declare syllable as a prefix in the file, insert "-" as a first character of the line.
@@ -18,7 +33,6 @@
18
33
  # 2) +c means that next syllable must definitely start with a consonant.
19
34
  # 3) -v means that this syllable can only be added to another syllable, that ends with a vocal.
20
35
  # 4) -c means that this syllable can only be added to another syllable, that ends with a consonant.
21
-
22
36
  class RNGSyllable
23
37
  attr_reader :raw, :syllable, :next_syllable_requirement, :previous_syllable_requirement
24
38
 
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'random_name_generator'
7
- spec.version = '0.0.7'
7
+ spec.version = '1.0.0'
8
8
  spec.authors = ['folkengine']
9
9
  spec.email = ['gaoler@electronicpanopticon.com']
10
10
  spec.licenses = ['GPL-3.0']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: random_name_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - folkengine
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-21 00:00:00.000000000 Z
11
+ date: 2016-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -46,6 +46,8 @@ executables: []
46
46
  extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
+ - ".codeclimate.yml"
50
+ - ".coveralls.yml"
49
51
  - ".gitignore"
50
52
  - ".overcommit.yml"
51
53
  - ".rubocop.yml"
@@ -88,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
90
  version: '0'
89
91
  requirements: []
90
92
  rubyforge_project:
91
- rubygems_version: 2.4.6
93
+ rubygems_version: 2.5.1
92
94
  signing_key:
93
95
  specification_version: 4
94
96
  summary: Random Name Generator