Sha256: 17c4fdc7ccf3f94c06d4b35c7373934f1899765d183cbd24ac294354255867be

Contents?: true

Size: 650 Bytes

Versions: 3

Compression:

Stored size: 650 Bytes

Contents

module DataMapper
  module Ambition
    module Query
      @@sexps = {}

      # TODO: spec and document this
      # @api semipublic
      def filter(&block)
        # TODO: benchmark Marshal versus just building the sexp on demand

        # deep clone the sexp for multiple re-use
        sexp = Marshal.load(@@sexps[block.to_s] ||= Marshal.dump(block.to_sexp))

        processor = FilterProcessor.new(block.binding, model)
        processor.process(sexp)

        self.class.new(repository, model, options.merge(:conditions => conditions & processor.conditions))
      end

    end # module Query
  end # module Ambition
end # module DataMapper

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dm-ambition-1.1.0 lib/dm-ambition/query.rb
dm-ambition-1.1.0.rc3 lib/dm-ambition/query.rb
dm-ambition-1.1.0.rc1 lib/dm-ambition/query.rb