class YmlBuilder::Yml

Attributes

categories[R]

Ссылка на класс, описывающий категории (YmlBuilding::Categories) @example Примеры использования

price = YmlBuilder::Yml.new
price.categories.add(id: 1, name: "Игрушки")
price.categories.add(id: 4, name: "Игрушки для девочек", parent_id: 1)
currencies[R]

Ссылка на класс, описывающий валюты ({YmlBuilding::Currencies}) @example Примеры использования

price = YmlBuilder::Yml.new
price.currencies.rub = 1
price.currencies.usd = 55.04
price.currencies.eur = :cbrf
local_delivery_cost[R]

Переменая, хранящая стоимость доставки в локации расположения Интернет-магазина @example Примеры использования

price = YmlBuilder::Yml.new
price.local_delivery_cost = 300
offers[R]

Ссылка на класс, управляющий товарами (офферами) ({YmlBuilding::Offers})

shop[R]

Ссылка на класс, описывающий контакты Интернет-магазина ({YmlBuilding::Shop}) @example Примеры использования

price = YmlBuilder::Yml.new
price.shop.phone = '+7 (123) 456-7890'

Public Class Methods

new() click to toggle source
# File lib/yml_builder/yml.rb, line 33
def initialize
  @stats               = ::YmlBuilder::Stats.new
  @shop                = ::YmlBuilder::Shop.new
  @currencies          = ::YmlBuilder::Currencies.new
  @categories          = ::YmlBuilder::Categories.new(@stats)
  @offers              = ::YmlBuilder::Offers.new(@stats, @categories)
  @local_delivery_cost = nil
end

Public Instance Methods

local_delivery_cost=(value) click to toggle source

Метод устанавливает стоимость доставки в месте локации магазина. Например, если магазин находится в Москве, то при указанни данной стоимости, она будет показана покупателям в этом же районе.

@param [Float] value стоимость доставки в месте локации магазина @return [None] нет

# File lib/yml_builder/yml.rb, line 48
def local_delivery_cost=(value)
  @local_delivery_cost = value
end
save(filename) click to toggle source

Метод для записи прайслиста в файл. Запись осущесствится в кодировке windows-1251

@param [String] filename название файла для записи прайс-листа @return [None] нет @example Примеры использования

price = YmlBuilder::Yml.new
price.save('price.yml')
# File lib/yml_builder/yml.rb, line 89
def save(filename)
  File.open(filename, 'w:windows-1251') { |f| f.write(to_yml) }
end
stats() click to toggle source

Метод возвращает статистику по результатам генерации прайс-листа: всего товаров, товаров в наличии, стоимость товаров в наличии (без учета количества)

@return [None] нет @example Примеры использования

price = YmlBuilder::Yml.new
price.stats                    #=> { :categories => 0, :total => 2, :available => 1, :price => 300.9 }
# File lib/yml_builder/yml.rb, line 60
def stats
  @stats.stats
end
to_yml() click to toggle source

Метод возвращает текстовую строку с прайс-листом в формате Яндекс.Маркет

@return [String] строка с прайс-листом в формате utf-8 @example Примеры использования

price = YmlBuilder::Yml.new
price.to_yml
# File lib/yml_builder/yml.rb, line 71
def to_yml
  out = @shop.to_yml
  out.gsub!(/^\s{0,100}\{replace\_currencies\}/, @currencies.to_yml)
  out.gsub!(/^\s{0,100}\{replace\_categories\}/, @categories.to_yml)
  out.gsub!(/^\s{0,100}\{replace\_local\_delivery\_cost\}[\n\r]/, lds_to_yml)
  out.gsub!(/^\s{0,100}\{replace\_offers\}/, @offers.to_yml)

  add_header_footer(out)
end

Private Instance Methods

lds_to_yml(ident = 4) click to toggle source
# File lib/yml_builder/yml.rb, line 108
def lds_to_yml(ident = 4)
  return "" if @local_delivery_cost.nil?
  ' '.rjust(ident, ' ') + "<local_delivery_cost>#{@local_delivery_cost}</local_delivery_cost>\n"
end