Sha256: 09c71a9808e130e083b091c46faddeb27498ef794177a1d0f806f9a0556672c9

Contents?: true

Size: 735 Bytes

Versions: 2

Compression:

Stored size: 735 Bytes

Contents

module SeoFriendly
  class SourceSearcher

    attr_reader :object

    def initialize(model)
      @object = model
    end

    def find_source
      source or raise SourceNotDefinedError.new(find, object)
    end

    private

    def source
      klass = find
      klass = klass.constantize if klass.is_a?(String)
      klass
    rescue NameError
      nil
    end

    def find
      klass = if object.respond_to?(:model_name)
        object.model_name
      elsif object.class.respond_to?(:model_name)
        object.class.model_name
      elsif object.is_a?(Class)
        object
      elsif object.is_a?(Symbol)
        object.to_s.classify
      else
        object.class
      end
      "#{klass}SeoSource"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
seo_friendly-0.0.2 lib/seo_friendly/source_searcher.rb
seo_friendly-0.0.1 lib/seo_friendly/source_searcher.rb