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.



216
217
218
219
# File 'lib/active_record/turntable/sql_tree_patch.rb', line 216

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

Class Method Details

.parse(tokens) ⇒ Object



236
237
238
239
240
241
242
243
244
# File 'lib/active_record/turntable/sql_tree_patch.rb', line 236

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



232
233
234
# File 'lib/active_record/turntable/sql_tree_patch.rb', line 232

def escape_string
  @escape.to_s
end

#to_sql(options = {}) ⇒ Object



221
222
223
224
225
226
227
228
229
230
# File 'lib/active_record/turntable/sql_tree_patch.rb', line 221

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