def user_name(specifier = nil, separators = %w(. _))
with_locale(:en) do
if specifier.respond_to?(:scan)
return specifier.scan(/\w+/).shuffle.join(separators.sample).downcase
elsif specifier.kind_of?(Integer)
raise ArgumentError, "Given argument is too large" if specifier > 10**6
tries = 0
begin
result = user_name(nil, separators)
tries += 1
end while result.length < specifier && tries < 7
return result * (specifier/result.length + 1) if specifier > 0
elsif specifier.kind_of?(Range)
tries = 0
begin
result = user_name(specifier.min, separators)
tries += 1
end while !specifier.include?(result.length) && tries < 7
return result[0...specifier.max]
end
[
Char.prepare(Name.first_name),
[Name.first_name, Name.last_name].map{ |name|
Char.prepare(name)
}.join(separators.sample)
].sample
end
end