From 8cdb51a604c97b7f77fe68edebf26c726e79d238 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommi=20Finnil=C3=A4?= Date: Mon, 10 Oct 2016 09:19:21 +0300 Subject: [PATCH] [fi_FI] Improve phone number generator With this patch, generated phone numbers are more realistic. It's also easier to improve the formats in the future, if needed. --- src/Faker/Provider/fi_FI/PhoneNumber.php | 101 ++++++++++++++++++++--- 1 file changed, 90 insertions(+), 11 deletions(-) diff --git a/src/Faker/Provider/fi_FI/PhoneNumber.php b/src/Faker/Provider/fi_FI/PhoneNumber.php index 39f0e784f6..a3230740e2 100644 --- a/src/Faker/Provider/fi_FI/PhoneNumber.php +++ b/src/Faker/Provider/fi_FI/PhoneNumber.php @@ -4,17 +4,96 @@ class PhoneNumber extends \Faker\Provider\PhoneNumber { + /** + * @link https://www.viestintavirasto.fi/en/internettelephone/numberingoftelecommunicationsnetworks/localcallsandtelecommunicationsareas/mapoftelecommunicationsareas.html + * @var array + */ + protected static $landLineareaCodes = array( + '02', + '03', + '05', + '06', + '08', + '09', + '013', + '014', + '015', + '016', + '017', + '018', + '019', + ); + + /** + * @link https://www.viestintavirasto.fi/en/internettelephone/numberingoftelecommunicationsnetworks/mobilenetworks/mobilenetworkareacodes.html + * @var array + */ + protected static $mobileNetworkAreaCodes = array( + '040', + '050', + '044', + '045', + ); + + protected static $numberFormats = array( + '### ####', + '#######', + ); + protected static $formats = array( - '+358 (40) ### ####', - '+358 (50) ### ####', - '+358 40 ### ####', - '+358 50 ### ####', - '040 ### ####', - '050 ### ####', - '###-########', - '### #######', - '040-#######', - '050-#######', - '(###) #######' + '+358 ({{ e164MobileNetworkAreaCode }}) {{ numberFormat }}', + '+358 {{ e164MobileNetworkAreaCode }} {{ numberFormat }}', + '+358 ({{ e164landLineAreaCode }}) {{ numberFormat }}', + '+358 {{ e164landLineAreaCode }} {{ numberFormat }}', + '{{ mobileNetworkAreaCode }}{{ separator }}{{ numberFormat }}', + '{{ landLineAreaCode }}{{ separator }}{{ numberFormat }}', ); + + /** + * @return string + */ + public function landLineAreaCode() + { + return static::randomElement(static::$landLineareaCodes); + } + + /** + * @return string + */ + public function e164landLineAreaCode() + { + return substr(static::randomElement(static::$landLineareaCodes), 1); + } + + /** + * @return string + */ + public function mobileNetworkAreaCode() + { + return static::randomElement(static::$mobileNetworkAreaCodes); + } + + /** + * @return string + */ + public function e164MobileNetworkAreaCode() + { + return substr(static::randomElement(static::$mobileNetworkAreaCodes), 1); + } + + /** + * @return string + */ + public function numberFormat() + { + return static::randomElement(static::$numberFormats); + } + + /** + * @return string + */ + public function separator() + { + return static::randomElement(array(' ', '-')); + } }