class CzFaker::Energy
Public Class Methods
ean(lds = true, dist_code = nil)
click to toggle source
# File lib/cz_faker/energy.rb, line 5 def ean(lds = true, dist_code = nil) code = electricity_by_code(dist_code)[:prefixes].sample code += "00" unless lds (CzFaker::Data::EAN_LENGTH - code.size - 1).times do code += Number.integer(1) end code += ean_checksum(code).to_s end
eic(lds = true, dist_code = nil, type = nil)
click to toggle source
# File lib/cz_faker/energy.rb, line 14 def eic(lds = true, dist_code = nil, type = nil) code = gas_by_code(dist_code)[:prefixes].sample # 5 chars code += lds ? Number.integer(2).to_s : "00" # 2 chars code += type.nil? ? CzFaker::Data::GAS_TYPES.sample : type # 1 char code += Number.integer(7) # 7 chars code + eic_checksum(code).to_s # 1 char end
electricity_distribution_company()
click to toggle source
# File lib/cz_faker/energy.rb, line 26 def electricity_distribution_company CzFaker::Data::ELECTRICITY_DISTRIBUTORS.sample[:name] end
gas_distribution_company()
click to toggle source
# File lib/cz_faker/energy.rb, line 22 def gas_distribution_company CzFaker::Data::GAS_DISTRIBUTORS.sample[:name] end
Private Class Methods
ean_checksum(code)
click to toggle source
# File lib/cz_faker/energy.rb, line 32 def ean_checksum(code) sum = 0 code.split('').each_with_index do |value, index| sum += index.even? ? value.to_i * 3 : value.to_i end (10 - sum % 10) % 10 end
eic_char_to_int(char)
click to toggle source
# File lib/cz_faker/energy.rb, line 74 def eic_char_to_int(char) if char == '-' 36 elsif char.match?(/\A\d+\z/) char.to_i elsif char.match?(/\A[A-Za-z]\z/) char.upcase.ord - 'A'.ord + 10 else -1 end end
eic_checksum(code)
click to toggle source
# File lib/cz_faker/energy.rb, line 40 def eic_checksum(code) sum = 0 code.split('').each_with_index do |value, index| sum += eic_char_to_int(value) * (16 - index) end eic_int_to_char(((37 - sum % 37) % 37)) end
eic_int_to_char(int)
click to toggle source
# File lib/cz_faker/energy.rb, line 64 def eic_int_to_char(int) if int < 10 && int >= 0 int.to_s elsif int < 36 && int >= 10 (int + 'A'.ord - 10).chr else '-' end end
electricity_by_code(code = nil)
click to toggle source
# File lib/cz_faker/energy.rb, line 48 def electricity_by_code(code = nil) return CzFaker::Data::ELECTRICITY_DISTRIBUTORS.sample unless code CzFaker::Data::ELECTRICITY_DISTRIBUTORS.each do |dist| return dist if dist[:code] == code.to_sym end end
gas_by_code(code = nil)
click to toggle source
# File lib/cz_faker/energy.rb, line 56 def gas_by_code(code = nil) return CzFaker::Data::GAS_DISTRIBUTORS.sample unless code CzFaker::Data::GAS_DISTRIBUTORS.each do |dist| return dist if dist[:code] == code.to_sym end end