Class: PackAPI::Mapping::NormalizedAPIAttribute

Inherits:
Object
  • Object
show all
Defined in:
lib/pack_api/mapping/normalized_api_attribute.rb

Constant Summary collapse

PLURAL_IDS =
'_ids'
SINGULAR_ID =
'_id'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_attribute_names) ⇒ NormalizedAPIAttribute

Returns a new instance of NormalizedAPIAttribute.



10
11
12
# File 'lib/pack_api/mapping/normalized_api_attribute.rb', line 10

def initialize(api_attribute_names)
  @api_attribute_names = api_attribute_names
end

Instance Attribute Details

#api_attribute_namesObject (readonly)

Returns the value of attribute api_attribute_names.



8
9
10
# File 'lib/pack_api/mapping/normalized_api_attribute.rb', line 8

def api_attribute_names
  @api_attribute_names
end

Instance Method Details

#id_for_collection_association?(attribute_name) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/pack_api/mapping/normalized_api_attribute.rb', line 28

def id_for_collection_association?(attribute_name)
  api_attribute_names.exclude?(attribute_name) && attribute_name.to_s.end_with?(PLURAL_IDS) # && api_attribute_names.include?(it_without_id_suffix)
end

#id_for_resource_association?(attribute_name) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/pack_api/mapping/normalized_api_attribute.rb', line 36

def id_for_resource_association?(attribute_name)
  api_attribute_names.exclude?(attribute_name) && attribute_name.to_s.end_with?(SINGULAR_ID) # && api_attribute_names.include?(it_without_id_suffix)
end

#normalize(attribute_name) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/pack_api/mapping/normalized_api_attribute.rb', line 14

def normalize(attribute_name)
  if id_for_resource_association?(attribute_name)
    normalize_resource_association_reference(attribute_name)
  elsif id_for_collection_association?(attribute_name)
    normalize_collection_association_reference(attribute_name)
  else
    attribute_name
  end
end

#normalize_collection_association_reference(attribute_name) ⇒ Object



24
25
26
# File 'lib/pack_api/mapping/normalized_api_attribute.rb', line 24

def normalize_collection_association_reference(attribute_name)
  :"#{attribute_name.to_s.delete_suffix(PLURAL_IDS)}s"
end

#normalize_resource_association_reference(attribute_name) ⇒ Object



32
33
34
# File 'lib/pack_api/mapping/normalized_api_attribute.rb', line 32

def normalize_resource_association_reference(attribute_name)
  attribute_name.to_s.delete_suffix(SINGULAR_ID).to_sym
end