Class | Sequel::SQL::Expression
In: | lib/sequel/sql.rb lib/sequel/extensions/eval_inspect.rb
Parent: | Object

Base class for all SQL expression objects.

### Methods

== attr_reader comparison_attrs eql? hash inspect inspect lit sql_literal

### Public Class methods

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.

[Source]

        # File lib/sequel/sql.rb, line 68
    68:       def self.attr_reader(*args)
    69:         super
    70:         comparison_attrs.concat(args)
    71:       end

comparison_attrs()

All attributes used for equality and hash methods.

[Source]

        # File lib/sequel/sql.rb, line 74
    74:       def self.comparison_attrs
    75:         @comparison_attrs ||= self == Expression ? [] : superclass.comparison_attrs.clone
    76:       end

### Public Instance methods

==(other)

Alias of `eql?`

[Source]

        # File lib/sequel/sql.rb, line 88
    88:       def ==(other)
    89:         eql?(other)
    90:       end

eql?(other)

Returns true if the receiver is the same expression as the the `other` expression.

[Source]

        # File lib/sequel/sql.rb, line 94
    94:       def eql?(other)
    95:         other.is_a?(self.class) && !self.class.comparison_attrs.find{|a| send(a) != other.send(a)}
    96:       end

hash()

Make sure that the hash value is the same if the attributes are the same.

[Source]

         # File lib/sequel/sql.rb, line 99
     99:       def hash
    100:         ([self.class] + self.class.comparison_attrs.map{|x| send(x)}).hash
    101:       end

inspect()

Show the class name and instance variables for the object, necessary for correct operation on ruby 1.9.2.

[Source]

         # File lib/sequel/sql.rb, line 105
    105:       def inspect
    106:         "#<#{self.class} #{instance_variables.map{|iv| "#{iv}=>#{instance_variable_get(iv).inspect}"}.join(', ')}>"
    107:       end

inspect()

Attempt to produce a string suitable for eval, such that:

      eval(obj.inspect) == obj

[Source]

        # File lib/sequel/extensions/eval_inspect.rb, line 60
    60:       def inspect
    61:         # Assume by default that the object can be recreated by calling
    62:         # self.class.new with any attr_reader values defined on the class,
    63:         # in the order they were defined.
    64:         klass = self.class
    65:         args = inspect_args.map do |arg|
    66:           if arg.is_a?(String) && arg =~ /\A\*/
    67:             # Special case string arguments starting with *, indicating that
    68:             # they should return an array to be splatted as the remaining arguments
    69:             send(arg.sub('*', '')).map{|a| Sequel.eval_inspect(a)}.join(', ')
    70:           else
    71:             Sequel.eval_inspect(send(arg))
    72:           end
    73:         end
    74:         "#{klass}.new(#{args.join(', ')})"
    75:       end

lit()

Returns `self`, because `SQL::Expression` already acts like `LiteralString`.

[Source]

         # File lib/sequel/sql.rb, line 110
    110:       def lit
    111:         self
    112:       end

sql_literal(ds)

Alias of `to_s`

[Source]

         # File lib/sequel/sql.rb, line 115
    115:       def sql_literal(ds)
    116:         to_s(ds)
    117:       end

[Validate]