Skip to content

Commit

Permalink
Merge pull request #9 from erichowey/more-formats
Browse files Browse the repository at this point in the history
Add Dot and Hyphen Outputs
  • Loading branch information
erichowey authored Apr 12, 2021
2 parents 0e582b7 + 983da6e commit 5dae2d6
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 26 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,16 @@ You can install this package via composer
- E.164 `+12125550123`
- Parenthesis `(212) 555-0123`
- Dot `212.555.0123`
- Hyphen `212-555-0123`
- Space `212 555 0123`
- Letters `1800FLOWERS`

etc...

## Outputted Formats
- E.164 `+12125550123`
- Dot Format `212.555.0123`
- Hyphen Format `212-555-0123`
- National Format `(212) 555-0123`
- International Format `+1 212 555 0123`
- 10 Digit `2125550123`
Expand All @@ -38,6 +41,8 @@ $number = NanpNumberFormatter::format("(212) 555-0123");
echo $number->e164; // +12125550123
echo $number->nationalFormat; // (212) 555-0123
echo $number->internationalFormat; // +1 212 555 0123
echo $number->dotFormat; // 212.555.0123
echo $number->hyphenFormat; // 212-555-0123
echo $number->tendigit; // 2125550123
echo $number->elevendigit; // 12125550123
echo $number->uri; // tel:+12125550123
Expand Down
6 changes: 6 additions & 0 deletions src/NanpNumberFormatter.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ class NanpNumberFormatter
public $npa;
public $nxx;
public $line;
public $dotFormat;
public $hyphenFormat;
public $nationalFormat;
public $internationalFormat;
public $tendigit;
Expand All @@ -27,6 +29,8 @@ function __construct()
$this->npa = "Invalid";
$this->nxx = "Invalid";
$this->line = "Invalid";
$this->dotFormat = "Invalid";
$this->hyphenFormat = "Invalid";
$this->nationalFormat = "Invalid";
$this->internationalFormat = "Invalid";
$this->tendigit = "Invalid";
Expand Down Expand Up @@ -146,6 +150,8 @@ public function parse($number, bool $wildcards = false)
$this->npa = substr($number, 2, 3);
$this->nxx = substr($number, 5, 3);
$this->line = substr($number, 8, 4);
$this->dotFormat = $this->npa . "." . $this->nxx . "." . $this->line;
$this->hyphenFormat = $this->npa . "-" . $this->nxx . "-" . $this->line;
$this->nationalFormat = "(" . $this->npa . ") " . $this->nxx . "-" . $this->line;
$this->internationalFormat = "+1" . " " . $this->npa . " " . $this->nxx . " " . $this->line;
$this->tendigit = $this->npa . $this->nxx . $this->line;
Expand Down
78 changes: 52 additions & 26 deletions tests/NanpNumberFormatterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ public function testEmpty()
$this->assertEquals("Invalid", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("Invalid", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("Invalid", $number->uri, "The uri value is incorrect");
$this->assertEquals("Invalid", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("Invalid", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("Invalid", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->npa, "The npa value is incorrect");
Expand All @@ -41,6 +43,8 @@ public function test12125550123()
'(212) 555-0123',
'1 (212) 555-0123',
'212.555.0123',
'212-555-0123',
'1-212-555-0123',
'+1 (212) 555-0123',
'+12125550123',
' 1 (212) 555-0123 '
Expand All @@ -55,6 +59,8 @@ public function test12125550123()
$this->assertEquals("2125550123", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("12125550123", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("tel:+12125550123", $number->uri, "The uri value is incorrect");
$this->assertEquals("212.555.0123", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("212-555-0123", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("(212) 555-0123", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("+1 212 555 0123", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("212", $number->npa, "The npa value is incorrect");
Expand All @@ -71,6 +77,8 @@ public function test8008008000()
'(800) 800-8000',
'1 (800) 800-8000',
'800.800.8000',
'800-800-8000',
'1-800-800-8000',
'+1 (800) 800-8000',
'+18008008000',
' 1 (800) 800-8000 '
Expand All @@ -85,6 +93,8 @@ public function test8008008000()
$this->assertEquals("8008008000", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("18008008000", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("tel:+18008008000", $number->uri, "The uri value is incorrect");
$this->assertEquals("800.800.8000", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("800-800-8000", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("(800) 800-8000", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("+1 800 800 8000", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("800", $number->npa, "The npa value is incorrect");
Expand All @@ -103,6 +113,8 @@ public function testLetterInput()
$this->assertEquals("8003569377", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("18003569377", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("tel:+18003569377", $number->uri, "The uri value is incorrect");
$this->assertEquals("800.356.9377", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("800-356-9377", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("(800) 356-9377", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("+1 800 356 9377", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("800", $number->npa, "The npa value is incorrect");
Expand All @@ -120,6 +132,8 @@ public function testLessThan10Characters()
$this->assertEquals("Invalid", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("Invalid", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("Invalid", $number->uri, "The uri value is incorrect");
$this->assertEquals("Invalid", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("Invalid", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("Invalid", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->npa, "The npa value is incorrect");
Expand All @@ -138,6 +152,8 @@ public function testInvalidCharacters()
$this->assertEquals("Invalid", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("Invalid", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("Invalid", $number->uri, "The uri value is incorrect");
$this->assertEquals("Invalid", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("Invalid", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("Invalid", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->npa, "The npa value is incorrect");
Expand All @@ -155,6 +171,8 @@ public function testNonNANPNumber()
$this->assertEquals("Invalid", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("Invalid", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("Invalid", $number->uri, "The uri value is incorrect");
$this->assertEquals("Invalid", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("Invalid", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("Invalid", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->npa, "The npa value is incorrect");
Expand All @@ -172,6 +190,8 @@ public function testNumberTooLong()
$this->assertEquals("Invalid", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("Invalid", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("Invalid", $number->uri, "The uri value is incorrect");
$this->assertEquals("Invalid", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("Invalid", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("Invalid", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->npa, "The npa value is incorrect");
Expand All @@ -189,6 +209,8 @@ public function testNonNXXNXXXXXX()
$this->assertEquals("Invalid", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("Invalid", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("Invalid", $number->uri, "The uri value is incorrect");
$this->assertEquals("Invalid", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("Invalid", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("Invalid", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->npa, "The npa value is incorrect");
Expand All @@ -198,35 +220,39 @@ public function testNonNXXNXXXXXX()

public function testWildCardWithFlagFalse()
{
$number = NanpNumberFormatter::format("(212) - 555 01**");
$this->assertNotEmpty($number, "Formatter returned nothing when it should have returned an object");
$this->assertEquals("(212) - 555 01** contains invalid characters", $number->errorMessage, "errorMessage is incorrect");
$this->assertEquals(false, $number->isValid, "isValid is not false for an invalid number");
$this->assertEquals("Invalid", $number->e164, "e164 is incorrect");
$this->assertEquals("Invalid", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("Invalid", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("Invalid", $number->uri, "The uri value is incorrect");
$this->assertEquals("Invalid", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->npa, "The npa value is incorrect");
$this->assertEquals("Invalid", $number->nxx, "The nxx value is incorrect");
$this->assertEquals("Invalid", $number->line, "The line value is incorrect");
$number = NanpNumberFormatter::format("(212) - 555 01**");
$this->assertNotEmpty($number, "Formatter returned nothing when it should have returned an object");
$this->assertEquals("(212) - 555 01** contains invalid characters", $number->errorMessage, "errorMessage is incorrect");
$this->assertEquals(false, $number->isValid, "isValid is not false for an invalid number");
$this->assertEquals("Invalid", $number->e164, "e164 is incorrect");
$this->assertEquals("Invalid", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("Invalid", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("Invalid", $number->uri, "The uri value is incorrect");
$this->assertEquals("Invalid", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("Invalid", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("Invalid", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("Invalid", $number->npa, "The npa value is incorrect");
$this->assertEquals("Invalid", $number->nxx, "The nxx value is incorrect");
$this->assertEquals("Invalid", $number->line, "The line value is incorrect");
}

public function testWildCards()
{
$number = NanpNumberFormatter::format("(212) - 555 01**", true);
$this->assertNotEmpty($number, "Formatter returned nothing when it should have returned an object");
$this->assertEquals("", $number->errorMessage, "errorMessage is incorrect");
$this->assertEquals(true, $number->isValid, "isValid is not true for a valid number");
$this->assertEquals("+121255501**", $number->e164, "e164 is incorrect");
$this->assertEquals("21255501**", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("121255501**", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("tel:+121255501**", $number->uri, "The uri value is incorrect");
$this->assertEquals("(212) 555-01**", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("+1 212 555 01**", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("212", $number->npa, "The npa value is incorrect");
$this->assertEquals("555", $number->nxx, "The nxx value is incorrect");
$this->assertEquals("01**", $number->line, "The line value is incorrect");
$number = NanpNumberFormatter::format("(212) - 555 01**", true);
$this->assertNotEmpty($number, "Formatter returned nothing when it should have returned an object");
$this->assertEquals("", $number->errorMessage, "errorMessage is incorrect");
$this->assertEquals(true, $number->isValid, "isValid is not true for a valid number");
$this->assertEquals("+121255501**", $number->e164, "e164 is incorrect");
$this->assertEquals("21255501**", $number->tendigit, "The tendigit value is incorrect");
$this->assertEquals("121255501**", $number->elevendigit, "The elevendigit value is incorrect");
$this->assertEquals("tel:+121255501**", $number->uri, "The uri value is incorrect");
$this->assertEquals("212.555.01**", $number->dotFormat, "The dotFormat is incorrect");
$this->assertEquals("212-555-01**", $number->hyphenFormat, "The hyphenFormat is incorrect");
$this->assertEquals("(212) 555-01**", $number->nationalFormat, "The nationalFormat value is incorrect");
$this->assertEquals("+1 212 555 01**", $number->internationalFormat, "The internationalFormat value is incorrect");
$this->assertEquals("212", $number->npa, "The npa value is incorrect");
$this->assertEquals("555", $number->nxx, "The nxx value is incorrect");
$this->assertEquals("01**", $number->line, "The line value is incorrect");
}
}

0 comments on commit 5dae2d6

Please sign in to comment.