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