Class: MiniService::Base
- Inherits:
-
Object
show all
- Defined in:
- lib/mini_service/base.rb
Defined Under Namespace
Classes: ExtraArgumentError, MissingArgumentError
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.optional ⇒ Object
Returns the value of attribute optional.
13
14
15
|
# File 'lib/mini_service/base.rb', line 13
def optional
@optional
end
|
.opts ⇒ Object
Returns the value of attribute opts.
14
15
16
|
# File 'lib/mini_service/base.rb', line 14
def opts
@opts
end
|
.required ⇒ Object
Returns the value of attribute required.
12
13
14
|
# File 'lib/mini_service/base.rb', line 12
def required
@required
end
|
Class Method Details
.add_optional_arguments(options) ⇒ Object
33
34
35
|
# File 'lib/mini_service/base.rb', line 33
def add_optional_arguments(options)
optional.merge!(options)
end
|
.add_required_argument(argument) ⇒ Object
37
38
39
40
41
42
|
# File 'lib/mini_service/base.rb', line 37
def add_required_argument(argument)
case argument
when Symbol, String then required << argument
when Array then add_required_arguments(argument)
end
end
|
.add_required_arguments(arguments) ⇒ Object
29
30
31
|
# File 'lib/mini_service/base.rb', line 29
def add_required_arguments(arguments)
arguments.each(&method(:add_required_argument))
end
|
.arguments(*req, **opt) ⇒ Object
22
23
24
25
26
27
|
# File 'lib/mini_service/base.rb', line 22
def arguments(*req, **opt)
add_required_arguments(req)
add_optional_arguments(opt)
define_readers
end
|
.call(**opts) ⇒ Object
54
55
56
57
58
59
60
|
# File 'lib/mini_service/base.rb', line 54
def call(**opts)
@opts = opts
validate_missing_arguments
new(**optional.merge(opts)).send :perform
end
|
.define_readers ⇒ Object
44
45
46
47
|
# File 'lib/mini_service/base.rb', line 44
def define_readers
required.each { |r| attr_reader r }
optional.each_key { |r| attr_reader r }
end
|
80
81
82
|
# File 'lib/mini_service/base.rb', line 80
def
(opts.keys - (required + optional.keys))
end
|
.inherited(subclass) ⇒ Object
49
50
51
52
|
# File 'lib/mini_service/base.rb', line 49
def inherited(subclass)
subclass.set_initial_values(required, optional)
subclass.arguments
end
|
.missing_arguments ⇒ Object
76
77
78
|
# File 'lib/mini_service/base.rb', line 76
def missing_arguments
(required - opts.keys)
end
|
.set_initial_values(req, opt) ⇒ Object
16
17
18
19
20
|
# File 'lib/mini_service/base.rb', line 16
def set_initial_values(req, opt)
@required ||= req || []
@optional ||= opt || {}
nil
end
|
62
63
64
65
66
67
|
# File 'lib/mini_service/base.rb', line 62
def
if .any?
raise ExtraArgumentError,
"Extra arguments: #{.join(', ')}"
end
end
|
.validate_missing_arguments ⇒ Object
69
70
71
72
73
74
|
# File 'lib/mini_service/base.rb', line 69
def validate_missing_arguments
if missing_arguments.any?
raise MissingArgumentError,
"Missing arguments: #{missing_arguments.join(', ')}"
end
end
|