Class: FIRM::Serializable::MethodResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/firm/serializable.rb

Overview

Small utility class for delayed method resolving

Instance Method Summary collapse

Constructor Details

#initialize(klass, mtd_id, default = false) ⇒ MethodResolver

Returns a new instance of MethodResolver.



546
547
548
549
550
# File 'lib/firm/serializable.rb', line 546

def initialize(klass, mtd_id, default=false)
  @klass = klass
  @mtd_id = mtd_id
  @default = default
end

Instance Method Details

#resolveObject



552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
# File 'lib/firm/serializable.rb', line 552

def resolve
  m = @klass.instance_method(@mtd_id) rescue nil
  if m
    # check arity == 0
    if m.arity>0
      unless @default
        Kernel.raise ArgumentError,
                     "Deserialize finalizer method #{@klass}#{@mtd_id} should not expect any argument",
                     caller
      end
    else
      return ->(obj) { m.bind(obj).call }
    end
  end
  nil
end