Class: Commutator::Expressions::Statement

Inherits:
Object
  • Object
show all
Defined in:
lib/commutator/expressions/statement.rb

Overview

Statement simply takes a string and substitutes ‘#?’ for name placeholders and ‘:?’ for value placeholders.

Example: Statement.new(‘#? BETWEEN :? AND :?’, names: [‘ts’], values: [100, 200])

produces…

“ts BETWEEN :VALUE_f899139df5e1059396431415e770c6dd AND :VALUE_3644a684f98ea8fe223c713b77189a77” (Note: ts was not replaced because it’s not a reserved word)

Another example: Statement.new(‘attribute_exists(#?)’, names: [‘count’]).to_s

produces…

“attribute_exists(#NAME_d61a1061060c9e9691027c42d6766b90)”

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(exp, names: [], values: []) ⇒ Statement

Returns a new instance of Statement.



23
24
25
26
27
# File 'lib/commutator/expressions/statement.rb', line 23

def initialize(exp, names: [], values: [])
  @exp = exp
  @names = names
  @values = values
end

Instance Attribute Details

#expObject

Returns the value of attribute exp.



21
22
23
# File 'lib/commutator/expressions/statement.rb', line 21

def exp
  @exp
end

#namesObject

Returns the value of attribute names.



21
22
23
# File 'lib/commutator/expressions/statement.rb', line 21

def names
  @names
end

#valuesObject

Returns the value of attribute values.



21
22
23
# File 'lib/commutator/expressions/statement.rb', line 21

def values
  @values
end

Instance Method Details

#to_sObject



29
30
31
32
33
34
35
# File 'lib/commutator/expressions/statement.rb', line 29

def to_s
  exp
    .gsub('#?')
    .each_with_index { |_v, i| Util::Placeholders.name(names[i]) }
    .gsub(':?')
    .each_with_index { |_v, i| Util::Placeholders.value(values[i]) }
end