bsielski_value_generator 1.1.0 → 1.2.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
  SHA256:
3
- metadata.gz: 8d9a3b8d67dba32050aa9fa381fc01c5ab17271c6ab1fa32d9fab0edec461f1c
4
- data.tar.gz: d245b33cc4b1ae56f6ce5b316be8bfe3bc77bbb510f654c8386eae56147b5b0b
3
+ metadata.gz: b11f42aa2329016dc70307ed50b328e35ae12cd3d0607ffbc04027170185b3f4
4
+ data.tar.gz: e069aa6a35b38b8630d4c4535b79f93429fbbce6ad3b4d2f97014addfccdf9f8
5
5
  SHA512:
6
- metadata.gz: 17f230e9f5ff70ae372c8b389056c6a000d1c2ff59344800f51ef514a2dffe1cc0e2493c8f00ad7ba140f0f87a50bb0d36737685b852c8c0ad20f635521bb96b
7
- data.tar.gz: e67eed2246e46ce31c5e4314d1aa1a8b4bbf5e33656a0b7ad4a97906abec94c8403a339e0e78fdee537367775d8d2484d9fb97240291e098c560c8a45a73b67b
6
+ metadata.gz: 389ac378f991812c6d5b66ef61e94f6847144f23a62ffb74ae0a29cf24a04b740a628d21386eeefad331b27cf39c7fc0769e071289ed5e0b99027c3667146dbd
7
+ data.tar.gz: 603808c2df60299e3c0356501a74a996b343f01406a313042159122f96bbf75f8151ed584e933762aee9a1d7c6fa9cea64683bca3b19f6c0cceaaec06e74ece9
data/README.md CHANGED
@@ -1,3 +1,4 @@
1
+
1
2
  # bsielski Value Generator
2
3
 
3
4
  This gem can:
@@ -186,6 +187,32 @@ VGen::TypicalLetterGen.new # => new_generator
186
187
  VGen::TypicalLetterGen.new.call # => new_letter
187
188
  ```
188
189
 
190
+ ### Class VGen::StringGen
191
+
192
+ This generator returns random strings.
193
+
194
+ ```ruby
195
+ require "v_gen/string_gen"
196
+ ```
197
+
198
+ #### Constructor
199
+
200
+ ```ruby
201
+ VGen::StringGen.new # => new_generator
202
+ ```
203
+
204
+ Optionally paramaters:
205
+
206
+ - **_char_gen:_** - is a generator used to creating a characters for strings. Default is `VGen::LetterGen.new`.
207
+ - **_length:_** - possible string length as a range (for random length) or an int (for fixed length).
208
+ - **_except:_** - strings forbidden to generate. Default is `[]`.
209
+
210
+ #### Call
211
+
212
+ ```ruby
213
+ VGen::StringGen.new.call # => new_string
214
+ ```
215
+
189
216
 
190
217
  ### Class VGen::VarWordGen
191
218
 
@@ -257,7 +284,6 @@ Optionally paramaters:
257
284
  - **_min:_** - is a minimum size of a generated arrays. Default is `4`.
258
285
  - **_max:_** - is a maximum size of a generated arrays. Default is `9`.
259
286
  - **_length:_** - possible array length as a range (for random length) or an int (for fixed length).
260
- - **_size:_** - alias for **_length:_**.
261
287
  - **_gens:_** - are generators used randomly to generate values. Default is `[ proc {Random.new.rand} ]`.
262
288
  - **_uniq:_** - if truthy then generated arrays have unique elements. Default is `false`.
263
289
 
@@ -287,7 +313,6 @@ Optionally paramaters:
287
313
  - **_min:_** - is a minimum size of a generated hashes. Default is `4`.
288
314
  - **_max:_** - is a maximum size of a generated hashes. Default is `8`.
289
315
  - **_length:_** - possible hash length as a range (for random length) or an int (for fixed length).
290
- - **_size:_** - alias for **_length:_**.
291
316
  - **_key_gens:_** - are generators used randomly to generate keys. Default is `[ proc {Random.new.rand(0..100)} ]`.
292
317
  - **_value_gens:_** - are generators used randomly to generate values. Default is `[ proc {Random.new.rand} ]`.
293
318
  - **_with:_** - is a hash that must be included in the generated hash. In other words it is a obligatory set of key and values pairs. Default is `{}`.
@@ -298,6 +323,36 @@ Optionally paramaters:
298
323
  VGen::HashGen.new.call # => new_array
299
324
  ```
300
325
 
326
+
327
+ ### Class VGen::WhateverGen
328
+
329
+ This generator returns one value.
330
+
331
+ ```ruby
332
+ require "bsielski_v_gen/int_gen"
333
+ ```
334
+
335
+ #### Constructor
336
+
337
+ ```ruby
338
+ VGen::WhateverGen.new # => new_generator
339
+ ```
340
+
341
+ Optionally paramaters:
342
+
343
+ - **_gens:_** - are generators used randomly to generate values. Default is `[ proc {Random.new.rand} ]`.
344
+
345
+ #### Call
346
+
347
+ ```ruby
348
+ VGen::WhateverGen.new.call # => new_array
349
+ ```
350
+
351
+
352
+ ## Examples
353
+
354
+ Check "examples" folder.
355
+
301
356
  ## To do features
302
357
 
303
358
  - Some easy to use generators with default parameters
@@ -0,0 +1,122 @@
1
+ require_relative "../lib/bsielski_v_gen/letter_gen"
2
+ require_relative "../lib/bsielski_v_gen/string_gen"
3
+ require_relative "../lib/bsielski_v_gen/array_gen"
4
+ require_relative "../lib/bsielski_v_gen/hash_gen"
5
+ require_relative "../lib/bsielski_v_gen/int_gen"
6
+ require_relative "../lib/bsielski_v_gen/float_gen"
7
+ require_relative "../lib/bsielski_v_gen/var_word_gen"
8
+ require_relative "../lib/bsielski_v_gen/keyword_gen"
9
+ require_relative "../lib/bsielski_v_gen/whatever_gen"
10
+
11
+ number_of = 3
12
+
13
+ digitGen = VGen::LetterGen.new(
14
+ only: %W[0 1 2 3 4 5 6 7 8 9]
15
+ )
16
+
17
+ puts "*** digitGen ***"
18
+ number_of.times do
19
+ puts digitGen.call.inspect
20
+ end
21
+
22
+ numberStringGen = VGen::StringGen.new(
23
+ char_gen: digitGen,
24
+ length: (1..10)
25
+ )
26
+
27
+ puts "*** numberStringGen ***"
28
+ number_of.times do
29
+ puts numberStringGen.call.inspect
30
+ end
31
+
32
+ specialCharGen = VGen::LetterGen.new(
33
+ only: %W[
34
+ ` ~ ! @ # $ % ^ & * ( ) - _ + =
35
+ [ { ] } \\ | ; : ' \" < , > . ? /
36
+ ] + [" "]
37
+ )
38
+
39
+ puts "*** specialCharGen ***"
40
+ number_of.times do
41
+ puts specialCharGen.call.inspect
42
+ end
43
+
44
+ popularSpecialCharGen = VGen::LetterGen.new(
45
+ only: %W[ ! ? ( ) _ , . ] + [" "]
46
+ )
47
+
48
+ puts "*** popularSpecialCharGen ***"
49
+ number_of.times do
50
+ puts popularSpecialCharGen.call.inspect
51
+ end
52
+
53
+ noneCollectionValueGen = VGen::WhateverGen.new(
54
+ gens: [
55
+ VGen::IntGen.new(range=(-100_000..100_000)),
56
+ VGen::FloatGen.new(range=(-100_000..100_000)),
57
+ VGen::VarWordGen.new(length: (1..10)),
58
+ numberStringGen,
59
+ VGen::KeywordGen.new,
60
+ VGen::KeywordGen.new(word_gen: numberStringGen),
61
+ ]
62
+
63
+ )
64
+
65
+ puts "*** noneCollectionValueGen ***"
66
+ number_of.times do
67
+ puts noneCollectionValueGen.call.inspect
68
+ end
69
+
70
+ leafArrayGen = VGen::ArrayGen.new(
71
+ length: (0..5),
72
+ gens: [noneCollectionValueGen]
73
+ )
74
+
75
+ puts "*** leafArrayGen ***"
76
+ number_of.times do
77
+ puts leafArrayGen.call.inspect
78
+ end
79
+
80
+ digitsArrayGen = VGen::ArrayGen.new(
81
+ length: (6..10),
82
+ gens: [digitGen]
83
+ )
84
+
85
+ puts "*** digitsArrayGen ***"
86
+ number_of.times do
87
+ puts digitsArrayGen.call.inspect
88
+ end
89
+
90
+ uniqueDigitsArrayGen = VGen::ArrayGen.new(
91
+ length: (6..10),
92
+ gens: [digitGen],
93
+ uniq: true
94
+ )
95
+
96
+ puts "*** uniqueDigitsArrayGen ***"
97
+ number_of.times do
98
+ puts uniqueDigitsArrayGen.call.inspect
99
+ end
100
+
101
+ leafHashGen = VGen::HashGen.new(
102
+ length: (0..4),
103
+ key_gens: [VGen::IntGen.new, VGen::KeywordGen.new],
104
+ value_gens: [noneCollectionValueGen]
105
+ )
106
+
107
+ puts "*** leafHashGen ***"
108
+ number_of.times do
109
+ puts leafHashGen.call.inspect
110
+ end
111
+
112
+ userHashGen = VGen::HashGen.new(
113
+ length: (1..4),
114
+ key_gens: [VGen::IntGen.new, VGen::KeywordGen.new],
115
+ value_gens: [noneCollectionValueGen],
116
+ with: { name: "John"}
117
+ )
118
+
119
+ puts "*** userHashGen ***"
120
+ number_of.times do
121
+ puts userHashGen.call.inspect
122
+ end
@@ -0,0 +1,35 @@
1
+ require_relative "./letter_gen"
2
+
3
+ module VGen
4
+ class StringGen
5
+ attr_reader :char_gen
6
+ def initialize(
7
+ char_gen: LetterGen.new,
8
+ length: (4..9),
9
+ except: []
10
+ )
11
+ @length = length
12
+ @char_gen = char_gen
13
+ @except = except
14
+ end
15
+
16
+ def call()
17
+
18
+ loop do
19
+ word = Array.new(
20
+ word_length,
21
+ @char_gen
22
+ ).map(&:call).join
23
+ return word unless @except.include? word
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def word_length
30
+ length = Random.new.rand(@length) if @length.is_a? Range
31
+ length = @length if @length.is_a? Integer
32
+ length
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module VGen
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bsielski_value_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bartłomiej Sielski
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-03 00:00:00.000000000 Z
11
+ date: 2018-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -69,6 +69,7 @@ files:
69
69
  - bin/console
70
70
  - bin/setup
71
71
  - bsielski_value_generator.gemspec
72
+ - examples/simple_generators.rb
72
73
  - lib/bsielski_v_gen.rb
73
74
  - lib/bsielski_v_gen/array_gen.rb
74
75
  - lib/bsielski_v_gen/float_gen.rb
@@ -79,6 +80,7 @@ files:
79
80
  - lib/bsielski_v_gen/lower_letter_gen.rb
80
81
  - lib/bsielski_v_gen/old_array_gen.rb
81
82
  - lib/bsielski_v_gen/old_hash_gen.rb
83
+ - lib/bsielski_v_gen/string_gen.rb
82
84
  - lib/bsielski_v_gen/typical_letter_gen.rb
83
85
  - lib/bsielski_v_gen/upper_letter_gen.rb
84
86
  - lib/bsielski_v_gen/var_word_gen.rb