class SuperDiff::OperationTrees::Main

Public Instance Methods

call() click to toggle source
# File lib/super_diff/operation_trees/main.rb, line 8
def call
  if resolved_class
    begin
      resolved_class.new([], underlying_object: value)
    rescue ArgumentError
      resolved_class.new([])
    end
  else
    raise Errors::NoOperationalSequenceAvailableError.create(value)
  end
end

Private Instance Methods

available_classes() click to toggle source
# File lib/super_diff/operation_trees/main.rb, line 30
def available_classes
  SuperDiff.configuration.extra_operation_tree_classes + DEFAULTS
end
resolved_class() click to toggle source
# File lib/super_diff/operation_trees/main.rb, line 22
def resolved_class
  if value.respond_to?(:attributes_for_super_diff)
    CustomObject
  else
    available_classes.find { |klass| klass.applies_to?(value) }
  end
end