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.36.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.35.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.34.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.33.1 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.33.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.32.1 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.32.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.31.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.30.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.29.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.28.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.27.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.26.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.25.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.24.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.23.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.22.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.21.0 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.20.1 lib/project_types/extension/models/server_config/base.rb
shopify-cli-2.20.0 lib/project_types/extension/models/server_config/base.rb