module Contentful::Management::Resource::Fields
Adds fields logic for [Resource] classes
Public Class Methods
included(base)
click to toggle source
Create accessors for content type, asset, entry objects.
# File lib/contentful/management/resource/fields.rb, line 35 def self.included(base) base.fields_coercions.keys.each do |name| accessor_name = Contentful::Management::Support.snakify(name) base.send :define_method, accessor_name do fields[name.to_sym] end base.send :define_method, "#{accessor_name}_with_locales" do fields_for_query[name.to_sym] end base.send :define_method, "#{accessor_name}=" do |value| fields[name.to_sym] = value end base.send :define_method, "#{accessor_name}_with_locales=" do |values| values.each do |locale, value| @fields[locale] = {} unless @fields[locale] @fields[locale][name.to_sym] = value end end end end
new(object = nil, *)
click to toggle source
@private
Calls superclass method
# File lib/contentful/management/resource/fields.rb, line 19 def initialize(object = nil, *) super @fields = {} extract_fields_from_object! object if object end
Public Instance Methods
fields(wanted_locale = nil)
click to toggle source
Returns the fields hash for the specified locale
@param [String] wanted_locale
@return [Hash] localized fields
# File lib/contentful/management/resource/fields.rb, line 13 def fields(wanted_locale = nil) wanted_locale = internal_resource_locale if wanted_locale.nil? @fields.fetch(wanted_locale.to_s, {}) end
inspect(info = nil)
click to toggle source
@private
Calls superclass method
# File lib/contentful/management/resource/fields.rb, line 26 def inspect(info = nil) if fields.empty? super(info) else super("#{info} @fields=#{fields.inspect}") end end
Private Instance Methods
extract_fields_from_object!(object)
click to toggle source
# File lib/contentful/management/resource/fields.rb, line 58 def extract_fields_from_object!(object) if nested_locale_fields? && !object['fields'].nil? object['fields'].each do |field_name, nested_child_object| nested_child_object.each do |object_locale, real_child_object| @fields[object_locale] ||= {} @fields[object_locale].merge! extract_from_object( { field_name => real_child_object }, :fields ) end end else @fields[locale || default_locale] = extract_from_object object['fields'], :fields end end