class EacRubyUtils::CommonConstructor
Attributes
after_set_block[R]
args[R]
options[R]
Public Class Methods
new(*args, &after_set_block)
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 38 def initialize(*args, &after_set_block) args_processed = self.class.parse_args_options(args) @args = args_processed.args @options = args_processed.options @after_set_block = after_set_block end
parse_args_options(args)
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 13 def parse_args_options(args) result = ::OpenStruct.new(args: [], options: {}) options_reached = false args.each do |arg| raise "Options reached and there is more arguments (Arguments: #{args})" if options_reached options_reached = parse_arg_options_process_arg(result, arg) end result end
Private Class Methods
parse_arg_options_process_arg(result, arg)
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 27 def parse_arg_options_process_arg(result, arg) if arg.is_a?(::Hash) result.options = arg true else result.args << arg false end end
Public Instance Methods
args_count()
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 45 def args_count (args_count_min..args_count_max) end
args_count_max()
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 53 def args_count_max args.count end
args_count_min()
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 49 def args_count_min args.count - default_values.count end
default_values()
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 57 def default_values options[:default] || [] end
setup_class(klass)
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 61 def setup_class(klass) setup_class_attr_readers(klass) setup_class_attr_writers(klass) setup_class_initialize(klass) klass end
setup_class_attr_readers(klass)
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 69 def setup_class_attr_readers(klass) klass.send(:attr_reader, *args) klass.send(:public, *args) end
setup_class_attr_writers(klass)
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 74 def setup_class_attr_writers(klass) klass.send(:attr_writer, *args) klass.send(:private, *args.map { |a| "#{a}=" }) end
setup_class_initialize(klass)
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 79 def setup_class_initialize(klass) klass.include(::ActiveSupport::Callbacks) klass.define_callbacks :initialize ::EacRubyUtils::CommonConstructor::ClassInitialize.new(self, klass).run end
super_args()
click to toggle source
# File lib/eac_ruby_utils/common_constructor.rb, line 85 def super_args options[:super_args] end