This repository has been archived by the owner on Dec 11, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #316 from ulrikjohansson/sv_SE
Add Swedish locale
- Loading branch information
Showing
6 changed files
with
459 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
<?php | ||
|
||
namespace Faker\Provider\sv_SE; | ||
|
||
class Company extends \Faker\Provider\Company | ||
{ | ||
protected static $formats = array( | ||
'{{lastName}} {{companySuffix}}', | ||
'{{lastName}} {{companySuffix}}', | ||
'{{lastName}} {{companySuffix}}', | ||
'{{firstName}} {{lastName}} {{companySuffix}}', | ||
'{{lastName}} & {{lastName}} {{companySuffix}}', | ||
'{{lastName}} & {{lastName}}', | ||
'{{lastName}} och {{lastName}}', | ||
'{{lastName}} och {{lastName}} {{companySuffix}}' | ||
); | ||
|
||
protected static $companySuffix = array('AB', 'HB'); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,174 @@ | ||
<?php | ||
|
||
namespace Faker\Provider\sv_SE; | ||
|
||
class Person extends \Faker\Provider\Person | ||
{ | ||
protected static $formats = array( | ||
'{{firstName}} {{lastName}}', | ||
'{{firstName}} {{lastName}}', | ||
'{{firstName}} {{lastName}}', | ||
'{{firstName}} {{lastName}}', | ||
'{{firstName}} {{lastName}}', | ||
'{{firstName}} {{firstName}} {{lastName}}', | ||
'{{firstName}} {{firstName}} {{lastName}}', | ||
'{{firstName}} {{firstName}} {{lastName}}', | ||
'{{firstName}} {{lastName}} {{lastName}}', | ||
'{{firstName}} {{lastName}}-{{lastName}}', | ||
'{{firstName}} {{firstName}} {{lastName}}-{{lastName}}', | ||
); | ||
|
||
/** | ||
* @var array Swedish female first names | ||
* @link http://spraakbanken.gu.se/statistik/lbfnamnalf.phtml | ||
*/ | ||
protected static $firstNameFemale = array( | ||
|
||
'Ada', 'Adela', 'Adele', 'Adéle', 'Adelia', 'Adina', 'Adolfina', 'Agda', 'Agnes', 'Agneta', 'Aina', 'Aino', 'Albertina', 'Alexandra', 'Alfhild', 'Alfrida', 'Alice', 'Alida', 'Ally', 'Alma', 'Alva', 'Amalia', 'Amanda', 'Andrea', 'Anette', 'Angela', 'Anita', 'Anja', 'Ann', 'Anna', 'Anna-Carin', 'Anna-Greta', 'Anna-Karin', 'Anna-Lena', 'Anna-Lisa', 'Anna-Maria', 'Anna-Stina', 'Anne', 'Anneli', 'Annelie', 'Annette', 'Anne-Charlotte', 'Anne-Marie', 'Anni', 'Annica', 'Annie', 'Annika', 'Annikki', 'Anny', 'Ann-Britt', 'Ann-Charlott', 'Ann-Charlotte', 'Ann-Christin', 'Ann-Christine', 'Ann-Katrin', 'Ann-Kristin', 'Ann-Louise', 'Ann-Margret', 'Ann-Mari', 'Ann-Marie', 'Ann-Sofi', 'Ann-Sofie', 'Antonia', 'Arvida', 'Asta', 'Astrid', 'Augusta', 'Aurora', 'Axelia', 'Axelina', | ||
'Barbro', 'Beata', 'Beatrice', 'Beda', 'Berit', 'Bernhardina', 'Berta', 'Betty', 'Birgit', 'Birgitta', 'Blenda', 'Bodil', 'Boel', 'Borghild', 'Brita', 'Britt', 'Britta', 'Britt-Inger', 'Britt-Louise', 'Britt-Mari', 'Britt-Marie', | ||
'Camilla', 'Carin', 'Carina', 'Carita', 'Carola', 'Carolina', 'Caroline', 'Catarina', 'Catharina', 'Cathrine', 'Catrin', 'Cecilia', 'Charlott', 'Charlotta', 'Charlotte', 'Christel', 'Christin', 'Christina', 'Christine', 'Clara', 'Clary', 'Constance', 'Cristina', | ||
'Daga', 'Dagmar', 'Dagny', 'Daisy', 'Davida', 'Desideria', 'Desirée', 'Diana', 'Disa', 'Dora', 'Doris', 'Dorotea', | ||
'Ebba', 'Edit', 'Edith', 'Edla', 'Eira', 'Eivor', 'Ejvor', 'Elaine', 'Eleonor', 'Eleonora', 'Elfrida', 'Elida', 'Elin', 'Elina', 'Elinor', 'Elisabet', 'Elisabeth', 'Elise', 'Ella', 'Ellen', 'Ellinor', 'Elly', 'Elma', 'Elna', 'Elsa', 'Else', 'Else-Marie', 'Elsi', 'Elsie', 'Elsy', 'Elvi', 'Elvira', 'Elvy', 'Emelia', 'Emerentia', 'Emilia', 'Emma', 'Emmy', 'Erika', 'Erna', 'Ester', 'Estrid', 'Ethel', 'Eufemia', 'Eugenia', 'Eva', 'Eva-Britt', 'Eva-Lena', 'Eva-Lotta', 'Eva-Marie', 'Evelina', 'Evelyn', 'Evy', 'Ewa', | ||
'Fanny', 'Florence', 'Fredrika', 'Frida', 'Frideborg', | ||
'Gabriella', 'Gerd', 'Gerda', 'Gertie', 'Gertrud', 'Gisela', 'Greta', 'Gudrun', 'Gull', 'Gullan', 'Gullbritt', 'Gulli', 'Gullvi', 'Gully', 'Gull-Britt', 'Gun', 'Gunborg', 'Gunbritt', 'Gunda', 'Gunhild', 'Gunilla', 'Gunn', 'Gunnel', 'Gunni', 'Gunvor', 'Gun-Britt', 'Gurli', 'Gustava', 'Gärd', 'Görel', 'Göta', | ||
'Hanna', 'Harriet', 'Hedvig', 'Helen', 'Helén', 'Helena', 'Helene', 'Heléne', 'Helfrid', 'Helga', 'Helmi', 'Helny', 'Henny', 'Henrietta', 'Henriette', 'Herta', 'Hilda', 'Hildegard', 'Hildur', 'Hillevi', 'Hilma', 'Hjördis', 'Hulda', | ||
'Ida', 'Ines', 'Inez', 'Inga', 'Ingalill', 'Inga-Britt', 'Inga-Lena', 'Inga-Lill', 'Inga-Lisa', 'Inga-Maj', 'Ingbritt', 'Ingeborg', 'Ingegerd', 'Ingegärd', 'Ingela', 'Inger', 'Ingrid', 'Ingvor', 'Ing-Britt', 'Ing-Mari', 'Ing-Marie', 'Iréne', 'Irene', 'Iris', 'Irma', 'Isabella', | ||
'Jane', 'Janet', 'Jeanette', 'Jenny', 'Jessica', 'Johanna', 'Josefina', 'Judit', 'Judith', 'Julia', 'Juliana', 'Justina', | ||
'Kaarina', 'Kajsa', 'Karin', 'Karina', 'Karla', 'Karola', 'Karolina', 'Katarina', 'Katharina', 'Katrin', 'Katrina', 'Kersti', 'Kerstin', 'Klara', 'Konstantia', 'Kornelia', 'Kristin', 'Kristina', 'Kristine', | ||
'Laila', 'Laura', 'Leila', 'Lena', 'Leontina', 'Liisa', 'Lilian', 'Lill', 'Lillemor', 'Lillian', 'Lilly', 'Linda', 'Linnéa', 'Linnea', 'Lisa', 'Lisbet', 'Lisbeth', 'Liselott', 'Liselotte', 'Lise-Lott', 'Lise-Lotte', 'Lizzie', 'Lola', 'Louise', 'Lovisa', 'Lucia', 'Lydia', | ||
'Madeleine', 'Madelene', 'Magda', 'Magdalena', 'Magnhild', 'Maj', 'Maja', 'Majbritt', 'Majken', 'Majlis', 'Majvor', 'Maj-Britt', 'Maj-Lis', 'Malin', 'Malvina', 'Margaret', 'Margareta', 'Margareth', 'Margaretha', 'Margit', 'Margita', 'Margot', 'Margret', 'Margreta', 'Mari', 'Maria', 'Mariana', 'Mariann', 'Marianne', 'Marie', 'Mariette', 'Marie-Louise', 'Marika', 'Marina', 'Marion', 'Marit', 'Marita', 'Mari-Ann', 'Marja', 'Marjatta', 'Marlene', 'Marta', 'Martha', 'Martina', 'Mary', 'Mathilda', 'Matilda', 'Maud', 'May', 'Mia', 'Mildred', 'Mimmi', 'Mirjam', 'Mona', 'Monica', 'Monika', 'Märit', 'Märta', 'Märtha', | ||
'Naemi', 'Naima', 'Nancy', 'Nanna', 'Nanny', 'Natalia', 'Nelly', 'Nina', 'Nora', | ||
'Olga', 'Olivia', 'Ottilia', | ||
'Paula', 'Paulina', 'Pauline', 'Pernilla', 'Petra', 'Petronella', 'Pia', | ||
'Ragna', 'Ragnhild', 'Rakel', 'Rebecka', 'Regina', 'Renée', 'Rigmor', 'Rita', 'Rosa', 'Rose', 'Rose-Marie', 'Rosita', 'Ros-Mari', 'Ros-Marie', 'Runa', 'Rut', 'Ruth', | ||
'Sabina', 'Saga', 'Sally', 'Sara', 'Selma', 'Serafia', 'Sibylla', 'Sigbritt', 'Signe', 'Signhild', 'Sigrid', 'Siri', 'Siv', 'Sofi', 'Sofia', 'Sofie', 'Solbritt', 'Solveig', 'Solvig', 'Sonja', 'Stina', 'Susann', 'Susanna', 'Susanne', 'Suzanne', 'Svea', 'Sylvia', 'Synnöve', 'Syster', | ||
'Tea', 'Tekla', 'Terese', 'Teresia', 'Therése', 'Therese', 'Theresia', 'Thyra', 'Tina', 'Tora', 'Torborg', 'Tove', 'Tyra', | ||
'Ulla', 'Ulla-Britt', 'Ulla-Britta', 'Ulrica', 'Ulrika', 'Ursula', | ||
'Valborg', 'Vanja', 'Vega', 'Vendela', 'Vendla', 'Vera', 'Veronica', 'Veronika', 'Victoria', 'Viktoria', 'Vilhelmina', 'Vilma', 'Viola', 'Virginia', 'Vivan', 'Viveca', 'Viveka', 'Vivi', 'Vivian', 'Viviann', 'Vivianne', 'Vivi-Ann', 'Vivi-Anne', | ||
'Wilhelmina', | ||
'Ylva', 'Yvonne', | ||
'Åsa', 'Åse' | ||
); | ||
|
||
/** | ||
* @var array Swedish male first names | ||
* @link http://spraakbanken.gu.se/statistik/lbfnamnalf.phtml | ||
*/ | ||
protected static $firstNameMale = array( | ||
'Abraham', 'Adam', 'Adolf', 'Adrian', 'Agaton', 'Agne', 'Albert', 'Albin', 'Aldor', 'Alex', 'Alexander', 'Alexis', 'Alexius', 'Alf', 'Alfons', 'Alfred', 'Algot', 'Allan', 'Alrik', 'Alvar', 'Alve', 'Amandus', 'Anders', 'André', 'Andreas', 'Anselm', 'Anshelm', 'Antero', 'Anton', 'Antonius', 'Arne', 'Arnold', 'Aron', 'Arthur', 'Artur', 'Arvid', 'Assar', 'Astor', 'August', 'Augustin', 'Axel', | ||
'Bengt', 'Bengt-Göran', 'Bengt-Olof', 'Bengt-Åke', 'Benny', 'Berndt', 'Berne', 'Bernhard', 'Bernt', 'Bert', 'Berth', 'Berthold', 'Bertil', 'Bill', 'Billy', 'Birger', 'Bjarne', 'Björn', 'Bo', 'Boris', 'Bror', 'Bruno', 'Brynolf', 'Börje', | ||
'Carl', 'Carl-Axel', 'Carl-Erik', 'Carl-Gustaf', 'Carl-Gustav', 'Carl-Johan', 'Charles', 'Christer', 'Christian', 'Claes', 'Claes-Göran', 'Clarence', 'Clas', 'Conny', 'Crister', 'Curt', | ||
'Dag', 'Dan', 'Daniel', 'David', 'Dennis', 'Dick', 'Donald', 'Douglas', | ||
'Ebbe', 'Eddie', 'Eddy', 'Edgar', 'Edmund', 'Edvard', 'Edvin', 'Efraim', 'Egon', 'Eilert', 'Einar', 'Eje', 'Ejnar', 'Elias', 'Elis', 'Ellert', 'Elmer', 'Elof', 'Elon', 'Elov', 'Elving', 'Elvir', 'Emanuel', 'Emil', 'Enar', 'Engelbert', 'Engelbrekt', 'Enok', 'Erhard', 'Eric', 'Erik', 'Erland', 'Erling', 'Ernfrid', 'Ernst', 'Esbjörn', 'Eskil', 'Eugén', 'Eugen', 'Evald', 'Eve', 'Evert', | ||
'Fabian', 'Felix', 'Ferdinand', 'Filip', 'Fingal', 'Finn', 'Folke', 'Frank', 'Frans', 'Franz', 'Fred', 'Fredrik', 'Fridolf', 'Friedrich', 'Fritiof', 'Fritjof', 'Frits', 'Fritz', | ||
'Gabriel', 'Georg', 'George', 'Gerhard', 'Gert', 'Gideon', 'Gilbert', 'Gillis', 'Glenn', 'Gottfrid', 'Gotthard', 'Greger', 'Gudmund', 'Gunder', 'Gunnar', 'Gustaf', 'Gustav', 'Göran', 'Görgen', 'Gösta', 'Göte', | ||
'Hadar', 'Halvar', 'Halvard', 'Hans', 'Hans-Erik', 'Hans-Olof', 'Hans-Åke', 'Harald', 'Hardy', 'Harry', 'Hartvig', 'Hasse', 'Heinrich', 'Heinz', 'Helge', 'Helmer', 'Henning', 'Henric', 'Henrik', 'Henry', 'Herbert', 'Heribert', 'Herman', 'Hilbert', 'Hilding', 'Hilmer', 'Hjalmar', 'Holger', 'Holmfrid', 'Hubert', 'Hugo', 'Håkan', | ||
'Inge', 'Ingemar', 'Ingmar', 'Ingvald', 'Ingvar', 'Isak', 'Isidor', 'Ivan', 'Ivar', | ||
'Jack', 'Jacob', 'Jakob', 'James', 'Jan', 'Janne', 'Jan-Eric', 'Jan-Erik', 'Jan-Olof', 'Jan-Olov', 'Jan-Ove', 'Jan-Åke', 'Jarl', 'Jean', 'Jens', 'Jerker', 'Jerry', 'Jesper', 'Jim', 'Jimmy', 'Joachim', 'Joacim', 'Joakim', 'Joel', 'Johan', 'Johannes', 'John', 'Johnny', 'Johny', 'Jon', 'Jonas', 'Jonny', 'Josef', 'Juhani', 'Julius', 'Justus', 'Jöns', 'Jörgen', | ||
'Kai', 'Kaj', 'Kalevi', 'Karl', 'Karl-Axel', 'Karl-Erik', 'Karl-Gunnar', 'Karl-Gustaf', 'Karl-Gustav', 'Karl-Johan', 'Kennert', 'Kennet', 'Kenneth', 'Kenny', 'Kent', 'Kenth', 'Kjell', 'Kjell-Åke', 'Klas', 'Knut', 'Konrad', 'Konstantin', 'Krister', 'Kristian', 'Kristoffer', 'Kurt', 'Kåre', | ||
'Lage', 'Lambert', 'Lars', 'Lars-Eric', 'Lars-Erik', 'Lars-Gunnar', 'Lars-Göran', 'Lars-Olof', 'Lars-Olov', 'Lars-Ove', 'Lars-Åke', 'Laurentius', 'Leander', 'Leif', 'Lennart', 'Leo', 'Leon', 'Leonard', 'Leopold', 'Levi', 'Levin', 'Linné', 'Linus', 'Lorentz', 'Louis', 'Ludvig', | ||
'Magni', 'Magnus', 'Malkolm', 'Malte', 'Manfred', 'Manne', 'Marcus', 'Markus', 'Martin', 'Mathias', 'Mats', 'Matti', 'Mattias', 'Matts', 'Maurits', 'Mauritz', 'Max', 'Melker', 'Micael', 'Michael', 'Mickael', 'Mikael', 'Morgan', 'Måns', 'Mårten', | ||
'Napoleon', 'Natanael', 'Nicklas', 'Niclas', 'Niklas', 'Nikolaus', 'Nils', 'Nils-Erik', 'Nore', | ||
'Odd', 'Ola', 'Olaus', 'Olav', 'Olavi', 'Ole', 'Oliver', 'Olle', 'Olof', 'Olov', 'Orvar', 'Oscar', 'Oskar', 'Ossian', 'Osvald', 'Otto', 'Ove', 'Owe', | ||
'Patric', 'Patrick', 'Patrik', 'Paul', 'Peder', 'Per', 'Percy', 'Per-Anders', 'Per-Arne', 'Per-Erik', 'Per-Ola', 'Per-Olof', 'Per-Olov', 'Per-Åke', 'Peter', 'Petrus', 'Petter', 'Pierre', 'Pontus', 'Pär', | ||
'Ragnar', 'Ragnvald', 'Ralf', 'Ralph', 'Raymond', 'Reidar', 'Reine', 'Reinhold', 'Reino', 'Richard', 'Rickard', 'Rikard', 'Robert', 'Roger', 'Roine', 'Roland', 'Rolf', 'Ronald', 'Ronnie', 'Ronny', 'Roy', 'Ruben', 'Rudolf', 'Runar', 'Rune', 'Runo', 'Rutger', | ||
'Salomon', 'Sam', 'Samuel', 'Sanfrid', 'Sebastian', 'Set', 'Seth', 'Seved', 'Severin', 'Sigfrid', 'Sigmund', 'Signar', 'Sigurd', 'Sigvard', 'Simon', 'Sivert', 'Sixten', 'Sonny', 'Staffan', 'Stanley', 'Stefan', 'Stellan', 'Sten', 'Stephan', 'Steve', 'Stig', 'Sture', 'Sune', 'Svante', 'Sven', 'Sven-Erik', 'Sven-Olof', 'Sven-Olov', 'Sven-Åke', 'Sverker', 'Sölve', 'Sören', | ||
'Tage', 'Ted', 'Teodor', 'Theodor', 'Thomas', 'Thor', 'Thorbjörn', 'Thord', 'Thore', 'Thorsten', 'Thorvald', 'Thure', 'Tobias', 'Toivo', 'Tom', 'Tomas', 'Tommy', 'Tonny', 'Tony', 'Tor', 'Torbjörn', 'Tord', 'Tore', 'Torgny', 'Torkel', 'Torsten', 'Torvald', 'Tryggve', 'Ture', 'Tyko', | ||
'Ulf', 'Ulrik', 'Uno', 'Urban', | ||
'Valdemar', 'Valentin', 'Valfrid', 'Vallentin', 'Valter', 'Veine', 'Verner', 'Victor', 'Vidar', 'Viggo', 'Viking', 'Viktor', 'Vilgot', 'Vilhelm', 'Villiam', 'Villy', 'Vincent', 'Vitalis', | ||
'Waldemar', 'Walter', 'Werner', 'Wilhelm', 'William', 'Willy', | ||
'Yngve', | ||
'Åke', | ||
'Örjan', 'Östen' | ||
); | ||
|
||
/** | ||
* @var array Swedish common last names | ||
* @link http://www.scb.se/sv_/Hitta-statistik/Statistik-efter-amne/Befolkning/Amnesovergripande-statistik/Namnstatistik/30898/2012A01x/Samtliga-folkbokforda--Efternamn-topplistor/Efternamn-topp-100/ | ||
*/ | ||
protected static $lastName = array( | ||
|
||
'Abrahamsson', 'Andersson', 'Andreasson', 'Arvidsson', 'Axelsson', | ||
'Bengtsson', 'Berg', 'Berggren', 'Berglund', 'Bergman', 'Bergqvist', 'Bergström', 'Björk', 'Björklund', 'Blom', 'Blomqvist', | ||
'Claesson', | ||
'Dahlberg', 'Danielsson', | ||
'Engström', 'Ek', 'Eklund', 'Ekström', 'Eliasson', 'Eriksson', | ||
'Falk', 'Forsberg', 'Fransson', 'Fredriksson', | ||
'Gunnarsson', 'Gustafsson', | ||
'Hansen', 'Hansson', 'Hedlund', 'Hellström', 'Henriksson', 'Hermansson', 'Holm', 'Holmberg', 'Holmgren', 'Holmqvist', 'Håkansson', | ||
'Isaksson', 'Ivarsson', | ||
'Jakobsson', 'Jansson', 'Johansson', 'Jonasson', 'Jonsson', 'Jönsson', | ||
'Karlsson', | ||
'Larsson', 'Lind', 'Lindberg', 'Lindgren', 'Lindholm', 'Lindqvist', 'Lindström', 'Lund', 'Lundberg', 'Lundgren', 'Lundin', 'Lundqvist', 'Lundström', 'Löfgren', | ||
'Magnusson', 'Martinsson', 'Mattsson', 'Månsson', 'Mårtensson', | ||
'Nilsson', 'Norberg', 'Nordin', 'Nordström', 'Nyberg', 'Nyström', | ||
'Olofsson', 'Olsson', | ||
'Persson', 'Pettersson', 'Pålsson', | ||
'Samuelsson', 'Sandberg', 'Sandström', 'Sjöberg', 'Sjögren', 'Ström', 'Strömberg', 'Sundberg', 'Sundqvist', 'Sundström', 'Svensson', 'Söderberg', | ||
'Viklund', | ||
'Wallin', 'Wikström', | ||
'Åberg', 'Åkesson', 'Åström', | ||
'Öberg' | ||
); | ||
|
||
/** | ||
* National Personal Identity number (personnummer) | ||
* @link http://en.wikipedia.org/wiki/Personal_identity_number_(Sweden) | ||
* @param \DateTime $birthdate | ||
* @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE | ||
* @return string on format XXXXXX-XXXX | ||
*/ | ||
public function personalIdentityNumber(\DateTime $birthdate = null, $gender = null) | ||
{ | ||
if (!$birthdate) { | ||
$birthdate = \Faker\Provider\DateTime::dateTimeThisCentury(); | ||
} | ||
$datePart = $birthdate->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 | ||
* | ||
* This is a naive implementation that only works | ||
* specifically for numbered strings of size 9 | ||
* | ||
* @link http://en.wikipedia.org/wiki/Luhn_algorithm | ||
* @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 == 10 ? 0 : $checksum; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
<?php | ||
|
||
namespace Faker\Provider\sv_SE; | ||
|
||
class PhoneNumber extends \Faker\Provider\PhoneNumber | ||
{ | ||
/** | ||
* @var array Swedish phone number formats | ||
*/ | ||
protected static $formats = array( | ||
'08-### ### ##', | ||
'0%#-### ## ##', | ||
'0%########', | ||
'+46 (0)%## ### ###', | ||
'+46(0)%########', | ||
'+46 %## ### ###', | ||
'+46%########', | ||
|
||
'08-### ## ##', | ||
'0%#-## ## ##', | ||
'0%##-### ##', | ||
'0%#######', | ||
'+46 (0)8 ### ## ##', | ||
'+46 (0)%# ## ## ##', | ||
'+46 (0)%## ### ##', | ||
'+46 (0)%#######', | ||
'+46(0)%#######', | ||
'+46%#######', | ||
|
||
'08-## ## ##', | ||
'0%#-### ###', | ||
'0%#######', | ||
'+46 (0)%######', | ||
'+46(0)%######', | ||
'+46%######', | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
<?php | ||
|
||
namespace Faker\Test\Provider\sv_SE; | ||
|
||
use Faker\Generator; | ||
use Faker\Provider\sv_SE\Person; | ||
|
||
class PersonTest extends \PHPUnit_Framework_TestCase | ||
{ | ||
/** @var Generator */ | ||
protected $faker; | ||
|
||
public function setUp() | ||
{ | ||
$faker = new Generator(); | ||
$faker->addProvider(new Person($faker)); | ||
$this->faker = $faker; | ||
} | ||
|
||
public function provideSeedAndExpectedReturn() | ||
{ | ||
return array( | ||
array(1, '720727', '720727-5798'), | ||
array(2, '710414', '710414-5664'), | ||
array(3, '591012', '591012-4519'), | ||
array(4, '180307', '180307-0356'), | ||
array(5, '820904', '820904-7748') | ||
); | ||
} | ||
|
||
/** | ||
* @dataProvider provideSeedAndExpectedReturn | ||
*/ | ||
public function testPersonalIdentityNumber($seed, $birthdate, $expected) | ||
{ | ||
$faker = $this->faker; | ||
$faker->seed($seed); | ||
|
||
$this->assertEquals( | ||
$expected, | ||
$faker->personalIdentityNumber(\DateTime::createFromFormat('ymd', $birthdate)) | ||
); | ||
} | ||
|
||
public function testUsesOddValuesForMales() | ||
{ | ||
$faker = $this->faker; | ||
$faker->seed(1); | ||
|
||
$this->assertEquals( | ||
'720727-5715', | ||
$faker->personalIdentityNumber(\DateTime::createFromFormat('ymd', '720727'), 'male') | ||
); | ||
} | ||
|
||
public function testUsesEvenValuesForFemales() | ||
{ | ||
$faker = $this->faker; | ||
$faker->seed(1); | ||
|
||
$this->assertEquals( | ||
'720727-5707', | ||
$faker->personalIdentityNumber(\DateTime::createFromFormat('ymd', '720727'), 'female') | ||
); | ||
|
||
} | ||
} |