Sha256: 290d95a4a6d04f865c9ed8cbba078ee4d70a6a37b16aeb73c51312c8faeef9c2
Contents?: true
Size: 861 Bytes
Versions: 58
Compression:
Stored size: 861 Bytes
Contents
# frozen_string_literal: true module Extension module Models module ServerConfig class Base def to_h to_hash end def to_hash is_hashable = ->(obj) { obj.respond_to?(:to_hash) } is_collection_of_hashables = ->(obj) { obj.is_a?(Enumerable) && obj.all?(&is_hashable) } self.class.properties.each.reduce({}) do |data, (_, property)| data.merge(property.name.to_s => send(property.reader).yield_self do |value| case value when is_collection_of_hashables value.map { |element| element.to_hash.transform_keys(&:to_s) } when is_hashable value.to_hash.transform_keys(&:to_s) else value end end) end end end end end end
Version data entries
58 entries across 58 versions & 1 rubygems