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

Version Path
shopify-cli-2.10.1 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.10.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.9.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.8.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.7.4 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.7.3 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.7.2 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.7.1 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.7.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.6.6 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.6.5 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.6.4 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.6.3 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.6.2 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.6.1 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.6.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.5.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.4.0 lib/project_types/extension/models/server_config/base.rb