bsielski_value_generator 1.1.0 → 1.2.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
  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