Sha256: 4cc9f69293fb27197bf5218d2721ac3d4c9e92bbabe5dd90e61de6c13e6dffd9

Contents?: true

Size: 671 Bytes

Versions: 3

Compression:

Stored size: 671 Bytes

Contents

module Selfies
  class SelfInit
    def self.generate(class_name, *variable_names)
      return false unless variable_names.any?

      class_name.class_eval do        
        attr_reader *variable_names

        define_method(:initialize) do |*args|
          argument_check(variable_names.count, args.count)

          variable_names.each_with_index do |variable, index|
            instance_variable_set("@#{variable}", args[index])
          end
        end

        def argument_check(expected, given)
          raise ArgumentError, "wrong number of arguments (given #{given}, expected #{expected})" unless given == expected
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
selfies-0.2.0 lib/selfies/self_init.rb
selfies-0.1.1 lib/selfies/self_init.rb
selfies-0.1.0 lib/selfies/self_init.rb