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