Skip to content

Commit

Permalink
Make sure we can use the extensions (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
Nyholm committed Jan 16, 2021
1 parent 4e4e5b8 commit 01d7115
Show file tree
Hide file tree
Showing 12 changed files with 352 additions and 174 deletions.
56 changes: 55 additions & 1 deletion .github/workflows/static-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,58 @@ jobs:
- name: Run Psalm
run: |
vendor/bin/psalm --no-progress --output-format=github
vendor/bin/psalm --no-progress --output-format=github --shepherd
php-cs-fixer:
name: php-cs-fixer

runs-on: ubuntu-latest

strategy:
matrix:
php-version:
- 7.1

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
coverage: none
extensions: intl
php-version: ${{ matrix.php-version }}

- name: Determine composer cache directory
id: composer-cache
run: echo "::set-output name=directory::$(composer config cache-dir)"

- name: Cache dependencies installed with composer
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.directory }}
key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}
restore-keys: |
composer-${{ runner.os }}-${{ matrix.php-version }}-
composer-${{ runner.os }}-
composer-
- name: Download dependencies
run: |
composer update --no-interaction --no-progress --optimize-autoloader
composer bin php-cs-fixer install --no-interaction --no-progress --optimize-autoloader
- name: Cache cache file for php-cs-fixer
uses: actions/cache@v2
with:
path: .php_cs.cache
key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}
restore-keys: |
composer-${{ runner.os }}-${{ matrix.php-version }}-
composer-${{ runner.os }}-
composer-
- name: Run php-cs-fixer
run: |
vendor/bin/php-cs-fixer fix --diff --diff-format=udiff --dry-run --verbose
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
/vendor/
/composer.lock
composer.lock
.php_cs.cache
14 changes: 14 additions & 0 deletions .php_cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

$finder = PhpCsFixer\Finder::create()
->in('src');

$config = new PhpCsFixer\Config('faker');

return $config
->setFinder($finder)
->setRiskyAllowed(true)
->setRules([
'@PSR2' => true,
'@Symfony' => true,
]);
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

[![Packagist Downloads](https://img.shields.io/packagist/dm/FakerPHP/Swedish)](https://packagist.org/packages/fakerphp/swedish)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/FakerPHP/Swedish/Continuous%20Integration/main)](https://github.com/FakerPHP/Swedish/actions)
[![StyleCI](https://github.styleci.io/repos/307658860/shield?branch=main&style=flat)](https://github.styleci.io/repos/307658860?branch=main)

Swedish specific extensions for Faker

Expand All @@ -23,11 +22,11 @@ Full documentation can be found over on [fakerphp.github.io](https://fakerphp.gi
Use `Faker\Swedish\Factory::sweden()` to create and initialize a faker generator with Swedish extensions.

```php
<?php
require_once 'vendor/autoload.php';

// use the factory to create a Faker\Generator instance
$faker = Faker\Swedish\Factory::sweden();

echo $faker->name();
// 'Åke Svensson';
```
Expand Down
137 changes: 66 additions & 71 deletions src/Address.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,35 @@

namespace Faker\Swedish;

class Address
use Faker\Extension\AddressExtension;
use Faker\Extension\GeneratorAwareExtension;
use Faker\Extension\GeneratorAwareExtensionTrait;
use Faker\Extension\Helper;

class Address implements AddressExtension, GeneratorAwareExtension
{
use GeneratorAwareExtensionTrait;

private $buildingNumber = ['%###', '%##', '%#', '%#?', '%', '%?'];

private $streetPrefix = [
'Stor', 'Små', 'Lill', 'Sjö', 'Kungs', 'Drottning', 'Hamn', 'Brunns', 'Linné', 'Vasa', 'Ring', 'Freds'
'Stor', 'Små', 'Lill', 'Sjö', 'Kungs', 'Drottning', 'Hamn', 'Brunns', 'Linné', 'Vasa', 'Ring', 'Freds',
];

private $streetSuffix = [
'vägen', 'gatan', 'gränd', 'stigen', 'backen', 'liden'
'vägen', 'gatan', 'gränd', 'stigen', 'backen', 'liden',
];

private $streetSuffixWord = [
'Allé', 'Gata', 'Väg', 'Backe'
'Allé', 'Gata', 'Väg', 'Backe',
];

private $postcode = ['%####', '%## ##'];

/**
* @var array Swedish city names
* @link http://sv.wikipedia.org/wiki/Lista_%C3%B6ver_Sveriges_t%C3%A4torter
*
* @see http://sv.wikipedia.org/wiki/Lista_%C3%B6ver_Sveriges_t%C3%A4torter
*/
private $cityNames = [
'Abbekås', 'Abborrberget', 'Agunnaryd', 'Alberga', 'Alby', 'Alfta', 'Algutsrum', 'Alingsås', 'Allerum', 'Almunge', 'Alsike', 'Alstad', 'Alster', 'Alsterbro', 'Alstermo', 'Alunda', 'Alvesta', 'Alvhem', 'Alvik', 'Alvik', 'Ambjörby', 'Ambjörnarp', 'Ammenäs', 'Andalen', 'Anderslöv', 'Anderstorp', 'Aneby', 'Angelstad', 'Angered', 'Ankarsrum', 'Ankarsvik', 'Anneberg', 'Anneberg', 'Annelund', 'Annelöv', 'Antnäs', 'Aplared', 'Arboga', 'Arbrå', 'Ardala', 'Arentorp', 'Arild', 'Arjeplog', 'Arkelstorp', 'Arnäsvall', 'Arnö', 'Arontorp', 'Arvidsjaur', 'Arvika', 'Aröd och Timmervik', 'Askeby', 'Askersby', 'Askersund', 'Asmundtorp', 'Asperö', 'Aspås', 'Avan', 'Avesta', 'Axvall',
Expand Down Expand Up @@ -50,101 +58,88 @@ class Address
'Zinkgruvan',
'Åby', 'Åby', 'Åbyggeby', 'Åbytorp', 'Åhus', 'Åkarp', 'Åkers styckebruk', 'Åkersberga', 'Ålberga', 'Åled', 'Ålem', 'Åmmeberg', 'Åmot', 'Åmotfors', 'Åmsele', 'Åmynnet', 'Åmål', 'Ånge', 'Ånäset', 'Åre', 'Årjäng', 'Årstad', 'Årsunda', 'Åryd', 'Åryd', 'Ås', 'Ås', 'Åsa', 'Åsarne', 'Åsarp', 'Åsbro', 'Åsby', 'Åseda', 'Åsele', 'Åselstad', 'Åsen', 'Åsenhöga', 'Åsensbruk', 'Åshammar', 'Åsljunga', 'Åstol', 'Åstorp', 'Återvall', 'Åtorp', 'Åtvidaberg',
'Älandsbro', 'Älgarås', 'Älghult', 'Älmhult', 'Älmsta', 'Älta', 'Älvdalen', 'Älvkarleby', 'Älvnäs', 'Älvsbyn', 'Älvsered', 'Älvängen', 'Äng', 'Änge', 'Ängelholm', 'Ängsholmen', 'Ängsvik', 'Äppelbo', 'Ärla', 'Äsköping', 'Äspered', 'Äsperöd', 'Ätran',
'Öbonäs', 'Öckerö', 'Ödeborg', 'Ödeshög', 'Ödsmål', 'Ödåkra', 'Öggestorp', 'Öjersjö', 'Ölmanäs', 'Ölmbrotorp', 'Ölme', 'Ölmstad', 'Ölsta', 'Önneköp', 'Önnestad', 'Örbyhus', 'Örebro', 'Öregrund', 'Örkelljunga', 'Örnsköldsvik', 'Örserum', 'Örsjö', 'Örslösa', 'Örsundsbro', 'Örtagården', 'Örtofta', 'Örviken', 'Ösmo', 'Östadkulle', 'Östansjö', 'Östavall', 'Österbybruk', 'Österbymo', 'Österforse', 'Österfärnebo', 'Österhagen och Bergliden', 'Österslöv', 'Österstad', 'Östersund', 'Östervåla', 'Östhammar', 'Östhamra', 'Östmark', 'Östnor', 'Östorp och Ådran', 'Östra Bispgården', 'Östra Frölunda', 'Östra Grevie', 'Östra Husby', 'Östra Kallfors', 'Östra Karup', 'Östra Ljungby', 'Östra Ryd', 'Östra Sönnarslöv', 'Östra Tommarp', 'Östra Ånneröd', 'Östraby', 'Överboda', 'Överhörnäs', 'Överkalix', 'Överlida', 'Övertorneå', 'Överum', 'Övre Soppero', 'Övre Svartlå', 'Öxabäck', 'Öxeryd'
];

private $cityFormats = [
'{{cityName}}'
];

private $state = [];

private $stateAbbr = [];

private $country = [
'Afghanistan', 'Albanien', 'Algeriet', 'Amerikanska Jungfruöarna', 'Amerikanska Samoa', 'Andorra', 'Angola', 'Anguilla', 'Antarktis', 'Antigua och Barbuda', 'Argentina', 'Armenien', 'Aruba', 'Australien', 'Azerbajdzjan',
'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belgien', 'Belize', 'Benin', 'Bermuda', 'Bhutan', 'Bolivia', 'Bosnien och Hercegovina', 'Botswana', 'Bouvetön', 'Brasilien', 'Brittiska Indiska oceanöarna', 'Brittiska Jungfruöarna', 'Brunei', 'Bulgarien', 'Burkina Faso', 'Burundi',
'Caymanöarna', 'Centralafrikanska republiken', 'Chile', 'Colombia', 'Cooköarna', 'Costa Rica', 'Cypern',
'Danmark', 'Djibouti', 'Dominica', 'Dominikanska republiken',
'Ecuador', 'Egypten', 'Ekvatorialguinea', 'El Salvador', 'Elfenbenskusten', 'Eritrea', 'Estland', 'Etiopien',
'Falklandsöarna', 'Fiji', 'Filippinerna', 'Finland', 'Frankrike', 'Franska Guyana', 'Franska Polynesien', 'Franska Sydterritorierna', 'Färöarna', 'Förenade Arabemiraten',
'Gabon', 'Gambia', 'Georgien', 'Ghana', 'Gibraltar', 'Grekland', 'Grenada', 'Grönland', 'Guadeloupe', 'Guam', 'Guatemala', 'Guernsey', 'Guinea', 'Guinea-Bissau', 'Guyana',
'Haiti', 'Heard- och McDonaldöarna', 'Honduras', 'Hongkong (S.A.R. Kina)',
'Indien', 'Indonesien', 'Irak', 'Iran', 'Irland', 'Island', 'Isle of Man', 'Israel', 'Italien',
'Jamaica', 'Japan', 'Jemen', 'Jersey', 'Jordanien', 'Julön',
'Kambodja', 'Kamerun', 'Kanada', 'Kap Verde', 'Kazakstan', 'Kenya', 'Kina', 'Kirgizistan', 'Kiribati', 'Kokosöarna', 'Komorerna', 'Kongo-Brazzaville', 'Kongo-Kinshasa', 'Kroatien', 'Kuba', 'Kuwait',
'Laos', 'Lesotho', 'Lettland', 'Libanon', 'Liberia', 'Libyen', 'Liechtenstein', 'Litauen', 'Luxemburg',
'Macao (S.A.R. Kina)', 'Madagaskar', 'Makedonien', 'Malawi', 'Malaysia', 'Maldiverna', 'Mali', 'Malta', 'Marocko', 'Marshallöarna', 'Martinique', 'Mauretanien', 'Mauritius', 'Mayotte', 'Mexiko', 'Mikronesien', 'Moldavien', 'Monaco', 'Mongoliet', 'Montenegro', 'Montserrat', 'Moçambique', 'Myanmar',
'Namibia', 'Nauru', 'Nederländerna', 'Nederländska Antillerna', 'Nepal', 'Nicaragua', 'Niger', 'Nigeria', 'Niue', 'Nordkorea', 'Nordmarianerna', 'Norfolkön', 'Norge', 'Nya Kaledonien', 'Nya Zeeland',
'Oman',
'Pakistan', 'Palau', 'Palestinska territoriet', 'Panama', 'Papua Nya Guinea', 'Paraguay', 'Peru', 'Pitcairn', 'Polen', 'Portugal', 'Puerto Rico',
'Qatar',
'Rumänien', 'Rwanda', 'Ryssland', 'Réunion',
'S:t Barthélemy', 'S:t Helena', 'S:t Kitts och Nevis', 'S:t Lucia', 'S:t Martin', 'S:t Pierre och Miquelon', 'S:t Vincent och Grenadinerna', 'Salomonöarna', 'Samoa', 'San Marino', 'Saudiarabien', 'Schweiz', 'Senegal', 'Serbien', 'Serbien och Montenegro', 'Seychellerna', 'Sierra Leone', 'Singapore', 'Slovakien', 'Slovenien', 'Somalia', 'Spanien', 'Sri Lanka', 'Storbritannien', 'Sudan', 'Surinam', 'Svalbard och Jan Mayen', 'Sverige', 'Swaziland', 'Sydafrika', 'Sydgeorgien och Södra Sandwichöarna', 'Sydkorea', 'Syrien', 'São Tomé och Príncipe',
'Tadzjikistan', 'Taiwan', 'Tanzania', 'Tchad', 'Thailand', 'Tjeckien', 'Togo', 'Tokelau', 'Tonga', 'Trinidad och Tobago', 'Tunisien', 'Turkiet', 'Turkmenistan', 'Turks- och Caicosöarna', 'Tuvalu', 'Tyskland',
'USA', 'USA:s yttre öar', 'Uganda', 'Ukraina', 'Ungern', 'Uruguay', 'Uzbekistan',
'Vanuatu', 'Vatikanstaten', 'Venezuela', 'Vietnam', 'Vitryssland', 'Västsahara', 'Wallis- och Futunaöarna',
'Zambia', 'Zimbabwe',
'Åland',
'Österrike', 'Östtimor'
'Öbonäs', 'Öckerö', 'Ödeborg', 'Ödeshög', 'Ödsmål', 'Ödåkra', 'Öggestorp', 'Öjersjö', 'Ölmanäs', 'Ölmbrotorp', 'Ölme', 'Ölmstad', 'Ölsta', 'Önneköp', 'Önnestad', 'Örbyhus', 'Örebro', 'Öregrund', 'Örkelljunga', 'Örnsköldsvik', 'Örserum', 'Örsjö', 'Örslösa', 'Örsundsbro', 'Örtagården', 'Örtofta', 'Örviken', 'Ösmo', 'Östadkulle', 'Östansjö', 'Östavall', 'Österbybruk', 'Österbymo', 'Österforse', 'Österfärnebo', 'Österhagen och Bergliden', 'Österslöv', 'Österstad', 'Östersund', 'Östervåla', 'Östhammar', 'Östhamra', 'Östmark', 'Östnor', 'Östorp och Ådran', 'Östra Bispgården', 'Östra Frölunda', 'Östra Grevie', 'Östra Husby', 'Östra Kallfors', 'Östra Karup', 'Östra Ljungby', 'Östra Ryd', 'Östra Sönnarslöv', 'Östra Tommarp', 'Östra Ånneröd', 'Östraby', 'Överboda', 'Överhörnäs', 'Överkalix', 'Överlida', 'Övertorneå', 'Överum', 'Övre Soppero', 'Övre Svartlå', 'Öxabäck', 'Öxeryd',
];

/**
* @var array Swedish street name formats
*/
private $streetNameFormats = [
'{{lastName}}{{streetSuffix}}',
'{{lastName}}{{streetSuffix}}',
'{{firstName}}{{streetSuffix}}',
'{{firstName}}{{streetSuffix}}',
'{{streetPrefix}}{{streetSuffix}}',
'{{streetPrefix}}{{streetSuffix}}',
'{{streetPrefix}}{{streetSuffix}}',
'{{streetPrefix}}{{streetSuffix}}',
'{{lastName}} {{streetSuffixWord}}'
'{{lastName}}{{Faker\Swedish\Address->streetSuffix}}',
'{{lastName}}{{Faker\Swedish\Address->streetSuffix}}',
'{{firstName}}{{Faker\Swedish\Address->streetSuffix}}',
'{{firstName}}{{Faker\Swedish\Address->streetSuffix}}',
'{{Faker\Swedish\Address->streetPrefix}}{{Faker\Swedish\Address->streetSuffix}}',
'{{Faker\Swedish\Address->streetPrefix}}{{Faker\Swedish\Address->streetSuffix}}',
'{{Faker\Swedish\Address->streetPrefix}}{{Faker\Swedish\Address->streetSuffix}}',
'{{Faker\Swedish\Address->streetPrefix}}{{Faker\Swedish\Address->streetSuffix}}',
'{{lastName}} {{Faker\Swedish\Address->streetSuffixWord}}',
];

/**
* @var array Swedish street address formats
*/
private $streetAddressFormats = [
'{{streetName}} {{buildingNumber}}'
'{{Faker\Swedish\Address->streetName}} {{Faker\Swedish\Address->buildingNumber}}',
];

/**
* @var array Swedish address formats
*/
private $addressFormats = [
"{{streetAddress}}\n{{postcode}} {{city}}"
"{{Faker\Swedish\Address->streetAddress}}\n{{Faker\Swedish\Address->postcode}} {{Faker\Swedish\Address->city}}",
];

/**
* Randomly return a real city name
*
* @return string
*/
public function cityName()
public function buildingNumber(): string
{
return $this->cityNames[array_rand($this->cityNames)];
return strtoupper(Helper::bothify($this->buildingNumber[array_rand($this->buildingNumber)]));
}

public function streetSuffixWord()
public function address(): string
{
return $this->streetSuffixWord[array_rand($this->streetSuffixWord)];
// TODO
$format = Helper::randomElement($this->addressFormats);

return $this->generator->parse($format);
}

public function streetPrefix()
public function city(): string
{
return $this->streetPrefix[array_rand($this->streetPrefix)];
return Helper::randomElement($this->cityNames);
}

/**
* Randomly return a building number.
*
* @return string
*/
public function buildingNumber()
public function postcode(): string
{
return strtoupper(Helper::bothify($this->buildingNumber[array_rand($this->buildingNumber)]));
return Helper::numerify(Helper::randomElement($this->postcode));
}

public function streetName(): string
{
$format = Helper::randomElement($this->streetNameFormats);

return $this->generator->parse($format);
}

public function streetAddress(): string
{
// TODO
$format = Helper::randomElement($this->streetAddressFormats);

return $this->generator->parse($format);
}

public function streetPrefix(): string
{
return Helper::randomElement($this->streetPrefix);
}

public function streetSuffix(): string
{
return Helper::randomElement($this->streetSuffix);
}

public function streetSuffixWord(): string
{
return Helper::randomElement($this->streetSuffixWord);
}
}
31 changes: 13 additions & 18 deletions src/Company.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace Faker\Swedish;

use Faker\Extension\Extension;
use Faker\Extension\CompanyExtension;
use Faker\Extension\GeneratorAwareExtension;
use Faker\Extension\GeneratorAwareExtensionTrait;
use Faker\Extension\Helper;

class Company implements GeneratorAwareExtension
class Company implements GeneratorAwareExtension, CompanyExtension
{
use GeneratorAwareExtensionTrait;

Expand All @@ -19,37 +19,32 @@ class Company implements GeneratorAwareExtension
'{{lastName}} & {{lastName}} {{companySuffix}}',
'{{lastName}} & {{lastName}}',
'{{lastName}} och {{lastName}}',
'{{lastName}} och {{lastName}} {{companySuffix}}'
'{{lastName}} och {{lastName}} {{companySuffix}}',
];

private $companySuffix = ['AB', 'HB'];

private $jobTitles = ['Automationsingenjör', 'Bagare', 'Digital Designer', 'Ekonom', 'Ekonomichef', 'Elektronikingenjör', 'Försäljare', 'Försäljningschef', 'Innovationsdirektör', 'Investeringsdirektör', 'Journalist', 'Kock', 'Kulturstrateg', 'Läkare', 'Lokförare', 'Mäklare', 'Programmerare', 'Projektledare', 'Sjuksköterska', 'Utvecklare', 'UX Designer', 'Webbutvecklare'];
private $jobTitles = [
'Automationsingenjör', 'Bagare', 'Digital Designer', 'Ekonom', 'Ekonomichef',
'Elektronikingenjör', 'Försäljare', 'Försäljningschef', 'Innovationsdirektör',
'Investeringsdirektör', 'Journalist', 'Kock', 'Kulturstrateg', 'Läkare',
'Lokförare', 'Mäklare', 'Programmerare', 'Projektledare', 'Sjuksköterska',
'Utvecklare', 'UX Designer', 'Webbutvecklare',
];

/**
* @example 'Acme Ltd'
*
* @return string
*/
public function company()
public function company(): string
{
$format = Helper::randomElement($this->formats);

return $this->generator->parse($format);
}

/**
* @example 'Ltd'
*
* @return string
*/
public function companySuffix()
public function companySuffix(): string
{
return Helper::randomElement($this->companySuffix);
}


public function jobTitle()
public function jobTitle(): string
{
return Helper::randomElement($this->jobTitles);
}
Expand Down
Loading

0 comments on commit 01d7115

Please sign in to comment.