mm_phonenumbers 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/mm_phonenumbers +7 -0
- data/lib/mm_phonenumbers.rb +57 -0
- data/lib/sanitize_phone.rb +53 -0
- data/lib/telecoms/constant_variables.rb +13 -0
- data/lib/telecoms/mpt.rb +9 -0
- data/lib/telecoms/ooredoo.rb +10 -0
- data/lib/telecoms/telenor.rb +10 -0
- data/test/test_mm_phonenumbers.rb +36 -0
- data/test/test_sanitize_phone.rb +31 -0
- metadata +56 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 18ce28ea86b810f12a4c0e467ba585ed5b576210
|
4
|
+
data.tar.gz: 6795f3aea2aad8bd071b048930239151dab21dbf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7f29e23ec5e77c5ac68496db0b8b1b0c65dd069e1ddb4a215e9fa2f13931ec533a431cb20b55a49caeaf424f14e537859552bfa9b4c90ddd1d2953be9b6d6fe7
|
7
|
+
data.tar.gz: 3d42400e5f03449865f74e36b9a64dbb629f1a7d7c579aaad7aaaa0d56c86967d98ab0441da1065f8174127b48f8e05ea428654c9bfcf6f0427065802d1562e0
|
data/bin/mm_phonenumbers
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'sanitize_phone'
|
2
|
+
require 'telecoms/mpt'
|
3
|
+
require 'telecoms/ooredoo'
|
4
|
+
require 'telecoms/telenor'
|
5
|
+
|
6
|
+
class MmPhonenumbers
|
7
|
+
def self.is_valid_phone(phone_number)
|
8
|
+
if phone_number
|
9
|
+
phone_number = SanitizePhone::remove_whitespace_and_dash(phone_number)
|
10
|
+
phone_number = SanitizePhone::remove_double_country_code(phone_number)
|
11
|
+
phone_number = SanitizePhone::remove_zero_before_area_code(phone_number)
|
12
|
+
|
13
|
+
return SanitizePhone::check_phone_regex(phone_number) ? true : false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.get_telecom_name(phone_number)
|
18
|
+
telecom_name = ''
|
19
|
+
if phone_number && self.is_valid_phone(phone_number)
|
20
|
+
|
21
|
+
if Mpt::check(phone_number)
|
22
|
+
telecom_name = 'MPT'
|
23
|
+
|
24
|
+
elsif Telenor::check(phone_number)
|
25
|
+
telecom_name = 'TELENOR'
|
26
|
+
|
27
|
+
elsif Ooredoo::check(phone_number)
|
28
|
+
telecom_name = 'OOREDOO'
|
29
|
+
|
30
|
+
else
|
31
|
+
telecom_name = 'UNKNOWN'
|
32
|
+
end
|
33
|
+
|
34
|
+
return telecom_name
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.is_provided_telecom(telecom_name, phone_number)
|
39
|
+
if phone_number && self.is_valid_phone(phone_number)
|
40
|
+
case telecom_name.downcase
|
41
|
+
when "telenor"
|
42
|
+
return Telenor::check(phone_number)
|
43
|
+
|
44
|
+
when "ooredoo"
|
45
|
+
return Ooredoo::check(phone_number)
|
46
|
+
|
47
|
+
when "mpt"
|
48
|
+
return Mpt::check(phone_number)
|
49
|
+
|
50
|
+
else
|
51
|
+
raise 'Unknown Telecom Name'
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# Class for sanitizing phone numbers
|
2
|
+
require './lib/telecoms/constant_variables.rb'
|
3
|
+
|
4
|
+
class SanitizePhone
|
5
|
+
class << self
|
6
|
+
include ConstantVariables
|
7
|
+
|
8
|
+
# Removing '[],(),- and whitespace' characters
|
9
|
+
#
|
10
|
+
# * Example Test Case
|
11
|
+
# '09 45001 2345 ' -> '09450012345'
|
12
|
+
# '09-45001-2345' -> '09450012345'
|
13
|
+
# ' 09450012345 ' -> '09450012345'
|
14
|
+
def remove_whitespace_and_dash(phone_number)
|
15
|
+
if phone_number
|
16
|
+
phone_number = phone_number.strip
|
17
|
+
phone_number = phone_number.gsub(' ','')
|
18
|
+
phone_number = phone_number.gsub('-', '')
|
19
|
+
end
|
20
|
+
|
21
|
+
return phone_number
|
22
|
+
end
|
23
|
+
|
24
|
+
# Clean Double Country code
|
25
|
+
# * Example Test Code
|
26
|
+
# '+95959978412345' to '+959978412345'
|
27
|
+
def remove_double_country_code(phone_number)
|
28
|
+
if phone_number.match(COUNTRY_CODE_REGEX)
|
29
|
+
if phone_number.match(DOUBLE_COUNTRY_CODE_REGEX)
|
30
|
+
phone_number = phone_number.sub('9595', '95')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
return phone_number
|
34
|
+
end
|
35
|
+
|
36
|
+
# Clean Zero before area code
|
37
|
+
# * Example Test Code
|
38
|
+
# '+9509978412345' to '+959978412345'
|
39
|
+
def remove_zero_before_area_code(phone_number)
|
40
|
+
if phone_number.match(ZERO_BEFORE_AREACODE_REGEX)
|
41
|
+
phone_number = phone_number.sub('9509', '959')
|
42
|
+
end
|
43
|
+
|
44
|
+
return phone_number
|
45
|
+
end
|
46
|
+
|
47
|
+
# Checking mm_phone_regex string
|
48
|
+
def check_phone_regex(phone_number)
|
49
|
+
return phone_number.match(MM_PHONE_REGEX) ? true : false
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module ConstantVariables
|
2
|
+
# phone regex pattern
|
3
|
+
MM_PHONE_REGEX = /^(09|\+?950?9|\+?95950?9)\d{7,9}$/
|
4
|
+
COUNTRY_CODE_REGEX = /^\+?950?9\d+$/
|
5
|
+
DOUBLE_COUNTRY_CODE_REGEX = /^\+?95950?9\d{7,9}$/
|
6
|
+
ZERO_BEFORE_AREACODE_REGEX = /^\+?9509\d{7,9}$/
|
7
|
+
|
8
|
+
# regex patterns for each operator
|
9
|
+
MPT_REGEX = /^(09|\+?959)(5\d{6}|4\d{7,8}|2\d{6,8}|3\d{7,8}|6\d{6}|8\d{6}|7\d{7}|9(0|1|9)\d{5,6})$/
|
10
|
+
TELENOR_REGEX = /^(09|\+?959)7(9|8|7)\d{7}$/
|
11
|
+
OOREDOO_REGEX = /^(09|\+?959)9(7|6)\d{7}$/
|
12
|
+
|
13
|
+
end
|
data/lib/telecoms/mpt.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'mm_phonenumbers'
|
3
|
+
|
4
|
+
class MmPhonenumbersTest < Test::Unit::TestCase
|
5
|
+
def test_is_valid_phone
|
6
|
+
p "Enter Phone number"
|
7
|
+
phone_number = gets
|
8
|
+
phone_number ||= ''
|
9
|
+
phone_number.chomp!
|
10
|
+
|
11
|
+
assert_equal true, MmPhonenumbers::is_valid_phone(phone_number)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_get_telecom_name
|
15
|
+
p "Enter Phone number"
|
16
|
+
phone_number = gets
|
17
|
+
phone_number ||= ''
|
18
|
+
phone_number.chomp!
|
19
|
+
|
20
|
+
assert_equal "MPT", MmPhonenumbers::get_telecom_name(phone_number)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_is_provided_telecom
|
24
|
+
p "Enter Telecom name"
|
25
|
+
telecom_name = gets
|
26
|
+
telecom_name ||= ''
|
27
|
+
telecom_name.chomp!
|
28
|
+
|
29
|
+
p "Enter Phone number"
|
30
|
+
phone_number = gets
|
31
|
+
phone_number ||= ''
|
32
|
+
phone_number.chomp!
|
33
|
+
|
34
|
+
assert_equal true, MmPhonenumbers.is_provided_telecom(telecom_name, phone_number)
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'sanitize_phone'
|
3
|
+
|
4
|
+
class SanitizePhoneTest < Test::Unit::TestCase
|
5
|
+
def test_remove_whitespace_and_dash
|
6
|
+
p "Enter phone to sanitize"
|
7
|
+
phone_number = gets
|
8
|
+
phone_number ||= ''
|
9
|
+
phone_number.chomp!
|
10
|
+
|
11
|
+
assert_equal '09450012345', SanitizePhone::remove_whitespace_and_dash(phone_number)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_remove_double_country_code
|
15
|
+
p "Enter phone to remove double country code"
|
16
|
+
phone_number = gets
|
17
|
+
phone_number ||= ''
|
18
|
+
phone_number.chomp!
|
19
|
+
|
20
|
+
assert_equal '+959450012345', SanitizePhone::remove_double_country_code(phone_number)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_remove_zero_before_area_code
|
24
|
+
p "Enter phone to remove zero before areacode"
|
25
|
+
phone_number = gets
|
26
|
+
phone_number ||= ''
|
27
|
+
phone_number.chomp!
|
28
|
+
|
29
|
+
assert_equal '+959450012345', SanitizePhone::remove_zero_before_area_code(phone_number)
|
30
|
+
end
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mm_phonenumbers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Stella Swe
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-02-02 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: "To check valid myanmar mobile numbers,get mobile operator name, \n sanitize
|
14
|
+
mobile numbers and get mobile network types."
|
15
|
+
email: swesweucsy@gmail.com
|
16
|
+
executables:
|
17
|
+
- mm_phonenumbers
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- bin/mm_phonenumbers
|
22
|
+
- lib/mm_phonenumbers.rb
|
23
|
+
- lib/sanitize_phone.rb
|
24
|
+
- lib/telecoms/constant_variables.rb
|
25
|
+
- lib/telecoms/mpt.rb
|
26
|
+
- lib/telecoms/ooredoo.rb
|
27
|
+
- lib/telecoms/telenor.rb
|
28
|
+
- test/test_mm_phonenumbers.rb
|
29
|
+
- test/test_sanitize_phone.rb
|
30
|
+
homepage: http://rubygems.org/gems/mm_phonenumbers
|
31
|
+
licenses:
|
32
|
+
- MIT
|
33
|
+
metadata: {}
|
34
|
+
post_install_message:
|
35
|
+
rdoc_options: []
|
36
|
+
require_paths:
|
37
|
+
- lib
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
requirements: []
|
49
|
+
rubyforge_project:
|
50
|
+
rubygems_version: 2.6.12
|
51
|
+
signing_key:
|
52
|
+
specification_version: 4
|
53
|
+
summary: Validating Myanmar Mobile Numbers!
|
54
|
+
test_files:
|
55
|
+
- test/test_mm_phonenumbers.rb
|
56
|
+
- test/test_sanitize_phone.rb
|