Class: YmlBuilder::Categories
- Inherits:
-
Object
- Object
- YmlBuilder::Categories
- Defined in:
- lib/yml_builder/categories.rb
Instance Attribute Summary collapse
-
#filter ⇒ Object
Переменная содержит список id категорий, для которых необходимо формировать прайс-лист.
Instance Method Summary collapse
-
#add(opts = {}) ⇒ Boolean
Метод добавляет категорию Интернет-магазина в прайс-лист с учетом выставленных в значении filter настроек.
-
#can_add?(id) ⇒ Boolean
Метод проверяет необходимость добавления категории или товара в прайс-лист с учетом выставленных в значении filter настроек.
-
#has?(id) ⇒ Boolean
Метод возвращает true, если категория, передаваемая в качестве параметра, уже добавлена в прайс-лист.
-
#initialize(stats) ⇒ Categories
constructor
A new instance of Categories.
-
#to_yml(ident = 4) ⇒ String
Метод формирует фрагмент YML файла каталога Яндекс.Маркет, содержащий список категорий.
Constructor Details
#initialize(stats) ⇒ Categories
Returns a new instance of Categories.
13 14 15 16 |
# File 'lib/yml_builder/categories.rb', line 13 def initialize(stats) @stats = stats init_class end |
Instance Attribute Details
#filter ⇒ Object
Переменная содержит список id категорий, для которых необходимо формировать прайс-лист. Если переменная пуста, то включаются все категории
10 11 12 |
# File 'lib/yml_builder/categories.rb', line 10 def filter @filter end |
Instance Method Details
#add(opts = {}) ⇒ Boolean
Метод добавляет категорию Интернет-магазина в прайс-лист с учетом выставленных в значении filter настроек.
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/yml_builder/categories.rb', line 30 def add(opts = {}) return false unless can_add?(opts[:id]) allow = [:id, :parent_id, :name] raise "Ошибка: для добавления категории используйте ключи #{allow.inspect}" if (opts.keys - allow).count > 0 raise "Ошибка: не указан 'id' для добавления категории" if opts[:id].nil? raise "Ошибка: не указан 'name' для добавления категории" if opts[:name].nil? @params[opts[:id]] = { parent_id: opts[:parent_id], name: opts[:name] } @params = Hash[@params.sort_by { |id, data| id }] @stats.add(:categories, 1) true end |
#can_add?(id) ⇒ Boolean
Метод проверяет необходимость добавления категории или товара в прайс-лист с учетом выставленных в значении filter настроек.
48 49 50 |
# File 'lib/yml_builder/categories.rb', line 48 def can_add?(id) @filter.count == 0 ? true : @filter.include?(id) end |
#has?(id) ⇒ Boolean
Метод возвращает true, если категория, передаваемая в качестве параметра, уже добавлена в прайс-лист
93 94 95 |
# File 'lib/yml_builder/categories.rb', line 93 def has?(id) @params[id].nil? ? false : true end |
#to_yml(ident = 4) ⇒ String
Метод формирует фрагмент YML файла каталога Яндекс.Маркет, содержащий список категорий
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/yml_builder/categories.rb', line 69 def to_yml(ident = 4) out = Array.new out << '<categories>' @params.each do |id, value| if value[:parent_id].nil? out << " <category id=#{id.to_s.inspect}>#{::YmlBuilder::Common.encode_special_chars(value[:name])}</category>" else out << " <category id=#{id.to_s.inspect} parentId=#{value[:parent_id].to_s.inspect}>#{::YmlBuilder::Common.encode_special_chars(value[:name])}</category>" end end warn "Предупреждение: не указано ни одной категории в секции 'categories'" if out.count == 1 out << '</categories>' out.map! { |line| line = ' '.rjust(ident, ' ') + line } out.join("\n") end |