Maybe something like this:
class NameGenerator
def initialize(size, items)
@name = ""
@size = size
@items = items
end
def namegenerator
@name = @items.sample(@size).to_s
end
def namechecker?
@name == @name.upcase
end
def name
@name
end
end
ng = NameGenerator.new 1, ["name", "Name", "NAME"]
ng.namegenerator
puts ng.name, ng.namechecker?
Update
I've posted code without much thinking about abstraction and i think it would be much better to encapsulate name and upper case check to separate class and make it immutable, then make generator class that selects one entity from collection.
class NameGenerator
def initialize(items)
@items = items
end
def next
@items.sample
end
end
class Name
attr_reader :name
def initialize(name)
@name = name
end
def is_uppercase?
@name.match(/\p{Lower}/) == nil
end
end
ng = NameGenerator.new [
Name.new("name"),
Name.new("Name"),
Name.new("NAME"),
Name.new("na-me")
]
name = ng.next
puts name.name, name.is_uppercase?