Sha256: c28221fca621b7ed5a494ad2b06bb8c0b3e863874b6f17371a494d6dad1c4183

Contents?: true

Size: 988 Bytes

Versions: 2

Compression:

Stored size: 988 Bytes

Contents

module JSONAPIonify::Api
  module Relationship::Blocks

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

    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

    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
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jsonapionify-0.9.0 lib/jsonapionify/api/relationship/blocks.rb
jsonapionify-0.0.1.pre lib/jsonapionify/api/relationship/blocks.rb