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 +4 -4
- data/README.md +57 -2
- data/examples/simple_generators.rb +122 -0
- data/lib/bsielski_v_gen/string_gen.rb +35 -0
- data/lib/bsielski_v_gen/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b11f42aa2329016dc70307ed50b328e35ae12cd3d0607ffbc04027170185b3f4
|
4
|
+
data.tar.gz: e069aa6a35b38b8630d4c4535b79f93429fbbce6ad3b4d2f97014addfccdf9f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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.
|
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-
|
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
|