Module: Cloudflair::Entity::ClassMethods

Defined in:
lib/cloudflair/entity.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(other_klass) ⇒ Object



12
13
14
# File 'lib/cloudflair/entity.rb', line 12

def self.extended(other_klass)
  @other_klass = other_klass
end

Instance Method Details

#array_object_fields(*fields_to_class_map) ⇒ Object

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'



60
61
62
63
64
65
66
67
68
69
# File 'lib/cloudflair/entity.rb', line 60

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) ⇒ Object



28
29
30
31
32
# File 'lib/cloudflair/entity.rb', line 28

def deletable(deletable = false)
  return @deletable unless @deletable.nil?

  @deletable = deletable
end

#object_fields(*fields) ⇒ Object



42
43
44
45
46
47
48
49
50
# File 'lib/cloudflair/entity.rb', line 42

def object_fields(*fields)
  return @object_fields if @object_fields

  if fields.nil? || fields.empty?
    @object_fields = []
  else
    @object_fields = fields.map(&:to_s)
  end
end

#patchable_fields(*fields) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/cloudflair/entity.rb', line 16

def patchable_fields(*fields)
  return @patchable_fields if @patchable_fields

  if fields.nil?
    @patchable_fields = []
  elsif fields.is_a?(Array)
    @patchable_fields = fields.map(&:to_s)
  else
    @patchable_fields = [fields.to_s]
  end
end

#path(path = nil) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/cloudflair/entity.rb', line 34

def path(path = nil)
  return @path if @path

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

  @path = path
end

#turn_all_items_into_a_single_hash(fields_to_class_map) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/cloudflair/entity.rb', line 71

def turn_all_items_into_a_single_hash(fields_to_class_map)
  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
  fields_map
end