Sha256: 4f39a52b2638bc02734a6bcb798838d2a82284dec94510c0a61051840b40eae6

Contents?: true

Size: 971 Bytes

Versions: 22

Compression:

Stored size: 971 Bytes

Contents

module PushType
  module Unexposable
    extend ActiveSupport::Concern

    included do
      scope :exposed, -> {
        unexposed_classes.present? ? where.not(type: unexposed_classes.map(&:name)) : all
      }
    end

    def exposed?
      self.class.exposed?
    end

    module ClassMethods

      def descendants(opts = {})
        if opts.has_key? :exposed
          super().select { |d| !opts[:exposed] == PushType.send(unexposure_method).include?(d.name.underscore) }
        else
          super()
        end
      end

      def unexposed_classes
        _ct.base_class.descendants(exposed: false)
      end

      def unexposure_method
        case _ct.base_class.name.demodulize
          when 'Node' then :unexposed_nodes
        end
      end

      def unexpose!
        PushType.config.send(unexposure_method).push(self.name.underscore.to_sym).uniq!
      end

      def exposed?
        !unexposed_classes.include?(self)
      end

    end

  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
push_type_core-0.12.1 app/models/concerns/push_type/unexposable.rb
push_type_core-0.12.0 app/models/concerns/push_type/unexposable.rb
push_type_core-0.12.0.beta.1 app/models/concerns/push_type/unexposable.rb
push_type_core-0.11.2 app/models/concerns/push_type/unexposable.rb
push_type_core-0.11.1 app/models/concerns/push_type/unexposable.rb
push_type_core-0.11.0.beta.2 app/models/concerns/push_type/unexposable.rb
push_type_core-0.11.0.beta.1 app/models/concerns/push_type/unexposable.rb
push_type_core-0.10.4 app/models/concerns/push_type/unexposable.rb
push_type_core-0.10.3 app/models/concerns/push_type/unexposable.rb
push_type_core-0.10.2 app/models/concerns/push_type/unexposable.rb
push_type_core-0.10.1 app/models/concerns/push_type/unexposable.rb
push_type_core-0.10.0 app/models/concerns/push_type/unexposable.rb
push_type_core-0.10.0.beta.5 app/models/concerns/push_type/unexposable.rb
push_type_core-0.10.0.beta.3 app/models/concerns/push_type/unexposable.rb
push_type_core-0.9.5 app/models/concerns/push_type/unexposable.rb
push_type_core-0.9.3 app/models/concerns/push_type/unexposable.rb
push_type_core-0.9.2 app/models/concerns/push_type/unexposable.rb
push_type_core-0.9.1 app/models/concerns/push_type/unexposable.rb
push_type_core-0.9.0 app/models/concerns/push_type/unexposable.rb
push_type_core-0.9.0.beta.4 app/models/concerns/push_type/unexposable.rb