random_name_generator 0.0.7 → 1.0.0

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