Hash2class.rb
This content was produced by an LLM and could include errors.
This script dynamically creates a new Ruby class using Class.new. It populates this class with attributes and an initializer based on the keys and values of a provided hash.
data = { name: "Alice", age: 25, city: "Tokyo" }
#=> {name: "Alice", age: 25, city: "Tokyo"}
def create_dynamic_class(hash)
Class.new do
hash.each_key do |key|
attr_accessor key.to_sym
end
define_method(:initialize) do
hash.each do |key, value|
instance_variable_set("@#{key}", value)
end
end
end
end
#=> :create_dynamic_class
kls = create_dynamic_class(data)
#=> #<Class:0x00007f59f28115e8>
obj = kls.new
#=> #<#<Class:0x00007f59f28115e8>:0x00007f59f27beed8
#...
obj
#=> #<#<Class:0x00007f59f28115e8>:0x00007f59f27beed8
# @age=25,
# @city="Tokyo",
# @name="Alice">
obj.name
#=> "Alice"
obj.age
#=> 25
obj.city
#=> "Tokyo"
Ruby 4.0.3