Class: Eco::API::UseCases
- Inherits:
-
Object
- Object
- Eco::API::UseCases
show all
- 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_case.rb,
lib/eco/api/usecases/default_cases.rb,
lib/eco/api/usecases/use_case_chain.rb,
lib/eco/api/usecases/default_cases/hris_case.rb,
lib/eco/api/usecases/default_cases/create_case.rb,
lib/eco/api/usecases/default_cases/delete_case.rb,
lib/eco/api/usecases/default_cases/new_id_case.rb,
lib/eco/api/usecases/default_cases/to_csv_case.rb,
lib/eco/api/usecases/default_cases/update_case.rb,
lib/eco/api/usecases/default_cases/upsert_case.rb,
lib/eco/api/usecases/default_cases/refresh_case.rb,
lib/eco/api/usecases/default_cases/reinvite_case.rb,
lib/eco/api/usecases/default_cases/new_email_case.rb,
lib/eco/api/usecases/default_cases/recover_db_case.rb,
lib/eco/api/usecases/default_cases/email_as_id_case.rb,
lib/eco/api/usecases/default_cases/change_email_case.rb,
lib/eco/api/usecases/default_cases/codes_to_tags_case.rb,
lib/eco/api/usecases/default_cases/create_details_case.rb,
lib/eco/api/usecases/default_cases/remove_account_case.rb,
lib/eco/api/usecases/default_cases/set_supervisor_case.rb,
lib/eco/api/usecases/default_cases/update_details_case.rb,
lib/eco/api/usecases/default_cases/refresh_presets_case.rb,
lib/eco/api/usecases/default_cases/set_default_tag_case.rb,
lib/eco/api/usecases/default_cases/to_csv_detailed_case.rb,
lib/eco/api/usecases/default_cases/switch_supervisor_case.rb,
lib/eco/api/usecases/default_cases/reset_landing_page_case.rb,
lib/eco/api/usecases/default_cases/create_details_with_supervisor_case.rb
Defined Under Namespace
Classes: AmbiguousCaseReference, BaseCase, BaseIO, DefaultCase, DefaultCases, UnkownCase, UseCase, UseCaseChain, UseCaseIO
Instance Method Summary
collapse
Constructor Details
24
25
26
27
28
|
# File 'lib/eco/api/usecases.rb', line 24
def initialize()
@usecases = {}
@cache_init = false
@cases_by_name = {}
end
|
Instance Method Details
#add(usecase) ⇒ Object
47
48
49
50
51
52
53
54
55
|
# File 'lib/eco/api/usecases.rb', line 47
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)
@cache_init = false
@usecases[key(name, type)] = usecase
usecase
end
|
#case(name, type: nil) ⇒ Object
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/eco/api/usecases.rb', line 81
def case(name, type: nil)
if type && target_case = @usecases[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
|
#define(name, type:, &block) ⇒ Object
57
58
59
60
61
|
# File 'lib/eco/api/usecases.rb', line 57
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
63
64
65
66
|
# File 'lib/eco/api/usecases.rb', line 63
def defined?(name, type: nil)
return @usecases.key?(key(name, type)) if type
name?(name)
end
|
#each(params: {}, &block) ⇒ Object
38
39
40
41
|
# File 'lib/eco/api/usecases.rb', line 38
def each(params: {}, &block)
return to_enum(:each) unless block
items.each(&block)
end
|
#empty? ⇒ Boolean
34
35
36
|
# File 'lib/eco/api/usecases.rb', line 34
def empty?
count == 0
end
|
#items ⇒ Object
43
44
45
|
# File 'lib/eco/api/usecases.rb', line 43
def items
@usecases.values
end
|
#length ⇒ Object
30
31
32
|
# File 'lib/eco/api/usecases.rb', line 30
def length
count
end
|
#merge(cases) ⇒ Object
merges cases overriding self for exisint parsers
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/eco/api/usecases.rb', line 93
def merge(cases)
return self if !cases
raise "Expected a Eco::API::UseCases object. Given #{cases.class}" if !cases.is_a?(Eco::API::UseCases)
cases_hash = cases.to_h
@usecases.merge!(cases_hash)
cases_hash.transform_values do |usecase|
usecase.root = self
end
@cache_init = false
self
end
|
#name?(name) ⇒ Boolean
68
69
70
|
# File 'lib/eco/api/usecases.rb', line 68
def name?(name)
!!by_name[name]
end
|
#names ⇒ Object
72
73
74
|
# File 'lib/eco/api/usecases.rb', line 72
def names
by_name.keys
end
|
#types(name) ⇒ Object
76
77
78
79
|
# File 'lib/eco/api/usecases.rb', line 76
def types(name)
return nil if !name?(name)
by_name[name].map { |usecase| usecase.type }
end
|