Class: SQLTree::Node::Expression::EscapedValue

Inherits:
Value
  • Object
show all
Defined in:
lib/active_record/turntable/sql_tree_patch.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value, escape = nil) ⇒ EscapedValue

Returns a new instance of EscapedValue.



264
265
266
267
# File 'lib/active_record/turntable/sql_tree_patch.rb', line 264

def initialize(value, escape = nil)
  @value = value
  @escape = escape
end

Class Method Details

.parse(tokens) ⇒ Object



284
285
286
287
288
289
290
291
292
# File 'lib/active_record/turntable/sql_tree_patch.rb', line 284

def self.parse(tokens)
  escape = tokens.next
  case tokens.next
  when SQLTree::Token::String
    SQLTree::Node::Expression::EscapedValue.new(tokens.current.literal, escape.literal)
  else
    raise SQLTree::Parser::UnexpectedToken.new(tokens.current, :literal)
  end
end

Instance Method Details

#escape_stringObject



280
281
282
# File 'lib/active_record/turntable/sql_tree_patch.rb', line 280

def escape_string
  @escape.to_s
end

#to_sql(options = {}) ⇒ Object



269
270
271
272
273
274
275
276
277
278
# File 'lib/active_record/turntable/sql_tree_patch.rb', line 269

def to_sql(options = {})
  case value
  when nil;            'NULL'
  when String;         "#{escape_string}#{quote_str(@value)}"
  when Numeric;        @value.to_s
  when Date;           @value.strftime("'%Y-%m-%d'")
  when DateTime, Time; @value.strftime("'%Y-%m-%d %H:%M:%S'")
  else raise "Don't know how te represent this value in SQL!"
  end
end