Module: JSONAPIonify::Api::Relationship::Blocks

Included in:
JSONAPIonify::Api::Relationship
Defined in:
lib/jsonapionify/api/relationship/blocks.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(klass) ⇒ Object



4
5
6
7
8
9
# File 'lib/jsonapionify/api/relationship/blocks.rb', line 4

def self.extended(klass)
  klass.class_eval do
    prepend_class
    append_class
  end
end

Instance Method Details

#append_class(&block) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/jsonapionify/api/relationship/blocks.rb', line 26

def append_class(&block)
  block ||= proc {}
  if method_defined? :class_appends
    previous_appends = instance_method(:class_appends)
    define_method :class_appends do
      (previous_appends.bind(self).call + [block]).freeze
    end
  else
    appends = [block].freeze
    define_method :class_appends do
      appends
    end
  end
end

#prepend_class(&block) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/jsonapionify/api/relationship/blocks.rb', line 11

def prepend_class(&block)
  block ||= proc {}
  if method_defined? :class_prepends
    previous_prepends = instance_method(:class_prepends)
    define_method :class_prepends do
      (previous_prepends.bind(self).call + [block]).freeze
    end
  else
    prepends = [block].freeze
    define_method :class_prepends do
      prepends
    end
  end
end