Module: DataClassFactory

Defined in:
lib/data_class_factory.rb,
lib/data_class_factory/version.rb

Overview

Defining a factory class. ‘Data = DataClassFactory.define_factory_class` will define a factory class like this.

class Data
  # @param attribute_names [Array<Symbol>]
  # @return [Class<Data>]
  def self.define(*attribute_names, &block)
    definition = DataClass::Definition.new(attribute_names)
    definer = DataClass::Definer.new(definition)
    definer.define_class(parent_class: self, &block)
  end
  ...
end

Constant Summary collapse

VERSION =
'1.0.0'

Class Method Summary collapse

Class Method Details

.backport?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/data_class_factory.rb', line 23

def backport?
  Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.2.0')
end

.define_factory_classObject



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/data_class_factory.rb', line 27

def define_factory_class
  Class.new do
    define_singleton_method(:define) do |*attribute_names, &block|
      definition = DataClass::Definition.new(attribute_names)
      definer = DataClass::Definer.new(definition)
      definer.define_class(parent_class: self, &block)
    end
    private_class_method :new

    include DataClass::InstanceMethods
  end
end