class Bricolage::Declarations
Variable
declarations in parameter files
Public Class Methods
new(vars = {})
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 116 def initialize(vars = {}) @vars = {} vars.each do |name, default_value| declare name, default_value end end
parse(source)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 112 def Declarations.parse(source) SQLMetaDataParser.new.parse_declarations(source) end
Public Instance Methods
[](name)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 131 def [](name) @vars[name.to_s] or raise ParameterError, "undeclared variable: #{name}" end
declare(name, value)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 154 def declare(name, value) raise ParameterError, "duplicated variable declaration: #{name}" if declared?(name) varname = name.to_s.tr('-', '_') @vars[varname] = Declaration.new(varname, value) end
declare_map(label, value)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 188 def declare_map(label, value) case value when String declare value, nil when Array value.each do |name| declare name, nil end when Hash value.each do |name, val| declare name, val end else raise ParameterError, "'#{label}' entry value must be a string, a list or a map but a #{value.class}" end end
declare_none(label, value)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 205 def declare_none(label, value) # ignore end
declare_table(name, value)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 160 def declare_table(name, value) case value when String declare name, value when nil declare name, name else raise ParameterError, "bad default value for table variable: #{value.class} (#{value.inspect})" end end
declare_tables(label, value)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 171 def declare_tables(label, value) case value when String declare value, value when Array value.each do |name| declare name, name end when Hash value.each do |name, val| declare name, val end else raise ParameterError, "'#{label}' entry value must be a string, a list or a map but a #{value.class}" end end
declared?(name)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 127 def declared?(name) @vars.key?(name.to_s) end
default_variables()
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 139 def default_variables Variables.define {|vars| each do |decl| if decl.have_default_value? vars[decl.name.to_s] = decl.default_value end end } end
each(&block)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 135 def each(&block) @vars.each_value(&block) end
freeze()
click to toggle source
Calls superclass method
# File lib/bricolage/sqlstatement.rb, line 149 def freeze @vars.freeze super end
inspect()
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 123 def inspect "\#<#{self.class} #{@vars.inspect}>" end