Class: YmlBuilder::Offers

Inherits:
Object
  • Object
show all
Defined in:
lib/yml_builder/offers.rb

Instance Method Summary collapse

Constructor Details

#initialize(stats, categories) ⇒ Offers

Returns a new instance of Offers.



7
8
9
10
11
# File 'lib/yml_builder/offers.rb', line 7

def initialize(stats, categories)
  @stats = stats
  @categories = categories
  init_class
end

Instance Method Details

#add(offer) ⇒ Object

Метод добавляет товар в прайс-лист с учетом выставленных в значении filter настроек.

Examples:

Примеры использования

price = YmlBuilder::Yml.new
price.offers.add(offer)

Parameters:



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/yml_builder/offers.rb', line 19

def add(offer)
  return false unless @categories.can_add?(offer.category_id)
  @offers[offer.id] = offer

  # Формируем статистику
  @stats.add(:total, 1)
  if offer.available
    @stats.add(:available, 1)
    @stats.add(:price, (offer.price || 0))
  end
  true
end

#to_yml(ident = 4) ⇒ String

Метод формирует фрагмент YML файла каталога Яндекс.Маркет для всего списка товаров

Parameters:

  • ident (Integer) (defaults to: 4)

    отступ от левого края в символах

Returns:

  • (String)

    фрагмент YML файла каталога Яндекс.Маркет



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/yml_builder/offers.rb', line 36

def to_yml(ident = 4)
  @offers = @offers.sort_by { |id, offer| id }

  out = Array.new
  out << "<offers>"
  @offers.each do |id, offer|
    out += offer.to_yml(2).split(/[\n\r]/)
  end
  out << "</offers>"

  out.map! { |line| ' '.rjust(ident, ' ') + line }
  out.join("\n")
end