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