Criteria 1.0
============

Criteria is a module for abstracting queries to various data sets.
For instance, you might have a flat text file, or an array of Ruby
objects, or a SQL database, and wish to perform the same query on
any given source, without different versions of code for each.

This module was inspired by the work of flgr (on #ruby-talk) on
Junction, and the ENV.var work by h9k (also on #ruby-talk).

Here are some examples:

   idx1 = SQLTable.new("orders")
   q1   = (idx1.price > idx1.paid) & (idx1.duedate < Time.now.to_i)
   
   q1.limit    = 5
   q1.order    = :ASC
   q1.order_by = idx1.name, idx1.age

   puts q1.select

   # => SELECT * FROM orders WHERE ((orders.price > orders.paid) AND
   #    (orders.duedate < 1062616643)) LIMIT 5 ORDER BY orders.name,
   #    orders.age ASC


The generic Table superclass with the same query:

   idx2 = Table.new
   q2   = (idx2.price > idx2.paid) & (idx2.duedate < Time.now.to_i)

   puts q2.inspect
   puts q1.inspect

   # => (& (> :price :paid) (< :duedate 1062616719))
   # => (& (> :price :paid) (< :duedate 1062616719))

The very simple 'mysql' table included works like SQLTable, except
it actually returns a MysqlRes for immediate use.  There are other
included table types as well.

You can find Criteria at the following location:

    http://mephle.org/Criteria/

-- 
Ryan Pavlik <rpav / mephle.com>