Sha256: 71c472db54341404679927c59fce7d7cec09d91792b59c6a970dfbfa15d6a7e6
Contents?: true
Size: 1.21 KB
Versions: 8
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true require 'active_support/callbacks' module EacRubyUtils class CommonConstructor attr_reader :args, :options def initialize(*args) @args = args end def setup_class(klass) setup_class_attr_readers(klass) setup_class_attr_writers(klass) setup_class_initialize(klass) end def setup_class_attr_readers(klass) klass.send(:attr_reader, *args) klass.send(:public, *args) end def setup_class_attr_writers(klass) klass.send(:attr_writer, *args) klass.send(:private, *args.map { |a| "#{a}=" }) end def setup_class_initialize(klass) klass.include(::ActiveSupport::Callbacks) klass.define_callbacks :initialize klass.class_eval initialize_method_code, __FILE__, __LINE__ end def initialize_method_code b = "def initialize(#{initialize_method_args_code})\n" b += " run_callbacks :initialize do\n" initialize_method_args.each do |arg| b += " self.#{arg} = #{arg}\n" end b += " end\n" b += "end\n" b end def initialize_method_args_code initialize_method_args.join(', ') end def initialize_method_args args end end end
Version data entries
8 entries across 8 versions & 1 rubygems