Class: YmlBuilder::Yml

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeYml

Returns a new instance of Yml.



33
34
35
36
37
38
39
40
# 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

Instance Attribute Details

#categoriesObject (readonly)

Ссылка на класс, описывающий категории (YmlBuilding::Categories)

Examples:

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

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


16
17
18
# File 'lib/yml_builder/yml.rb', line 16

def categories
  @categories
end

#currenciesObject (readonly)

Ссылка на класс, описывающий валюты (YmlBuilding::Currencies)

Examples:

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

price = YmlBuilder::Yml.new
price.currencies.rub = 1
price.currencies.usd = 55.04
price.currencies.eur = :cbrf


23
24
25
# File 'lib/yml_builder/yml.rb', line 23

def currencies
  @currencies
end

#local_delivery_costObject

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

Examples:

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

price = YmlBuilder::Yml.new
price.local_delivery_cost = 300


30
31
32
# File 'lib/yml_builder/yml.rb', line 30

def local_delivery_cost
  @local_delivery_cost
end

#offersObject (readonly)

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



25
26
27
# File 'lib/yml_builder/yml.rb', line 25

def offers
  @offers
end

#shopObject (readonly)

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

Examples:

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

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


10
11
12
# File 'lib/yml_builder/yml.rb', line 10

def shop
  @shop
end

Instance Method Details

#save(filename) ⇒ None

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

Examples:

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

price = YmlBuilder::Yml.new
price.save('price.yml')

Parameters:

  • filename (String)

    название файла для записи прайс-листа

Returns:

  • (None)

    нет



89
90
91
# File 'lib/yml_builder/yml.rb', line 89

def save(filename)
  File.open(filename, 'w:windows-1251') { |f| f.write(to_yml) }
end

#statsNone

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

Examples:

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

price = YmlBuilder::Yml.new
price.stats                    #=> { :categories => 0, :total => 2, :available => 1, :price => 300.9 }

Returns:

  • (None)

    нет



60
61
62
# File 'lib/yml_builder/yml.rb', line 60

def stats
  @stats.stats
end

#to_ymlString

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

Examples:

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

price = YmlBuilder::Yml.new
price.to_yml

Returns:

  • (String)

    строка с прайс-листом в формате utf-8



71
72
73
74
75
76
77
78
79
# 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