Sha256: 10444d1e7cb57b817ff1bb3e43a65ba3661d5bc9c71dc2806d9e4dabb2cecb25

Contents?: true

Size: 693 Bytes

Versions: 4

Compression:

Stored size: 693 Bytes

Contents

require 'active_support/concern'

module Guise
  module Introspection
    extend ActiveSupport::Concern

    def has_guise?(value)
      value = value.to_s.classify

      unless guise_options[:names].any? { |name| name == value }
        raise ArgumentError, "no such guise #{value}"
      end

      guises.any? { |guise| !guise.marked_for_destruction? && guise[guise_options[:attribute]] == value }
    end

    def has_any_guises?(*values)
      values.any? { |value| has_guise?(value) }
    end

    def has_guises?(*values)
      values.all? { |value| has_guise?(value) }
    end

    private

    def guise_options
      Guise.registry[self.class.table_name.classify]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
guise-0.6.0 lib/guise/introspection.rb
guise-0.5.0 lib/guise/introspection.rb
guise-0.4.1 lib/guise/introspection.rb
guise-0.4.0 lib/guise/introspection.rb