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.
@@ -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