Class: YmlBuilder::Offers
- Inherits:
-
Object
- Object
- YmlBuilder::Offers
- Defined in:
- lib/yml_builder/offers.rb
Instance Method Summary collapse
-
#add(offer) ⇒ Object
Метод добавляет товар в прайс-лист с учетом выставленных в значении filter настроек.
-
#initialize(stats, categories) ⇒ Offers
constructor
A new instance of Offers.
-
#to_yml(ident = 4) ⇒ String
Метод формирует фрагмент YML файла каталога Яндекс.Маркет для всего списка товаров.
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 настроек.
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 файла каталога Яндекс.Маркет для всего списка товаров
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 |