Sha256: fafce208074d4c8d26f2049d95787945c7828bbac3539a3bf558f20c7f6c56a8

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module Contentful
  module Management
    module Resource
      # Adds metadata logic for [Resource] classes
      module Metadata
        # Returns the metadata hash
        attr_reader :_metadata

        # @private
        def initialize(object = nil, *)
          super
          @_metadata = {}
          extract_metadata_from_object! object if object
        end

        # @private
        def inspect(info = nil)
          if _metadata.empty?
            super(info)
          else
            super("#{info} @_metadata=#{_metadata.inspect}")
          end
        end

        private

        def extract_metadata_from_object!(object)
          return unless object.key?('metadata')

          object['metadata'].each do |key, value|
            @_metadata[key.to_sym] = if key == 'tags'
                                       coerce_tags(value)
                                     else
                                       value
                                     end
          end
        end

        def coerce_tags(tags)
          tags.map { |tag| Contentful::Management::Link.new(tag) }
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
contentful-management-3.10.0 lib/contentful/management/resource/metadata.rb
contentful-management-3.9.0 lib/contentful/management/resource/metadata.rb