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
|