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)
-
+ (Object) attr_reader(*args)
Expression objects are assumed to be value objects, where their attribute values can't change after assignment.
-
+ (Object) comparison_attrs
All attributes used for equality and hash methods.
-
+ (Object) to_s_method(meth, args = :self)
Create a to_s instance method that takes a dataset, and calls the method provided on the dataset with args as the argument (self by default).
Instance Method Summary (collapse)
-
- (Object) ==(other)
Alias of eql?.
-
- (Boolean) eql?(other)
Returns true if the receiver is the same expression as the the other expression.
-
- (Object) hash
Make sure that the hash value is the same if the attributes are the same.
-
- (Object) inspect
Show the class name and instance variables for the object, necessary for correct operation on ruby 1.9.2.
-
- (Object) lit
Returns self, because SQL::Expression already acts like LiteralString.
-
- (Object) sql_literal(ds)
Alias of to_s.
Class Method Details
+ (Object) attr_reader(*args)
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 |
+ (Object) comparison_attrs
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 |
+ (Object) to_s_method(meth, args = :self)
Create a to_s instance method that takes a dataset, and calls the method provided on the dataset with args as the argument (self by default). Used to DRY up some code.
81 82 83 84 |
# File 'lib/sequel/sql.rb', line 81 def self.to_s_method(meth, args=:self) # :nodoc: class_eval("def to_s(ds) ds.#{meth}(#{args}) end", __FILE__, __LINE__) class_eval("def to_s_append(ds, sql) ds.#{meth}_append(sql, #{args}) end", __FILE__, __LINE__) end |
Instance Method Details
- (Object) ==(other)
Alias of eql?
88 89 90 |
# File 'lib/sequel/sql.rb', line 88 def ==(other) eql?(other) end |
- (Boolean) eql?(other)
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 |
- (Object) hash
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 |
- (Object) inspect
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 |
- (Object) lit
Returns self, because SQL::Expression already acts like LiteralString.
110 111 112 |
# File 'lib/sequel/sql.rb', line 110 def lit self end |
- (Object) sql_literal(ds)
Alias of to_s
115 116 117 |
# File 'lib/sequel/sql.rb', line 115 def sql_literal(ds) to_s(ds) end |