mm_phonenumbers 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -0,0 +1,7 @@
1
+ require 'mm_phonenumbers'
2
+
3
+ puts "Is Valid? : #{MmPhonenumbers.is_valid_phone(ARGV[0])}"
4
+
5
+ puts "Telecom Name: #{MmPhonenumbers.get_telecom_name(ARGV[0])}"
6
+
7
+ puts "Is provide? : #{MmPhonenumbers.is_provided_telecom(ARGV[1], ARGV[0])}"
@@ -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
@@ -0,0 +1,9 @@
1
+ require './lib/telecoms/constant_variables.rb'
2
+
3
+ class Mpt
4
+ include ConstantVariables
5
+
6
+ def self.check(phone_number)
7
+ phone_number =~ MPT_REGEX ? true : false
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ require './lib/telecoms/constant_variables.rb'
2
+
3
+ class Ooredoo
4
+ include ConstantVariables
5
+
6
+ def self.check(phone_number)
7
+ p "Ooredoo"
8
+ phone_number =~ OOREDOO_REGEX ? true : false
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require './lib/telecoms/constant_variables.rb'
2
+
3
+ class Telenor
4
+ include ConstantVariables
5
+
6
+ def self.check(phone_number)
7
+ p "Telenor"
8
+ phone_number =~ TELENOR_REGEX ? true : false
9
+ end
10
+ end
@@ -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