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
         |