diff --git a/src/Faker/Provider/sv_SE/Address.php b/src/Faker/Provider/sv_SE/Address.php new file mode 100644 index 0000000000..cfab1adcf8 --- /dev/null +++ b/src/Faker/Provider/sv_SE/Address.php @@ -0,0 +1,153 @@ +generator->parse($format)))); + } + + /** + * @example 'jensen.se' + * @return string + */ + public function domainWord() + { + $company = $this->generator->format('company'); + $companyElements = explode(' ', $company); + $company = $companyElements[0]; + $company = preg_replace('/\W/u', '', $company); + + return static::toLower(static::toAscii($company)); + } +} diff --git a/src/Faker/Provider/sv_SE/Payment.php b/src/Faker/Provider/sv_SE/Payment.php new file mode 100644 index 0000000000..b2ce8e20a2 --- /dev/null +++ b/src/Faker/Provider/sv_SE/Payment.php @@ -0,0 +1,22 @@ +format('ymd'); + + if ($gender && $gender == static::GENDER_MALE) { + $randomDigits = (string)static::numerify('##') . static::randomElement(array(1,3,5,7,9)); + } elseif ($gender && $gender == static::GENDER_FEMALE) { + $randomDigits = (string)static::numerify('##') . static::randomElement(array(0,2,4,6,8)); + } else { + $randomDigits = (string)static::numerify('###'); + } + + $checksum = $this->calculateChecksum($datePart . $randomDigits); + + return $datePart . '-' . $randomDigits . $checksum; + } + + /** + * Luhn algorithm + * @link + * @param string $input + * @return int checksum + */ + protected function calculateChecksum($input) + { + $multiplied = implode( + array_map( + function ($first, $second) { + return $first * $second; + }, + str_split($input), + array(2, 1, 2, 1, 2, 1, 2, 1, 2) + ) + ); + + $summed = (int)array_reduce( + str_split($multiplied), + function ($carry, $item) { + return (int)($carry + $item); + } + ); + + $checksum = 10 - ($summed%10); + return $checksum; + } +} diff --git a/src/Faker/Provider/sv_SE/PhoneNumber.php b/src/Faker/Provider/sv_SE/PhoneNumber.php new file mode 100644 index 0000000000..3416ab407e --- /dev/null +++ b/src/Faker/Provider/sv_SE/PhoneNumber.php @@ -0,0 +1,37 @@ +