Class: Operator

Inherits:
Expression show all
Defined in:
lib/eno.rb

Instance Attribute Summary

Attributes inherited from Expression

#members, #props

Instance Method Summary collapse

Methods inherited from Expression

#!=, #!@, #%, #&, #*, #+, #-, #/, #<, #<=, #==, #>, #>=, #as, #desc, #inner_join, #join, #not_null?, #null?, #over, quote, #|

Constructor Details

#initialize(*members, **props) ⇒ Operator

Returns a new instance of Operator.


127
128
129
130
131
132
133
134
135
136
137
# File 'lib/eno.rb', line 127

def initialize(*members, **props)
  op = members[0]
  if Operator === members[1] && op == members[1].op
    members = [op] + members[1].members[1..-1] + members[2..-1]
  end
  if Operator === members[2] && op == members[2].op
    members = members[0..1] + members[2].members[1..-1]
  end

  super(*members, **props)
end

Instance Method Details

#opObject


139
140
141
# File 'lib/eno.rb', line 139

def op
  @members[0]
end

#to_sqlObject


143
144
145
146
# File 'lib/eno.rb', line 143

def to_sql
  op = " #{@members[0]} "
  "(%s)" % @members[1..-1].map { |m| Expression.quote(m) }.join(op)
end