class SimpleRewriter::ClassResolver

Constants

NotSupportedAttribute

Attributes

attr_klass[R]
guess[R]
klass[R]
options[R]

Public Class Methods

new(value, guess, options = nil) click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 5
def initialize(value, guess, options = nil)
  @value = value
  @guess = guess
  @attr_klass = value.class
  @options = options
end

Public Instance Methods

call() click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 12
def call
  desired_class
end

Private Instance Methods

active_record?() click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 64
def active_record?
  attr_klass.is_a?(ActiveRecord::Base) if defined?(ActiveRecord::Base)
end
default?() click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 46
def default?
  options && options[:default]
end
default_class() click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 42
def default_class
  options[:default].class
end
desired_class() click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 20
def desired_class
  return klass if detect_type? && try_class(detect_type)
  return klass if default? && try_class(default_class)
  return klass if try_class(attr_klass)
  return SimpleRewriter::Readers::ActiveRecordReader if active_record?

  raise_unsupported_error
end
detect_type() click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 54
def detect_type
  SimpleRewriter::TypeDetector.call(value)
end
detect_type?() click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 50
def detect_type?
  options && options[:detect_type]
end
raise_unsupported_error() click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 29
def raise_unsupported_error
  raise NotSupportedAttribute, "Attribute '#{attr_klass}' is not supported (#{string_to_constantize(attr_klass)})"
end
safe_constantize(target) click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 58
def safe_constantize(target)
  Object.const_get(target)
rescue StandardError
  false
end
string_to_constantize(scoped_klass) click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 38
def string_to_constantize(scoped_klass)
  guess % { klass: scoped_klass }
end
try_class(scoped_klass) click to toggle source
# File lib/simple_rewriter/class_resolver.rb, line 33
def try_class(scoped_klass)
  return false unless result = safe_constantize(string_to_constantize(scoped_klass))
  @klass = result
end