Module: Yaoc::MappingBase

Defined in:
lib/yaoc/mapping_base.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(other) ⇒ Object



4
5
6
# File 'lib/yaoc/mapping_base.rb', line 4

def self.included(other)
  other.extend(ClassMethods)
end

Instance Method Details

#callObject



20
21
22
23
24
25
26
# File 'lib/yaoc/mapping_base.rb', line 20

def call
  unless to_convert.nil?
    self.class.mapping_strategy.call(self)
  else
    nil
  end
end

#converter_methodsObject



47
48
49
# File 'lib/yaoc/mapping_base.rb', line 47

def converter_methods
  self.class.converter_methods
end

#deferrer_strategy(proc) ⇒ Object



42
43
44
# File 'lib/yaoc/mapping_base.rb', line 42

def deferrer_strategy(proc)
  Yaoc::Helper::ToProcDelegator.new(proc)
end

#fetcherObject



51
52
53
# File 'lib/yaoc/mapping_base.rb', line 51

def fetcher
  defined?(super) ? super : :fetch
end

#fill_result_from_proc(result, key, proc, deferred = false) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/yaoc/mapping_base.rb', line 32

def fill_result_from_proc(result, key, proc, deferred=false)
  value = if deferred
            deferrer_strategy(proc)
          else
            proc.call
          end

  fill_result_with_value(result, key, value)
end

#fill_result_with_value(result, key, value) ⇒ Object



28
29
30
# File 'lib/yaoc/mapping_base.rb', line 28

def fill_result_with_value(result, key, value)
  result.tap{|taped_result| taped_result[key] = value}
end

#to_procObject



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/yaoc/mapping_base.rb', line 8

def to_proc
  ->(to_convert){
    old_to_convert = self.to_convert
    begin
      self.to_convert = to_convert
      call
    ensure
      self.to_convert = old_to_convert
    end
  }
end