Sha256: 5b159695faa720b6d1da86a7bffb776bce3039a32feb38d324714becf90148ad

Contents?: true

Size: 668 Bytes

Versions: 6

Compression:

Stored size: 668 Bytes

Contents

module Ohm
  module Scope
    def self.included(model)
      unless model.const_defined?(:DefinedScopes)
        model.const_set(:DefinedScopes, Module.new)
      end

      model.extend ClassMethods
    end

    module ClassMethods
      def scope(scope = nil, &block)
        self::DefinedScopes.module_eval(&block) if block_given?
        self::DefinedScopes.send(:include, scope) if scope
      end
    end

    module OverloadedSet
      def initialize(*args)
        super

        extend model::DefinedScopes if defined?(model::DefinedScopes)
      end
    end
  end

  Set.send :include, Scope::OverloadedSet
  MultiSet.send :include, Scope::OverloadedSet
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ohm-contrib-1.1.0 lib/ohm/scope.rb
ohm-contrib-1.0.1 lib/ohm/scope.rb
ohm-contrib-1.0.0 lib/ohm/scope.rb
ohm-contrib-1.0.0.rc5 lib/ohm/scope.rb
ohm-contrib-1.0.0.rc4 lib/ohm/scope.rb
ohm-contrib-1.0.0.rc3 lib/ohm/scope.rb