class OracleSqlParser::Ast::Hash

Public Class Methods

[](value) click to toggle source
# File lib/oracle-sql-parser/ast/hash.rb, line 46
def self.[](value)
  self.new(value)
end
new(value = {}) click to toggle source
# File lib/oracle-sql-parser/ast/hash.rb, line 8
def initialize(value = {})
  raise "only ::Hash instance #{value.inspect}" unless value.instance_of? ::Hash
  @ast = value
end

Public Instance Methods

[]=(name, value) click to toggle source
# File lib/oracle-sql-parser/ast/hash.rb, line 50
def []=(name, value)
  @ast[name] = value
end
inspect() click to toggle source
# File lib/oracle-sql-parser/ast/hash.rb, line 30
def inspect
  "#<#{self.class.name}\n" +
  @ast.map{|k,v| "#{k.inspect} => #{v.inspect}"}.join(",\n").gsub(/^/, '  ') +
  "}>\n"
end
map_ast!(&block) click to toggle source
# File lib/oracle-sql-parser/ast/hash.rb, line 19
def map_ast!(&block)
  mapped = @ast.class.new
  @ast.each do |k, v|
    if v.is_a? OracleSqlParser::Ast::Base
      v.map_ast!(&block)
    end
    mapped[k] = block.call(v)
  end
  @ast = mapped
end
method_missing(name, *args) click to toggle source
# File lib/oracle-sql-parser/ast/hash.rb, line 54
def method_missing(name, *args)
  return @ast.send(:[], name) if @ast.has_key? name
  raise "no method:#{name}, #{@ast.class} in #{self.class}"
end
remove_nil_values!() click to toggle source
# File lib/oracle-sql-parser/ast/hash.rb, line 13
def remove_nil_values!
  @ast.delete_if{|k, v| v.nil?}
  @ast.each {|k, v| v.remove_nil_values! if v.respond_to? :remove_nil_values!}
  self
end
to_sql(options = {:separator => ' '}) click to toggle source
# File lib/oracle-sql-parser/ast/hash.rb, line 36
def to_sql(options = {:separator => ' '})
  @ast.map do |k,v|
    if v.respond_to? :to_sql
      v.to_sql
    else
      v.to_s
    end
  end.compact.join(options[:separator])
end