Class: SQLCompiler

Inherits:
Object
  • Object
show all
Defined in:
lib/sql_compiler.rb

Defined Under Namespace

Classes: CompilerResult

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ SQLCompiler



6
7
8
9
# File 'lib/sql_compiler.rb', line 6

def initialize(options)
  @body = options[:body]
  @parameter_reporters = options[:parameters]
end

Instance Attribute Details

#parametersObject

Returns the value of attribute parameters.



2
3
4
# File 'lib/sql_compiler.rb', line 2

def parameters
  @parameters
end

Instance Method Details

#compile(substitution_values = {}) ⇒ Object



11
12
13
14
15
# File 'lib/sql_compiler.rb', line 11

def compile(substitution_values = {})
  compile!(substitution_values)
rescue CompilableParameter::CompilerArgumentError => e
  CompilerResult.new(nil, nil, e)
end

#compile!(substitution_values = {}) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/sql_compiler.rb', line 17

def compile!(substitution_values = {})
  effective_values = get_effective_values(substitution_values)
  body = effective_values.inject(@body) do |body, (name, value)|
    body.gsub(/{\s*#{name}\s*}/) { value }
  end
  CompilerResult.new(body, effective_values)
end