Class: Synthra::Types::PersonalNames::Username

Inherits:
Base
  • Object
show all
Defined in:
lib/synthra/types/personal_names/identifiers.rb

Overview

Username type

Instance Method Summary collapse

Instance Method Details

#generate_edge(rng, context, args) ⇒ Object



33
34
35
# File 'lib/synthra/types/personal_names/identifiers.rb', line 33

def generate_edge(rng, context, args)
  ["", "a", "user123"].sample(random: rng.instance_variable_get(:@random))
end

#generate_invalid(rng, context, args) ⇒ Object



37
38
39
# File 'lib/synthra/types/personal_names/identifiers.rb', line 37

def generate_invalid(rng, context, args)
  [nil, 123, [], {}].sample(random: rng.instance_variable_get(:@random))
end

#generate_random(rng, context, args) ⇒ String

Generate random username

Parameters:

Options Hash (args):

  • :prefix (String)

    prefix for username

  • :length (Integer)

    total length (default: 6..12)

Returns:

  • (String)

    generated username



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/synthra/types/personal_names/identifiers.rb', line 17

def generate_random(rng, context, args)
  prefix = args[:prefix] || ""
  length = args[:length] || rng.int(6, 12)

  # Use first_name/last_name from context if available
  base = if context && (context["first_name"] || context[:first_name])
           first = (context["first_name"] || context[:first_name]).to_s.downcase
           last = (context["last_name"] || context[:last_name]).to_s.downcase
           "#{first}#{last}".gsub(/[^a-z0-9]/, "")
         else
           generate_random_base(rng, length - prefix.length)
         end

  "#{prefix}#{base}"
end

#generate_random_base(rng, length) ⇒ Object (private)



43
44
45
46
# File 'lib/synthra/types/personal_names/identifiers.rb', line 43

def generate_random_base(rng, length)
  chars = ('a'..'z').to_a + ('0'..'9').to_a
  length.times.map { rng.sample(chars) }.join
end