module StrongStruct::Core
Public Instance Methods
new(*args)
click to toggle source
# File lib/strong_struct.rb, line 63 def new(*args) name = name_from_params(args) if name && const_defined?(name) raise Error::ClassInUseError.new("Class already in use: #{name}") end klass = build_class(args) name ? Object.const_set(name, klass) : klass end
Private Instance Methods
build_class(attribute_names)
click to toggle source
# File lib/strong_struct.rb, line 77 def build_class(attribute_names) Class.new do extend ClassMethods include InstanceMethods attribute_names.each { |attr| add_accessor(attr) } add_accessors end end
name_from_params(params)
click to toggle source
# File lib/strong_struct.rb, line 88 def name_from_params(params) params.first.to_s.match(/^[A-Z]/) ? params.shift : nil end