random_string_generator v1.0.0 RandomStringGenerator View Source

A Module to generate a random string based on a given string pattern

Accepted string patterns:

Use l for lower case letter from a to z
Use L for upper case letter from A to Z
Use d for digit from 0 to 9
Use p for punctuation

Punctuation is any character on the following group:

@punctuation [
    "!", """, "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-",
    ".", "/", ":", ";", "<", "=", ">", "?", "@", "[", "\", "]", "^",
    "_", "`", "{", "|","}", "~"
]

Generate a string containing 2 lower case letters followed by 2 digits.

RandomStringGenerator.generate("lldd")

Generate a string containing 2 upper case letters.

RandomStringGenerator.generate("LL")

Delimiters

Everything that is not l,L,d and p is treated as a delimiter so the pattern -dl? is interpreted as a hyphen followed by a digit followed by a letter followed by a question mark.

Generate a string containing 2 letters followed by a hyphen.

RandomStringGenerator.generate("ll-")

Scape

In order to generate a string containing the characters l,L,d and p as a delimiter you need to use the backslash twice in order to scape it.

Generate a string containing 2 digits followed by the letters lLdp.

RandomStringGenerator.generate("dd\\l\\L\\d\\p")

Link to this section Summary

Functions

Given a pattern string, returns a random generated string

Given a pattern string it shuffles it to a random order, so that it can be used for the case where the string must contain certain characters but must be generated in random order

Link to this section Functions

Link to this function generate(pattern) View Source
generate(String.t()) :: String.t()

Given a pattern string, returns a random generated string.

Examples

iex> str = RandomStringGenerator.generate("l-L-d")
iex> Regex.match?(~r/[a-z]-[A-Z]-[0-9]/, str)
true

Given a pattern string it shuffles it to a random order, so that it can be used for the case where the string must contain certain characters but must be generated in random order.

Examples

iex> pattern = "lLdp-"
iex> shuffled_pattern = RandomStringGenerator.shuffle(pattern)
iex>  String.graphemes(pattern) |> Enum.sort ==
iex>  String.graphemes(shuffled_pattern) |> Enum.sort
true