No commit activity in last 3 years
No release in over 3 years
Generators for random values (ints, strings, arrays, hashes etc.)
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.16
~> 10.0
~> 3.0
 Project Readme

bsielski Value Generator

This gem can:

  • create random int, float, string, and symbols
  • create a random value of random type
  • create an array of random values
  • create a hash of random key and values

Why to use it?

Who knows. I have made it when I was creating a code with functional style and was working mainly with hashes as a data containers and I wanted some configurable generator of random hashes for my unit tests.

Installation

Add this line to your application's Gemfile:

gem 'bsielski_value_generator'

And then execute:

$ bundle

Or install it yourself as:

$ gem install bsielski_value_generator

Usage

Reqiure proper class.

require "v_gen/int_gen"

Use it.

random_int = VGen::IntGen.new.call

# or

int_gen = VGen::IntGen.new
random_int = int_gen.call

All generators have just one public method: #call.

API

Class VGen::IntGen

require "v_gen/int_gen"

Constructor

VGen::IntGen.new # => new_generator

Optionally paramaters:

  • range - is the range from which the number is randomly generated. Default is (0..10).

Call

VGen::IntGen.new.call # => new_int

Class VGen::FloatGen

require "v_gen/float_gen"

Constructor

VGen::FloatGen.new # => new_generator

Optionally paramaters:

  • range - is the range from which the number is randomly generated. Default is (-10..10).

Call

VGen::FloatGen.new.call # => new_float

Class VGen::LetterGen

require "v_gen/letter_gen"

Constructor

VGen::LetterGen.new # => new_generator

Optionally paramaters:

  • only: - an array (or range) of objects from which one randomly chosen is returned. Default is ("A".."Z").to_a + ("a".."z").to_a.
  • except: - an array (or range) that is substracted from only: array (or range). Default is [].

Call

VGen::LetterGen.new.call # => new_letter

Class VGen::LowerLetterGen

require "v_gen/lower_letter_gen"

Constructor

VGen::LowerLetterGen.new # => new_generator

Optionally paramaters:

  • only: - an array (or range) of objects from which one randomly chosen is returned. Default is ("A".."Z") (those letters are downcased anyway by the class).
  • except: - an array (or range) that is substracted from only: array (or range). Default is [].

Call

VGen::LowerLetterGen.new.call # => new_lower_letter

VGen::UpperLetterGen

require "v_gen/upper_letter_gen"

Constructor

VGen::UpperGen.new # => new_generator

Optionally paramaters:

  • only: - an array (or range) of objects from which one randomly chosen is returned. Default is ("A".."Z").
  • except: - an array (or range) that is substracted from only: array (or range). Default is [].

Call

VGen::UpperLetterGen.new.call # => new_upper_letter

Class VGen::TypicalLetterGen

This generator returns random lower letters with with taking into account the frequency of occurrence in English language.

require "v_gen/typical_letter_gen"

Constructor

VGen::TypicalLetterGen.new # => new_generator

Call

VGen::TypicalLetterGen.new.call # => new_letter

Class VGen::CharGen

require "v_gen/char_gen"

Constructor

VGen::CharGen.new # => new_generator

Optionally paramaters:

  • only: - an array (or range) of objects from which one randomly chosen is returned. Default is:
  [
    "`", "~", "!", "@", "#", "$", "%", "^", "&",
	"*", "(", ")", "-", "_", "+", "=", "[", "{",
	"]", "}", "\\", "|", ";", ":", "'", "\"", "<",
	",", ">", ".", "?", "/", " "
  ] + ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
  • except: - an array (or range) that is substracted from only: array (or range). Default is [].

Call

VGen::CharGen.new.call # => new_char

Class VGen::StringGen

This generator returns random strings.

require "v_gen/string_gen"

Constructor

VGen::StringGen.new # => new_generator

Optionally paramaters:

  • char_gen: - is a generator used to creating a characters for strings. Default is VGen::LetterGen.new.
  • length: - possible string length as a range (for random length) or an int (for fixed length).
  • except: - strings forbidden to generate. Default is [].

Call

VGen::StringGen.new.call # => new_string

Class VGen::VarWordGen

This generator returns random lowercased strings sometimes with underscore in the middle of the string.

require "v_gen/var_word_gen"

Constructor

VGen::VarWordGen.new # => new_generator

Optionally paramaters:

  • letter_gen: - is a generator used to creating a letters for words. Default is VGen::TypicalLetterGen.new.
  • length: - possible word length as a range (for random length) or an int (for fixed length).
  • except: - words forbidden to generate. Default is [].

Call

VGen::VarWordGen.new.call # => new_word

Class VGen::KeywordGen

This generator returns random lowercased symbols sometimes with underscore in the middle of the string.

require "v_gen/keyword_gen"

Constructor

VGen::KeywordGen.new # => new_generator

Optionally paramaters:

  • word_gen: - is a generator used to creating a string, which is converted into a symbos. Default is VGen::VarWordGen.new.

Call

VGen::KeywordGen.new.call # => new_keyword

Class VGen::ArrayGen

This generator returns an array of random values.

require "v_gen/array_gen"

Constructor

VGen::ArrayGen.new # => new_generator

Optionally paramaters:

  • min: - is a minimum size of a generated arrays. Default is 4.
  • max: - is a maximum size of a generated arrays. Default is 9.
  • length: - possible array length as a range (for random length) or an int (for fixed length).
  • gens: - are generators used randomly to generate values. Default is [ proc {Random.new.rand} ].
  • uniq: - if truthy then generated arrays have unique elements. Default is false.

Call

VGen::ArrayGen.new.call # => new_array

Class VGen::HashGen

This generator returns a hash of random keys and values.

require "v_gen/hash_gen"

Constructor

VGen::HashGen.new # => new_generator

Optionally paramaters:

  • min: - is a minimum size of a generated hashes. Default is 4.
  • max: - is a maximum size of a generated hashes. Default is 8.
  • length: - possible hash length as a range (for random length) or an int (for fixed length).
  • key_gens: - are generators used randomly to generate keys. Default is [ proc {Random.new.rand(0..100)} ].
  • value_gens: - are generators used randomly to generate values. Default is [ proc {Random.new.rand} ].
  • 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 {}.

Call

VGen::HashGen.new.call # => new_array

Class VGen::WhateverGen

This generator returns one value.

require "bsielski_v_gen/int_gen"

Constructor

VGen::WhateverGen.new # => new_generator

Optionally paramaters:

  • gens: - are generators used randomly to generate values. Default is [ proc {Random.new.rand} ].

Call

VGen::WhateverGen.new.call # => new_array

Examples

Check "examples" folder.

To do features

  • Some easy to use generators with default parameters

License

The gem is available as open source under the terms of the MIT License.