module RuPhoneInfo

Constants

VERSION

Public Class Methods

get(phone) click to toggle source
# File lib/ru_phone_info.rb, line 5
def self.get phone
  phone = prepare_phone phone
  code = get_code phone
  number = get_number phone
  result = mobile_phones.find { |row| row[0]==code && number >= row[1].to_i && number.to_i <= row[2].to_i }
  if result
    {
      code: result[0],
      begin: result[1],
      end: result[2],
      capacity: result[3],
      operator: result[4],
      region: result[5]
    }
  else
    nil
  end
end

Private Class Methods

get_code(phone) click to toggle source
# File lib/ru_phone_info.rb, line 39
def self.get_code phone
  phone[-10, 3]
end
get_number(phone) click to toggle source
# File lib/ru_phone_info.rb, line 35
def self.get_number phone
  phone[-7, 11].to_i
end
mobile_phones() click to toggle source
# File lib/ru_phone_info.rb, line 26
def self.mobile_phones
  data = File.read("#{File.dirname(__FILE__)}/ru_phone_info/data/Kody_DEF-9kh.csv")

  files_content = data.force_encoding("cp1251").encode("utf-8")
  files_content.gsub!("\t", '').gsub!("\r", '').gsub!('"', '')

  CSV.parse(files_content, col_sep: ";", row_sep: "\n", skip_blanks: true)
end
prepare_phone(phone) click to toggle source
# File lib/ru_phone_info.rb, line 43
def self.prepare_phone phone
  phone.gsub(/[^\d]/, '')
end