Class: Sequel::SQL::Expression
Overview
Base class for all SQL expression objects.
Direct Known Subclasses
AliasedExpression, ColumnAll, ComplexExpression, GenericExpression, JoinClause, OrderedExpression, Window
Class Method Summary collapse
-
.attr_reader(*args) ⇒ Object
Expression objects are assumed to be value objects, where their attribute values can’t change after assignment.
-
.comparison_attrs ⇒ Object
All attributes used for equality and hash methods.
Instance Method Summary collapse
-
#==(other) ⇒ Object
Alias of
eql?
. -
#eql?(other) ⇒ Boolean
Returns true if the receiver is the same expression as the the
other
expression. -
#hash ⇒ Object
Make sure that the hash value is the same if the attributes are the same.
-
#inspect ⇒ Object
Show the class name and instance variables for the object, necessary for correct operation on ruby 1.9.2.
-
#lit ⇒ Object
Returns
self
, becauseSQL::Expression
already acts likeLiteralString
. -
#sql_literal(ds) ⇒ Object
Alias of
to_s
.
Class Method Details
.attr_reader(*args) ⇒ Object
Expression objects are assumed to be value objects, where their attribute values can’t change after assignment. In order to make it easy to define equality and hash methods, subclass instances assume that the only values that affect the results of such methods are the values of the object’s attributes.
68 69 70 71 |
# File 'lib/sequel/sql.rb', line 68 def self.attr_reader(*args) super comparison_attrs.concat args end |
.comparison_attrs ⇒ Object
All attributes used for equality and hash methods.
74 75 76 |
# File 'lib/sequel/sql.rb', line 74 def self.comparison_attrs @comparison_attrs ||= self == Expression ? [] : superclass.comparison_attrs.clone end |
Instance Method Details
#==(other) ⇒ Object
Alias of eql?
88 89 90 |
# File 'lib/sequel/sql.rb', line 88 def ==(other) eql?(other) end |
#eql?(other) ⇒ Boolean
Returns true if the receiver is the same expression as the the other
expression.
94 95 96 |
# File 'lib/sequel/sql.rb', line 94 def eql?(other) other.is_a?(self.class) && !self.class.comparison_attrs.find{|a| send(a) != other.send(a)} end |
#hash ⇒ Object
Make sure that the hash value is the same if the attributes are the same.
99 100 101 |
# File 'lib/sequel/sql.rb', line 99 def hash ([self.class] + self.class.comparison_attrs.map{|x| send(x)}).hash end |
#inspect ⇒ Object
Show the class name and instance variables for the object, necessary for correct operation on ruby 1.9.2.
105 106 107 |
# File 'lib/sequel/sql.rb', line 105 def inspect "#<#{self.class} #{instance_variables.map{|iv| "#{iv}=>#{instance_variable_get(iv).inspect}"}.join(', ')}>" end |
#lit ⇒ Object
Returns self
, because SQL::Expression
already acts like LiteralString
.
110 111 112 |
# File 'lib/sequel/sql.rb', line 110 def lit self end |
#sql_literal(ds) ⇒ Object
Alias of to_s
115 116 117 |
# File 'lib/sequel/sql.rb', line 115 def sql_literal(ds) to_s(ds) end |