class SQLCompiler
Constants
- CompilerResult
Attributes
parameters[RW]
Public Class Methods
new(options)
click to toggle source
# File lib/sql_compiler.rb, line 6 def initialize(options) @body = options[:body] @parameter_reporters = options[:parameters] end
Public Instance Methods
compile(substitution_values = {})
click to toggle source
# 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 = {})
click to toggle source
# 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
Protected Instance Methods
get_effective_values(substitution_values)
click to toggle source
# File lib/sql_compiler.rb, line 27 def get_effective_values(substitution_values) substitution_values = substitution_values.stringify_keys @parameter_reporters.each_with_object({}) do |parameter_reporter, hash| hash[parameter_reporter.name] = parameter_reporter.compile(substitution_values[parameter_reporter.name]) end end