class Bricolage::SQLMetaDataParser
Constants
- DECLARATIONS
- KEYS_RE
Public Instance Methods
parse(source)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 247 def parse(source) parse_meta(read_meta(source)) end
parse_declarations(source)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 243 def parse_declarations(source) build_decls(parse(source)) end
Private Instance Methods
build_decls(map)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 260 def build_decls(map) decls = Declarations.new DECLARATIONS.each do |key, type| value = map.delete(key) decls.send "declare_#{type}", key, value if value end unless map.empty? raise ParameterError, "unknown SQL parameter declaration: #{map.keys.join(', ')}" end decls.freeze decls end
parse_meta(source)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 273 def parse_meta(source) return Hash.new if source.empty? YAML.load(source) || {} rescue YAML::SyntaxError => ex raise ParameterError, "SQL meta data syntax error: #{ex.message}" end
read_meta(source)
click to toggle source
# File lib/bricolage/sqlstatement.rb, line 282 def read_meta(source) lines = '' source.each_line do |line| case line when KEYS_RE lines.concat line.sub(/\A--/, '') when /\A--([\w\-]+):/ key = $1 raise ParameterError, "unknown SQL meta data: #{source}: #{key}" when /\A--/ # skip non-metadata comments lines.concat "\n" else break end end lines end