module Cloudflair::Entity::ClassMethods

Public Class Methods

extended(other_klass) click to toggle source
# File lib/cloudflair/entity.rb, line 14
def self.extended(other_klass)
  @other_klass = other_klass
end

Public Instance Methods

array_object_fields(*fields_to_class_map) click to toggle source

allowed values: array_object_fields :field_a, :field_b, :field_c, 'fieldname_as_string' # next is ame as previous array_object_fields field_a: nil, field_b: nil, field_c: nil, 'fieldname_as_string': nil # next defines the types of the objects array_object_fields field_a: Klass, field_b: proc { |data| Klass.new data }, field_c: nil, 'fieldname_as_string'

# File lib/cloudflair/entity.rb, line 64
def array_object_fields(*fields_to_class_map)
  return @array_object_fields if @array_object_fields

  if fields_to_class_map.nil? || fields_to_class_map.empty?
    @array_object_fields = {}
  else
    fields_map = turn_all_items_into_a_single_hash(fields_to_class_map)
    @array_object_fields = fields_map
  end
end
deletable(deletable = false) click to toggle source
# File lib/cloudflair/entity.rb, line 31
def deletable(deletable = false)
  return @deletable unless @deletable.nil?

  @deletable = deletable
end
object_fields(*fields) click to toggle source
# File lib/cloudflair/entity.rb, line 45
def object_fields(*fields)
  return @object_fields if @object_fields

  @object_fields =
    if fields.nil? || fields.empty?
      []
    else
      fields.map(&:to_s)
    end
end
patchable_fields(*fields) click to toggle source
# File lib/cloudflair/entity.rb, line 18
def patchable_fields(*fields)
  return @patchable_fields if @patchable_fields

  @patchable_fields =
    if fields.nil?
      []
    elsif fields.is_a?(Array)
      fields.map(&:to_s)
    else
      [fields.to_s]
    end
end
path(path = nil) click to toggle source
# File lib/cloudflair/entity.rb, line 37
def path(path = nil)
  return @path if @path

  raise ArgumentError, 'path is not defined' if path.nil?

  @path = path
end
turn_all_items_into_a_single_hash(fields_to_class_map) click to toggle source
# File lib/cloudflair/entity.rb, line 75
def turn_all_items_into_a_single_hash(fields_to_class_map)
  {}.tap do |fields_map|
    fields_to_class_map.each do |field_definition|
      if field_definition.is_a?(Hash)
        fields_to_class_map[0].each do |field, klass_or_proc|
          fields_map[field.to_s] = klass_or_proc
        end
      else
        fields_map[field_definition.to_s] = nil
      end
    end
  end
end