random_name_generator 4.0.1 → 4.0.3

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.
@@ -1,7 +1,12 @@
1
+ -affen
1
2
  -arsch
2
3
  -arschge
4
+ -bauern
3
5
  -blöd
4
- -blöd
6
+ -bratz
7
+ -brech
8
+ -brüll
9
+ -dackel
5
10
  -depp
6
11
  -deppen
7
12
  -donner
@@ -10,33 +15,83 @@
10
15
  -dumm
11
16
  -dummkopf +v
12
17
  -dumpf
18
+ -dussel
19
+ -eiter
20
+ -ekel
21
+ -elend
13
22
  -fahr
23
+ -fetzen
24
+ -fick
14
25
  -flatz
26
+ -fluch
27
+ -fress
28
+ -furz
29
+ -gammel
30
+ -geier
31
+ -gift
15
32
  -grantz
33
+ -grind
34
+ -grunz
16
35
  -hack
36
+ -halunken
37
+ -heiden
17
38
  -himmel
39
+ -hohl
40
+ -honk
41
+ -hosen
42
+ -hunds
18
43
  -huren
19
44
  -kack
45
+ -klapper
46
+ -klotz
47
+ -knall
48
+ -kotz
49
+ -kreuz
20
50
  -krott
51
+ -labber
52
+ -lahm
21
53
  -lauch
22
54
  -leck
55
+ -lumpen
56
+ -matsch
57
+ -memmen
58
+ -mief
23
59
  -miss
24
60
  -mist
25
61
  -mistkerl +v
62
+ -modder
63
+ -motz
64
+ -muff
26
65
  -murks
27
66
  -mutter
67
+ -nichts
28
68
  -penner
69
+ -pfui +c
29
70
  -pfusch
71
+ -pöbel
72
+ -protz
30
73
  -quatsch
74
+ -ranz
75
+ -rotz
76
+ -rüpel
77
+ -sabber
31
78
  -sakra
32
79
  -sau
33
80
  -saukerl
81
+ -schand
34
82
  -schatten
35
83
  -schei
36
84
  -scheiben
37
85
  -scheiß +v
86
+ -schlamp
38
87
  -schleim
88
+ -schmier
89
+ -schmutz
39
90
  -schnodd
91
+ -siff
92
+ -stink
93
+ -stümper
94
+ -suff
40
95
  -teufel
41
96
  -trottel
42
97
  -verdammt
@@ -44,96 +99,232 @@
44
99
  -weich
45
100
  -wichs
46
101
  -wichser +v
102
+ -würg
103
+ -zank
47
104
  -zefix
48
105
  -zottel
106
+ bammel
107
+ bock
108
+ brat
109
+ brumm
110
+ butz
111
+ dampf
49
112
  doof
113
+ dödel
50
114
  dreck
51
115
  el
52
116
  en
53
117
  er
54
118
  fatzke
119
+ fetz
55
120
  fick
121
+ fitz
122
+ flenn
123
+ fratz
124
+ fussel
56
125
  fut
126
+ gack
127
+ gammel
128
+ glibber
57
129
  glotz
58
130
  gnatz
131
+ grob
132
+ grunz
59
133
  haft
134
+ hampel
60
135
  herr
136
+ heul
61
137
  hunz
62
138
  ig
63
139
  isch
140
+ keif
141
+ klump
142
+ knorz
143
+ kotz
144
+ kramp
145
+ kratz
146
+ labber
147
+ lall
148
+ latsch
64
149
  ling
65
150
  los
151
+ lümmel
152
+ mampf
66
153
  mann
154
+ matsch
155
+ meck
67
156
  mist
157
+ motz
158
+ muff
159
+ mumpf
160
+ murr
68
161
  mursch
69
162
  nis
163
+ nöl
164
+ nörgel
70
165
  nutte
166
+ öd -c
167
+ pamp
168
+ patsch
169
+ plemp
170
+ plörr
71
171
  popel
172
+ protz
173
+ pups
72
174
  quark
175
+ quengel
176
+ ranz
177
+ ratz
73
178
  rotz
179
+ rülps
180
+ sabber
74
181
  sau
182
+ schlabber
183
+ schlonz
184
+ schlurf
185
+ schmier
75
186
  schmodd
187
+ schnarch
188
+ schnorr
76
189
  schrott -c
190
+ siff
191
+ stänker
192
+ stink
193
+ strunz
194
+ suff
195
+ tratsch
196
+ trödel
77
197
  tum
78
198
  ung
79
199
  voll
200
+ wabbel
80
201
  wix -c
202
+ würg
203
+ zeter
81
204
  +aff
82
205
  +angeber
83
206
  +arsch
84
207
  +backe
208
+ +balg
209
+ +bart
85
210
  +bengel
211
+ +beutel
86
212
  +birne
87
213
  +bock
214
+ +bratze
215
+ +brut
216
+ +bube
217
+ +dackel
218
+ +deckel
219
+ +depp
88
220
  +ei
221
+ +eimer
89
222
  +esel
223
+ +eule
90
224
  +ficker
225
+ +fink
91
226
  +flasche
227
+ +fläz
92
228
  +fotze
229
+ +fratze
93
230
  +fresse
94
231
  +fut
232
+ +gaul
95
233
  +geburt
96
234
  +geige
97
235
  +gesicht
236
+ +gockel
98
237
  +gott
238
+ +göre
239
+ +gurke
240
+ +hals
99
241
  +hammel
242
+ +hannes
243
+ +haufen
100
244
  +heini
101
245
  +hirn
102
- +hölle
246
+ +hocker
247
+ +horst
248
+ +huhn
103
249
  +hund
250
+ +hölle
104
251
  +idiot
105
252
  +kacke
253
+ +kasper
254
+ +keks
106
255
  +kerl
107
256
  +kleister
257
+ +knacker
258
+ +knilch
108
259
  +kopf -c
109
260
  +kriecher
261
+ +kröte
262
+ +krücke
263
+ +kuh
264
+ +lackel
110
265
  +lappen
111
266
  +lecker
267
+ +liese
112
268
  +ling
113
269
  +loch -c
270
+ +lulatsch
271
+ +lümmel
114
272
  +made
115
273
  +mann
116
274
  +maul
275
+ +michel
276
+ +molch
277
+ +muffel
278
+ +mütze
117
279
  +nase
280
+ +niete
281
+ +nille
282
+ +nulpe
118
283
  +ochse
119
284
  +parker
285
+ +peter
120
286
  +pfosten
287
+ +pimpf
288
+ +pinsel
121
289
  +ratte -v
290
+ +rübe
291
+ +rüpel
122
292
  +sack
123
293
  +sau
124
294
  +schädel
125
295
  +scheiße
126
296
  +scheißer
127
297
  +schlampe
298
+ +schlucker
299
+ +schnauze
300
+ +schnösel
301
+ +schrat
128
302
  +schwein
303
+ +schwengel
129
304
  +sepp
305
+ +socke
130
306
  +sohn
307
+ +stiefel
308
+ +stinker
309
+ +stoffel
310
+ +strolch
131
311
  +stück
312
+ +suse
313
+ +tasche
132
314
  +teufel
315
+ +trine
316
+ +tröte
317
+ +trulla
133
318
  +tüte
319
+ +vieh
134
320
  +visage
321
+ +vogel
322
+ +wanst
135
323
  +wetter
136
324
  +wicht
137
325
  +wurm
326
+ +wutz
327
+ +zausel
138
328
  +ziege
329
+ +zipfel
139
330
  +zwerg
@@ -0,0 +1,111 @@
1
+ -batlh
2
+ -bel
3
+ -bortas
4
+ -cha
5
+ -do'
6
+ -duj
7
+ -ghob
8
+ -ghor
9
+ -hegh
10
+ -hiq
11
+ -hos
12
+ -jagh
13
+ -jaj
14
+ -kang
15
+ -kor
16
+ -lop
17
+ -maj
18
+ -may'
19
+ -mogh
20
+ -petaq
21
+ -qang
22
+ -qap
23
+ -qapla'
24
+ -qeylis
25
+ -qra
26
+ -qu'
27
+ -quch
28
+ -quv
29
+ -suv
30
+ -targ
31
+ -tlha
32
+ -tlhin
33
+ -tlhutlh
34
+ -toh
35
+ -tuq
36
+ -vaj
37
+ -ves
38
+ -vor
39
+ -wo'
40
+ -yay
41
+ 'a
42
+ 'e
43
+ 'o
44
+ a -c
45
+ agh
46
+ ang
47
+ ba
48
+ bo
49
+ cha
50
+ di
51
+ egh
52
+ glo
53
+ i -c
54
+ ich
55
+ lah
56
+ lar
57
+ li
58
+ meq
59
+ mor
60
+ nak
61
+ ngan
62
+ o -c
63
+ och
64
+ ogh
65
+ qam
66
+ qo
67
+ ral
68
+ tagh
69
+ tah
70
+ tlho
71
+ u -c
72
+ vagh
73
+ vo
74
+ wi'
75
+ ya
76
+ +'a'
77
+ +'e'
78
+ +batlh
79
+ +be'
80
+ +bogh
81
+ +cha'
82
+ +choh
83
+ +chugh
84
+ +daq
85
+ +di'
86
+ +ghach
87
+ +ha'
88
+ +hom
89
+ +jaj
90
+ +lu'
91
+ +meh
92
+ +mey
93
+ +moh
94
+ +na'
95
+ +ngan
96
+ +oy
97
+ +pla'
98
+ +pu'
99
+ +qa'
100
+ +qang
101
+ +qo'
102
+ +qu'
103
+ +ta'
104
+ +tagh
105
+ +tah
106
+ +tlh
107
+ +vad
108
+ +vam
109
+ +ves
110
+ +wi'
111
+ +yay
@@ -42,10 +42,15 @@ module RandomNameGenerator
42
42
  class Syllable
43
43
  attr_reader :raw, :syllable, :next_syllable_requirement, :previous_syllable_requirement
44
44
 
45
- VOWELS = %w[i y ɨ ʉ ɯ u ɪ ʏ ʊ ɯ ʊ e ø ɘ ɵ ɤ o ø ə ɵ ɤ o ɛ œ ɜ ɞ ʌ ɔ æ ɐ ɞ a ɶ ä ɒ ɑ].freeze
46
- CONSONANTS = %w[b ɓ ʙ β c d ɗ ɖ ð f g h j k l ł m ɱ n ɳ p q r s t v w x y z].freeze
45
+ # "y" appears in both sets deliberately: as a semivowel it satisfies
46
+ # either a +v or a +c adjacency requirement.
47
+ VOWELS = %w[i y ɨ ʉ ɯ u ɪ ʏ ʊ ɯ ʊ e ø ɘ ɵ ɤ o ø ə ɵ ɤ o ɛ œ ɜ ɞ ʌ ɔ æ ɐ ɞ a ɶ ä ɒ ɑ ö ü
48
+ а е ё и о у ы э ю я].freeze
49
+ CONSONANTS = %w[b ɓ ʙ β c d ɗ ɖ ð f g h j k l ł m ɱ n ɳ p q r s t v w x y z ß
50
+ б в г д ж з й к л м н п р с т ф х ц ч ш щ ь].freeze
47
51
 
48
52
  def initialize(args)
53
+ args = args.raw if args.is_a?(Syllable)
49
54
  @raw = args.strip
50
55
  @syllable = ""
51
56
  @is_prefix = false
@@ -53,11 +58,7 @@ module RandomNameGenerator
53
58
  @next_syllable_requirement = :letter
54
59
  @previous_syllable_requirement = :letter
55
60
 
56
- if args.is_a?(Syllable)
57
- parse_args(args.raw)
58
- else
59
- parse_args(args)
60
- end
61
+ parse_args(args)
61
62
  end
62
63
 
63
64
  def incompatible?(next_syllable)
@@ -134,7 +135,7 @@ module RandomNameGenerator
134
135
  end
135
136
 
136
137
  def parse_syllable(syll)
137
- raise ArgumentError "Empty String is not allowed." if syll.empty?
138
+ raise ArgumentError, "Empty String is not allowed." if syll.to_s.empty?
138
139
 
139
140
  captures = /([+-]?)(.+)/.match(syll).captures
140
141
  parse_prefix(captures[0])
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RandomNameGenerator
4
- VERSION = "4.0.1"
4
+ VERSION = "4.0.3"
5
5
  end
@@ -31,8 +31,11 @@ module RandomNameGenerator
31
31
  GOBLIN_RU = File.new("#{dirname}/languages/goblin-ru.txt")
32
32
  ROMAN_RU = File.new("#{dirname}/languages/roman-ru.txt")
33
33
 
34
+ KLINGON = File.new("#{dirname}/languages/klingon.txt")
35
+
34
36
  # Experimental
35
37
  CURSE = File.new("#{dirname}/languages/experimental/curse.txt")
38
+ DEMONIC = File.new("#{dirname}/languages/experimental/demonic.txt")
36
39
  GERMAN_CURSE = File.new("#{dirname}/languages/experimental/german-curse.txt")
37
40
 
38
41
  # Static factory method that instantiates a RandomNameGenerator in a random language.
@@ -84,7 +87,7 @@ module RandomNameGenerator
84
87
  # Returns the composed name as an array of Syllables.
85
88
  def compose_array(count = RandomNameGenerator.pick_number_of_syllables)
86
89
  @pre = pre_syllables.sample(random: @rnd)
87
- return @pre.to_s.capitalize if count < 2
90
+ return [@pre] if count < 2
88
91
 
89
92
  name = determine_middle_syllables(count - 2, @pre)
90
93
  name << determine_last_syllable(name.last)
@@ -122,18 +125,18 @@ module RandomNameGenerator
122
125
  end
123
126
 
124
127
  def determine_next_syllable(this_syllable, sampler)
125
- next_syllable = ""
126
- loop do
127
- next_syllable = sampler.sample(random: @rnd)
128
- break unless this_syllable.incompatible?(next_syllable)
128
+ candidates = sampler.select { |syllable| this_syllable.compatible?(syllable) }
129
+ if candidates.empty?
130
+ raise ArgumentError,
131
+ "No syllable in #{@language.path} is compatible with \"#{this_syllable}\" — check its +v/+c/-v/-c flags"
129
132
  end
130
- next_syllable
133
+ candidates.sample(random: @rnd)
131
134
  end
132
135
 
133
136
  # Loops through the language file, and pushes each syllable into the correct array.
134
137
  def refresh
135
138
  @language.readlines.each do |line|
136
- push(RandomNameGenerator::Syllable.new(line)) unless line.empty?
139
+ push(RandomNameGenerator::Syllable.new(line)) unless line.strip.empty?
137
140
  end
138
141
  @language.rewind
139
142
  end
@@ -28,8 +28,9 @@ Gem::Specification.new do |spec|
28
28
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
29
29
  spec.require_paths = ["lib"]
30
30
 
31
- # Uncomment to register a new dependency of your gem
32
- # spec.add_dependency "example-gem", "~> 1.0"
31
+ # The CLI in exe/ parses its options with slop, so it must ship as a
32
+ # runtime dependency a Gemfile entry is invisible to installed gems.
33
+ spec.add_dependency "slop", "~> 4.10"
33
34
 
34
35
  # For more information and examples about making a new gem, checkout our
35
36
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: random_name_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - folkengine
@@ -9,7 +9,21 @@ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
11
  date: 2026-07-19 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: slop
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.10'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.10'
13
27
  description: Generates random names based upon custom collections of syllables. Styles
14
28
  include Elvish, Fantasy, Goblin, and Roman.
15
29
  email:
@@ -29,6 +43,7 @@ files:
29
43
  - ".rspec"
30
44
  - ".rubocop.yml"
31
45
  - ".tool-versions"
46
+ - AI-BOM.md
32
47
  - CHANGELOG.md
33
48
  - Gemfile
34
49
  - Gemfile.lock
@@ -39,11 +54,11 @@ files:
39
54
  - bin/run
40
55
  - bin/setup
41
56
  - config.reek
57
+ - docs/AUDIT_Fable_5.md
42
58
  - docs/superpowers/plans/2026-07-18-lang-gen-skill.md
43
59
  - docs/superpowers/specs/2026-07-18-lang-gen-skill-design.md
44
60
  - docs/superpowers/specs/2026-07-19-lang-gen-portable-prompt.md
45
61
  - exe/random_name_generator
46
- - lib/languages/demonic.txt
47
62
  - lib/languages/elven-ru.txt
48
63
  - lib/languages/elven.txt
49
64
  - lib/languages/experimental/curse.txt
@@ -53,6 +68,7 @@ files:
53
68
  - lib/languages/fantasy.txt
54
69
  - lib/languages/goblin-ru.txt
55
70
  - lib/languages/goblin.txt
71
+ - lib/languages/klingon.txt
56
72
  - lib/languages/roman-ru.txt
57
73
  - lib/languages/roman.txt
58
74
  - lib/random_name_generator.rb