Sha256: b44260c33cf4423d3621b1595b10cb1b1bcad7f3590ce00443432befabeeeead
Contents?: true
Size: 1.19 KB
Versions: 5
Compression:
Stored size: 1.19 KB
Contents
module Arel class Where < Compound def eval unoperated_rows.select { |row| predicate.eval(row) } end end class Order < Compound def eval unoperated_rows.sort do |row1, row2| ordering = orderings.detect { |o| o.eval(row1, row2) != 0 } || orderings.last ordering.eval(row1, row2) end end end class Project < Compound def eval unoperated_rows.collect { |r| r.slice(*projections) } end end class Take < Compound def eval unoperated_rows[0, taken] end end class Skip < Compound def eval unoperated_rows[skipped..-1] end end class From < Compound def eval unoperated_rows[sources..-1] end end class Group < Compound def eval raise NotImplementedError end end class Alias < Compound def eval unoperated_rows end end class Join < Relation def eval result = [] relation1.call.each do |row1| relation2.call.each do |row2| combined_row = row1.combine(row2, self) if predicates.all? { |p| p.eval(combined_row) } result << combined_row end end end result end end end
Version data entries
5 entries across 5 versions & 1 rubygems