Class: Edi::Amazon::JsonListingGenerator::Attributes::AttributeFactory

Inherits:
Object
  • Object
show all
Defined in:
app/services/edi/amazon/json_listing_generator/attributes/attribute_factory.rb

Class Method Summary collapse

Class Method Details

.attributes_availableObject



19
20
21
22
23
24
25
26
27
28
29
# File 'app/services/edi/amazon/json_listing_generator/attributes/attribute_factory.rb', line 19

def self.attributes_available
  Edi::Amazon::JsonListingGenerator::Attributes.constants.filter_map do |const|
    const = const_get("Edi::Amazon::JsonListingGenerator::Attributes::#{const}")
    next unless const.is_a?(Class)

    attribute_name = const.to_s.demodulize.underscore
    next if attribute_name == 'attribute_factory' || attribute_name.start_with?('base_')

    attribute_name
  end.sort
end

.build(attribute_name, catalog_item:, variation:, language_tag:, enum_mapper: nil, marketplace_id: nil, fba: nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'app/services/edi/amazon/json_listing_generator/attributes/attribute_factory.rb', line 6

def self.build(attribute_name, catalog_item:, variation:, language_tag:, enum_mapper: nil, marketplace_id: nil, fba: nil)
  # Note, use camelize here to preserve plural in names, don't use classify which will singularize
  attribute_class = "Edi::Amazon::JsonListingGenerator::Attributes::#{attribute_name.to_s.camelize}".constantize
  attribute_class.new(
    catalog_item:,
    variation:,
    language_tag:,
    enum_mapper:,
    marketplace_id:,
    fba:
  )
end