module OptStruct
Constants
- RESERVED_WORDS
- VERSION
Public Class Methods
_inject_struct(target, source, args = [], **defaults, &callback)
click to toggle source
# File lib/opt_struct.rb, line 8 def self._inject_struct(target, source, args = [], **defaults, &callback) structs = Array(source.instance_variable_get(:@_opt_structs)).dup if args.any? || defaults.any? || block_given? structs << [args, defaults, callback] end target.instance_variable_set(:@_opt_structs, structs) if target.is_a?(Class) target.instance_exec do extend ClassMethods attr_reader :options include InstanceMethods end structs.each do |s_args, s_defaults, s_callback| target.expect_arguments *s_args if s_args.any? target.options **s_defaults if s_defaults.any? target.class_exec(&s_callback) if s_callback end else target.singleton_class.prepend ModuleMethods end target end
build(*args, **defaults, &callback)
click to toggle source
# File lib/opt_struct.rb, line 45 def self.build(*args, **defaults, &callback) _inject_struct(Module.new, self, args.map(&:to_sym), **defaults, &callback) end
included(klass)
click to toggle source
Calls superclass method
# File lib/opt_struct.rb, line 31 def self.included(klass) _inject_struct(klass, self) super(klass) end
new(*args, **defaults, &callback)
click to toggle source
# File lib/opt_struct.rb, line 41 def self.new(*args, **defaults, &callback) _inject_struct(Class.new, self, args.map(&:to_sym), **defaults, &callback) end
prepended(klass)
click to toggle source
Calls superclass method
# File lib/opt_struct.rb, line 36 def self.prepended(klass) _inject_struct(klass, self) super(klass) end