class RecSym::Symbolizer

Attributes

known[R]

Public Class Methods

new() click to toggle source
# File lib/recsym.rb, line 13
def initialize
  @known = {}
end

Public Instance Methods

symbolized(thing) click to toggle source
# File lib/recsym.rb, line 17
def symbolized(thing)
  k = thing.object_id
  return known[k] if known.key? k

  if thing.is_a? Hash
    retval = {}
    known[k] = retval

    thing.each do |k, v|
      key   = (k.respond_to? :to_sym) ? k.to_sym : k
      value = symbolized(v)
      retval[key] = value
    end

  elsif thing.is_a? Array
    retval = []
    known[k] = retval

    thing.each do |x|
      retval.push symbolized(x)
    end

  else
    known[k] = thing
  end

  known[k]
end