Sha256: 37636d0edd1c38f897545e91d09f83de43dba64455cf165767f6fa8f75efe910
Contents?: true
Size: 1.01 KB
Versions: 1
Compression:
Stored size: 1.01 KB
Contents
require 'tins/thread_local' module Tins module HashSymbolizeKeysRecursive extend Tins::ThreadLocal thread_local :seen def symbolize_keys_recursive(circular: nil) self.seen = {} _symbolize_keys_recursive(self, circular: circular) ensure self.seen = nil end def symbolize_keys_recursive!(circular: nil) replace symbolize_keys_recursive(circular: circular) end private def _symbolize_keys_recursive(object, circular: nil) case when seen[object.__id__] circular != nil and object = circular when Hash === object seen[object.__id__] = true result = {} object.each do |k, v| result[k.to_s.to_sym] = _symbolize_keys_recursive(v, circular: circular) end object.replace result when Array === object seen[object.__id__] = true object.map! do |v| _symbolize_keys_recursive(v, circular: circular) end end object end end end require 'tins/alias'
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tins-1.22.0 | lib/tins/hash_symbolize_keys_recursive.rb |