Module: OptStruct

Defined in:
lib/opt_struct.rb,
lib/opt_struct/class_methods.rb,
lib/opt_struct/instance_methods.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Class Method Summary collapse

Class Method Details

.build(*args, **defaults) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/opt_struct.rb', line 28

def self.build(*args, **defaults)
  check_for_invalid_args(args)
  args.map!(&:to_sym)
  Module.new do
    @arguments = args
    @defaults = defaults

    def self.included(klass)
      arguments, defaults = @arguments, @defaults
      OptStruct.inject_struct(klass) do
        expect_arguments *arguments
        options defaults
      end
    end
  end
end

.included(klass) ⇒ Object



15
16
17
# File 'lib/opt_struct.rb', line 15

def self.included(klass)
  inject_struct(klass)
end

.inject_struct(target_klass, &more_block) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/opt_struct.rb', line 5

def self.inject_struct(target_klass, &more_block)
  target_klass.instance_exec do
    extend ClassMethods
    attr_reader :options
    include InstanceMethods
  end
  target_klass.instance_exec(&more_block) if block_given?
  target_klass
end

.new(*args, **defaults) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/opt_struct.rb', line 19

def self.new(*args, **defaults)
  check_for_invalid_args(args)
  args.map!(&:to_sym)
  inject_struct(Class.new) do
    expect_arguments *args
    options defaults
  end
end