/
organizer.rb
36 lines (31 loc) · 874 Bytes
/
organizer.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
require 'active_support/deprecation'
module LightService
module Organizer
def self.extended(base_class)
base_class.extend ClassMethods
base_class.extend Macros
end
def self.included(base_class)
warning_msg = "including LightService::Organizer is deprecated. " \
"Please use `extend LightService::Organizer` instead"
ActiveSupport::Deprecation.warn(warning_msg)
base_class.extend ClassMethods
base_class.extend Macros
end
# In case this module is included
module ClassMethods
def with(data = {})
data[:_aliases] = @aliases if @aliases
WithReducerFactory.make(self).with(data)
end
def reduce(*actions)
with({}).reduce(actions)
end
end
module Macros
def aliases(key_hash)
@aliases = key_hash
end
end
end
end