class YmlBuilder::Shop

Public Class Methods

new() click to toggle source
# File lib/yml_builder/shop.rb, line 4
def initialize
  init_class
end

Public Instance Methods

to_yml() click to toggle source

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

@return [String] фрагмент YML файла каталога Яндекс.Маркет

# File lib/yml_builder/shop.rb, line 12
def to_yml
  out = Array.new
  out << '  <shop>'

  @params[:m].each do |key, value|
    raise "Ошибка секции 'company': не заполнено значение для обязательного ключа #{key.to_s.inspect}" if value == ''
    out << "    <#{key}>#{::YmlBuilder::Common.encode_special_chars(value)}</#{key}>"
  end

  @params[:o].each do |key, value|
    unless value.nil?
      out << "    <#{key}>#{::YmlBuilder::Common.encode_special_chars(value)}</#{key}>"
    end
  end

  out << '    {replace_currencies}'
  out << '    {replace_categories}'
  out << '    {replace_local_delivery_cost}'
  out << '    {replace_offers}'
  out << '  </shop>'
  out.join("\n")
end

Private Instance Methods

init_class() click to toggle source
# File lib/yml_builder/shop.rb, line 39
def init_class
  @params = Hash.new

  @params[:m]           = Hash.new
  @params[:m][:name]    = ''
  @params[:m][:company] = ''
  @params[:m][:url]     = ''

  @params[:o]            = Hash.new
  @params[:o][:phone]    = nil
  @params[:o][:platform] = nil
  @params[:o][:version]  = nil
  @params[:o][:agency]   = nil
  @params[:o][:email]    = nil
  @params[:o][:adult]    = nil
  @params[:o][:cpa]      = nil
end
method_missing(method_sym, *arguments, &block) click to toggle source
Calls superclass method
# File lib/yml_builder/shop.rb, line 58
def method_missing(method_sym, *arguments, &block)
  if @params[:m].include?(method_sym.to_s.gsub(/=$/, '').to_sym)
    processing_method(:m, method_sym, arguments.first)
  elsif @params[:o].include?(method_sym.to_s.gsub(/=$/, '').to_sym)
    processing_method(:o, method_sym, arguments.first)
  else
    super
  end
end
processing_method(part, method_sym, value) click to toggle source
# File lib/yml_builder/shop.rb, line 69
def processing_method(part, method_sym, value)
  if method_sym.to_s.match(/=$/)
    key = method_sym.to_s.gsub(/=$/, '')
    warn "Предупреждение: название магазина не должно быть больше 20 символов" if key == 'name' && value.length > 20
    @params[part][key.to_sym] = value
  else
    @params[part][method_sym.to_s.gsub(/=$/, '').to_sym]
  end
end