class YmlBuilder::Currencies
Public Class Methods
new()
click to toggle source
# File lib/yml_builder/currencies.rb, line 4 def initialize init_class end
Public Instance Methods
to_yml(ident = 4)
click to toggle source
Метод формирует фрагмент YML файла каталога Яндекс.Маркет, содержащий список валют
@param [Integer] ident отступ от левого края в символах @return [String] фрагмент YML файла каталога Яндекс.Маркет
# File lib/yml_builder/currencies.rb, line 13 def to_yml(ident = 4) out = Array.new out << '<currencies>' @params.each do |key, value| out << " <currency id=#{key.to_s.upcase.inspect} rate=#{value.to_s.upcase.inspect}/>" unless value.nil? end warn "Предупреждение: не указано ни одной валюты в секции 'currencies'" if out.count == 1 out << '</currencies>' out.map! { |line| line = ' '.rjust(ident, ' ') + line } out.join("\n") end
Private Instance Methods
init_class()
click to toggle source
# File lib/yml_builder/currencies.rb, line 54 def init_class @params = Hash.new @params[:rur] = nil @params[:rub] = nil @params[:usd] = nil @params[:eur] = nil @params[:uah] = nil @params[:kzt] = nil end
method_missing(method_sym, *arguments, &block)
click to toggle source
Calls superclass method
# File lib/yml_builder/currencies.rb, line 66 def method_missing(method_sym, *arguments, &block) if @params.include?(method_sym.to_s.gsub(/=$/, '').to_sym) processing_method(method_sym, arguments.first) else super end end
processing_method(method_sym, value)
click to toggle source
# File lib/yml_builder/currencies.rb, line 41 def processing_method(method_sym, value) if method_sym.to_s.match(/=$/) key = method_sym.to_s.gsub(/=$/, '') allow = [:cbrf, :nbu, :nbk, :cb] valid?(key.to_s, allow, value) @params[key.to_sym] = value else @params[method_sym.to_s.gsub(/=$/, '').to_sym] end end
valid?(method_sym, allow, value)
click to toggle source
# File lib/yml_builder/currencies.rb, line 33 def valid?(method_sym, allow, value) return true if value.to_s.match(/^\s*[+-]?((\d+_?)*\d+(\.(\d+_?)*\d+)?|\.(\d+_?)*\d+)(\s*|([eE][+-]?(\d+_?)*\d+)\s*)$/) return true if allow.include?(value) warn "Предупреждение: значение валюты #{method_sym.to_s.upcase} может быть цифрой или значением из #{allow.inspect}" false end