Methods
Attributes
[R] name
[R] test
[R] value
Public Class methods
new(*args)

Initialize a Clause object with the name of the column.

    # File lib/og/ez/clause.rb, line 30
30:       def initialize(*args)
31:         @table_prefix = ''
32:         @negate = false
33:         case args.length
34:         when 0:
35:           raise 'Expected at least one parameter'
36:         when 1:
37:           @name = args.first.to_s
38:         when 2:
39:           @table_prefix = args[0].to_s + '.' unless args[0].to_s.empty? 
40:           @name = args[1].to_s
41:         when 3:
42:           @table_prefix = args[0].to_s + '.' unless args[0].to_s.empty? 
43:           @name = args[1].to_s
44:           @negate = args[2]
45:         end
46:         # append ! to negate the statement
47:         if @name[-1,1] == '!'
48:           @negate = true
49:           @name = @name.slice(0, @name.length - 1) 
50:         end
51:         # prefix with esc_ to avoid clashes with standard methods like 'alias'
52:         @name = @name.slice(4, @name.length) if @name =~ /^esc_.*/
53:       end
Public Instance methods
<=>(range)

The spaceship <=> operator has been over-ridden here to stand in for the sql ["BETWEEN ? AND ?", 1, 5] "%foobar%" clause.

    # File lib/og/ez/clause.rb, line 71
71:       def <=>(range)
72:         @test = :between
73:         @value = range
74:       end
==(other)

The == operator has been over-ridden here to stand in for an exact match ["foo = ?", "bar"]

    # File lib/og/ez/clause.rb, line 57
57:       def ==(other)
58:         @test = :equals
59:         @value = other
60:       end
===(range)

The === operator has been over-ridden here to stand in for the sql ["IN (?)", [1,2,3]] clause.

    # File lib/og/ez/clause.rb, line 78
78:       def ===(range)
79:         @test = :in
80:         @value = range
81:       end
=~(pattern)

The =~ operator has been over-ridden here to stand in for the sql LIKE "%foobar%" clause.

    # File lib/og/ez/clause.rb, line 64
64:       def =~(pattern)
65:         @test = :like
66:         @value = pattern
67:       end
method_missing(name, *args)

This method_missing takes care of setting @test to any operator thats not covered above. And @value to the value

     # File lib/og/ez/clause.rb, line 108
108:       def method_missing(name, *args)
109:         @test = name
110:         @value = args.first
111:       end
to_sql()

switch on @test and build appropriate clause to match the operation.

     # File lib/og/ez/clause.rb, line 85
 85:       def to_sql
 86:         case @test
 87:         when :equals
 88:           if @value == :null
 89:             @negate ? ["#{@table_prefix}#{@name} IS NOT NULL"] : ["#{@table_prefix}#{@name} IS NULL"] 
 90:           else
 91:             @negate ? ["#{@table_prefix}#{@name} != ?", @value] : ["#{@table_prefix}#{@name} = ?", @value] 
 92:           end 
 93:         when :like
 94:           @negate ? ["#{@table_prefix}#{@name} NOT LIKE ?", @value] : ["#{@table_prefix}#{@name} LIKE ?", @value]
 95:         when :between
 96:           @negate ? ["#{@table_prefix}#{@name} NOT BETWEEN ? AND ?", @value.begin, @value.end] : ["#{@table_prefix}#{@name} BETWEEN ? AND ?", @value.begin, @value.end] 
 97:         when :in
 98: #          @negate ? ["#{@table_prefix}#{@name} NOT IN (?)", @value.to_a] : ["#{@table_prefix}#{@name} IN (?)", @value.to_a] 
 99:           @negate ? ["#{@table_prefix}#{@name} NOT IN (?*)", @value.to_a] : ["#{@table_prefix}#{@name} IN (?*)", @value.to_a]
100:         else
101:           ["#{@table_prefix}#{@name} #{@test} ?", @value]
102:         end
103:       end