Class: Eco::API::UseCases
- Inherits:
-
Object
- Object
- Eco::API::UseCases
show all
- Extended by:
- Common::ClassAutoLoader
- Includes:
- Enumerable
- Defined in:
- lib/eco/api/usecases.rb,
lib/eco/api/usecases/base_io.rb,
lib/eco/api/usecases/use_case.rb,
lib/eco/api/usecases/base_case.rb,
lib/eco/api/usecases/use_case_io.rb,
lib/eco/api/usecases/default_cases.rb,
lib/eco/api/usecases/use_case_chain.rb,
lib/eco/api/usecases/backup/hris_case.rb,
lib/eco/api/usecases/backup/create_case.rb,
lib/eco/api/usecases/backup/update_case.rb,
lib/eco/api/usecases/backup/upsert_case.rb,
lib/eco/api/usecases/backup/create_details_case.rb,
lib/eco/api/usecases/backup/set_supervisor_case.rb,
lib/eco/api/usecases/backup/update_details_case.rb,
lib/eco/api/usecases/backup/set_default_tag_case.rb,
lib/eco/api/usecases/backup/transfer_account_case.rb,
lib/eco/api/usecases/backup/append_usergroups_case.rb,
lib/eco/api/usecases/backup/create_details_with_supervisor_case.rb
Defined Under Namespace
Classes: AmbiguousCaseReference, BaseCase, BaseIO, DefaultCases, UnkownCase, UseCase, UseCaseChain, UseCaseIO
Instance Method Summary
collapse
_autoload_namespace, autoload_children, autoload_class?, autoload_namespace, autoload_namespace_ignore, autoloaded_children, autoloaded_class, autoloaded_namespaces, autoloads_children_of, known_class!, known_classes, new_classes, unloaded_children
#class_resolver, #descendants, #descendants?, #new_class, #resolve_class, #to_constant
Constructor Details
Returns a new instance of UseCases.
29
30
31
32
33
|
# File 'lib/eco/api/usecases.rb', line 29
def initialize()
@usecases = {}
@cache_init = false
@cases_by_name = {}
end
|
Instance Method Details
#add(usecase) ⇒ Object
Adds usecase
to the Collection. Before it tries to auto-load pending classes of auto_loaded_class
.
70
71
72
73
74
75
76
77
78
|
# File 'lib/eco/api/usecases.rb', line 70
def add(usecase)
raise "Expected Eco::API::UseCases::UseCase object. Given: #{usecase}" if !usecase || !usecase.is_a?(Eco::API::UseCases::UseCase)
name = usecase.name
type = usecase.type
puts "Warning: overriding '#{type.to_s}' case #{name}" if self.defined?(name, type: type)
to_h[key(name, type)] = usecase
@cache_init = false
usecase
end
|
#case(name, type: nil) ⇒ Object
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/eco/api/usecases.rb', line 109
def case(name, type: nil)
if type && target_case = to_h[key(name, type)]
return target_case
elsif type
raise UseCases::UnkownCase.new(case_name: name, type: type)
end
raise UseCases::UnkownCase.new(case_name: name, type: type) unless cases = by_name[name]
raise UseCases::AmbiguousCaseReference.new(case_name: name) if cases.length > 1
cases.first
end
|
Returns the name
usecase of type type
with the defined block
.
62
63
64
65
66
|
# File 'lib/eco/api/usecases.rb', line 62
def define(name, type:, &block)
Eco::API::UseCases::UseCase.new(name, type: type, root: self, &block).tap do |usecase|
add(usecase)
end
end
|
#defined?(name, type: nil) ⇒ Boolean
52
53
54
55
|
# File 'lib/eco/api/usecases.rb', line 52
def defined?(name, type: nil)
return to_h.key?(key(name, type)) if type
name?(name)
end
|
Returns a copy of instance object of self
.
81
82
83
|
# File 'lib/eco/api/usecases.rb', line 81
def dup
self.class.new.merge(self)
end
|
#each(&block) ⇒ Object
43
44
45
46
|
# File 'lib/eco/api/usecases.rb', line 43
def each(&block)
return to_enum(:each) unless block
items.each(&block)
end
|
#empty? ⇒ Boolean
39
40
41
|
# File 'lib/eco/api/usecases.rb', line 39
def empty?
count == 0
end
|
#items ⇒ Object
48
49
50
|
# File 'lib/eco/api/usecases.rb', line 48
def items
to_h.values
end
|
#length ⇒ Object
35
36
37
|
# File 'lib/eco/api/usecases.rb', line 35
def length
count
end
|
Merges cases overriding self for exisint parsers
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/eco/api/usecases.rb', line 88
def merge(cases)
return self if !cases
raise "Expected a Eco::API::UseCases object. Given #{cases.class}" if !cases.is_a?(Eco::API::UseCases)
to_h.merge!(cases.to_h).transform_values do |usecase|
usecase.root = self
end
@cache_init = false
self
end
|
#name?(name) ⇒ Boolean
57
58
59
|
# File 'lib/eco/api/usecases.rb', line 57
def name?(name)
!!by_name[name]
end
|
#names ⇒ Object
100
101
102
|
# File 'lib/eco/api/usecases.rb', line 100
def names
by_name.keys
end
|
#types(name) ⇒ Object
104
105
106
107
|
# File 'lib/eco/api/usecases.rb', line 104
def types(name)
return nil if !name?(name)
by_name[name].map { |usecase| usecase.type }
end
|