Skip to content
This repository has been archived by the owner on Dec 11, 2020. It is now read-only.

Commit

Permalink
Merge pull request #618 from ibrasho-forks/master
Browse files Browse the repository at this point in the history
Add ar_SA locale
  • Loading branch information
fzaninotto committed Aug 24, 2015
2 parents ee7ae45 + 317470c commit 47f3c54
Show file tree
Hide file tree
Showing 7 changed files with 695 additions and 54 deletions.
10 changes: 10 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -720,6 +720,16 @@ Fugiat non in itaque sunt nobis totam. Sed nesciunt est deleniti cumque alias. R

## Language specific formatters

### `Faker\Provider\ar_SA\Person`
```php
<?php

echo $faker->idNumber; // ID number
echo $faker->nationalIdNumber // Citizen ID number
echo $faker->foreignerIdNumber // Foreigner ID number

```

### `Faker\Provider\at_AT\Payment`
```php
<?php
Expand Down
56 changes: 2 additions & 54 deletions src/Faker/Provider/ar_JO/Text.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,61 +4,9 @@

class Text extends \Faker\Provider\Text
{

/**
* generates text string in arabic
*
* @example ' ولا النوم ولا القرار وكان يقال: لا يجد المريض لذة الطعام والشراب'
* @param integer $maxNbChars
* @param integer $indexSize
* @return string
* @throws \InvalidArgumentException
*/
public function realText($maxNbChars = 200, $indexSize = 2)
protected static function validStart($word)
{
if ($maxNbChars < 10) {
throw new \InvalidArgumentException('maxNbChars must be at least 10');
}

if ($indexSize < 1) {
throw new \InvalidArgumentException('indexSize must be at least 1');
}

if ($indexSize > 5) {
throw new \InvalidArgumentException('indexSize must be at most 5');
}

$words = $this->getConsecutiveWords($indexSize);
$result = array();
$resultLength = 0;
// take a random starting point
$next = static::randomKey($words);
while ($resultLength < $maxNbChars && isset($words[$next])) {
// fetch a random word to append
$word = static::randomElement($words[$next]);

// calculate next index
$currentWords = explode(' ', $next);

$currentWords[] = $word;
array_shift($currentWords);
$next = implode(' ', $currentWords);

if ($resultLength == 0 && !preg_match('/^\p{Arabic}/u', $word)) {
continue;
}
// append the element
$result[] = $word;
$resultLength += strlen($word) + 1;
}

// remove the element that caused the text to overflow
array_pop($result);

// build result
$result = implode(' ', $result);

return $result.'.';
return preg_match('/^\p{Arabic}/u', $word);
}

/**
Expand Down
146 changes: 146 additions & 0 deletions src/Faker/Provider/ar_SA/Address.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
<?php

namespace Faker\Provider\ar_SA;

class Address extends \Faker\Provider\Address
{
protected static $streetPrefix = array('شارع', 'طريق', 'ممر');

/**
* @link https://ar.wikipedia.org/wiki/%D9%82%D8%A7%D8%A6%D9%85%D8%A9_%D9%85%D8%AF%D9%86_%D8%A7%D9%84%D8%B3%D8%B9%D9%88%D8%AF%D9%8A%D8%A9
*/
protected static $cityName = array(
'الرياض', 'جدة', 'مكة', 'المدينة المنورة', 'تبوك', 'الدمام', 'الأحساء', 'القطيف', 'خميس مشيط', 'المظيلف', 'الهفوف',
'المبرز', 'الطائف', 'نجران', 'حفر الباطن', 'الجبيل', 'ضباء', 'الخرج', 'الثقبة', 'ينبع البحر', 'الخبر', 'عرعر', 'الحوية',
'عنيزة', 'سكاكا', 'جيزان', 'القريات', 'الظهران', 'الزلفي', 'الباحة', 'الرس', 'وادي الدواسر', 'بيشة', 'سيهات', 'شرورة',
'الدوادمي', 'الأفلاج',
);

/**
* @link https://ar.wikipedia.org/wiki/%D8%A7%D9%84%D8%AA%D9%82%D8%B3%D9%8A%D9%85_%D8%A7%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D9%8A_%D9%84%D9%84%D9%85%D9%85%D9%84%D9%83%D8%A9_%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9_%D8%A7%D9%84%D8%B3%D8%B9%D9%88%D8%AF%D9%8A%D8%A9
*/
protected static $subdivisions = array(
'منطقة الرياض', 'منطقة القصيم',
'منطقة مكة المكرمة', 'منطقة المدينة المنورة',
'منطقة حائل', 'منطقة الجوف', 'منطقة تبوك', 'منطقة الحدود الشمالية',
'منطقة عسير', 'منطقة جازان', 'منطقة نجران', 'منطقة الباحة',
'المنطقة الشرقية',
);

/**
* @link https://ar.wikipedia.org/wiki/%D9%82%D8%A7%D8%A6%D9%85%D8%A9_%D9%85%D8%AD%D8%A7%D9%81%D8%B8%D8%A7%D8%AA_%D8%A7%D9%84%D8%B3%D8%B9%D9%88%D8%AF%D9%8A%D8%A9
*/
protected static $governorates = array(
'الرياض', 'الدرعية', 'الخرج', 'الدوادمي', 'المجمعة', 'القويعية', 'الأفلاج', 'وادي الدواسر', 'الزلفي', 'شقراء', 'حوطة بني تميم', 'عفيف', 'الغاط', 'السليل', 'ضرما', 'المزاحمية', 'رماح', 'ثادق', 'حريملاء', 'الحريق', 'مرات',
'مكة المكرمة', 'جدة', 'الطائف', 'القنفذة', 'الليث', 'رابغ', 'خليص', 'الخرمة', 'رنية', 'تربة', 'الجموم', 'الكامل', 'المويه', 'ميسان', 'أضم', 'العرضيات', 'بحرة',
'المدينة المنورة', 'ينبع', 'العلا', 'مهد الذهب', 'الحناكية', 'بدر', 'خيبر', 'العيص', 'وادي الفرع',
'بريدة', 'عنيزة', 'الرس', 'المذنب', 'البكيرية', 'البدائع', 'الأسياح', 'النبهانية', 'الشماسية', 'عيون الجواء', 'رياض الخبراء', 'عقلة الصقور', 'ضرية',
'الدمام', 'الأحساء', 'حفر الباطن', 'الجبيل', 'القطيف', 'الخبر', 'الخفجي', 'رأس تنورة', 'بقيق', 'النعيرية', 'قرية العليا', 'العديد',
'أبها', 'خميس مشيط', 'بيشة', 'النماص', 'محايل عسير', 'ظهران الجنوب', 'تثليث', 'سراة عبيدة', 'رجال ألمع', 'بلقرن', 'أحد رفيدة', 'المجاردة', 'البرك', 'بارق', 'تنومة', 'طريب',
'تبوك', 'الوجه', 'ضبا', 'تيماء', 'أملج', 'حقل', 'البدع',
'حائل', 'بقعاء', 'الغزالة', 'الشنان', 'الحائط', 'السليمي', 'الشملي', 'موقق', 'سميراء',
'عرعر', 'رفحاء', 'طريف', 'العويقيلة',
'جازان', 'صبيا', 'أبو عريش', 'صامطة', 'بيش', 'الدرب', 'الحرث', 'ضمد', 'الريث', 'جزر فرسان', 'الدائر', 'العارضة', 'أحد المسارحة', 'العيدابي', 'فيفاء', 'الطوال', 'هروب',
'نجران', 'شرورة', 'حبونا', 'بدر الجنوب', 'يدمه', 'ثار', 'خباش', 'الخرخير',
'الباحة', 'بلجرشي', 'المندق', 'المخواة', 'قلوة', 'العقيق', 'القرى', 'غامد الزناد', 'الحجرة', 'بني حسن',
'سكاكا', 'القريات', 'دومة الجندل', 'طبرجل'
);

protected static $buildingNumber = array('#####', '####', '##');

protected static $postcode = array('#####', '#####-####');

/**
* @link http://www.nationsonline.org/oneworld/countrynames_arabic.htm
*/
protected static $country = array(
'الكاريبي', 'أمريكا الوسطى', 'أنتيجوا وبربودا', 'أنجولا', 'أنجويلا', 'أندورا', 'اندونيسيا', 'أورجواي', 'أوروبا', 'أوزبكستان', 'أوغندا', 'أوقيانوسيا', 'أوقيانوسيا النائية', 'أوكرانيا', 'ايران', 'أيرلندا', 'أيسلندا', 'ايطاليا',
'بابوا غينيا الجديدة', 'باراجواي', 'باكستان', 'بالاو', 'بتسوانا', 'بتكايرن', 'بربادوس', 'برمودا', 'بروناي', 'بلجيكا', 'بلغاريا', 'بليز', 'بنجلاديش', 'بنما', 'بنين', 'بوتان', 'بورتوريكو', 'بوركينا فاسو', 'بوروندي', 'بولندا', 'بوليفيا', 'بولينيزيا', 'بولينيزيا الفرنسية', 'بيرو',
'تانزانيا', 'تايلند', 'تايوان', 'تركمانستان', 'تركيا', 'ترينيداد وتوباغو', 'تشاد', 'توجو', 'توفالو', 'توكيلو', 'تونجا', 'تونس', 'تيمور الشرقية',
'جامايكا', 'جبل طارق', 'جرينادا', 'جرينلاند', 'جزر الأنتيل الهولندية', 'جزر الترك وجايكوس', 'جزر القمر', 'جزر الكايمن', 'جزر المارشال', 'جزر الملديف', 'جزر الولايات المتحدة البعيدة الصغيرة', 'جزر أولان', 'جزر سليمان', 'جزر فارو', 'جزر فرجين الأمريكية', 'جزر فرجين البريطانية', 'جزر فوكلاند', 'جزر كوك', 'جزر كوكوس', 'جزر ماريانا الشمالية', 'جزر والس وفوتونا', 'جزيرة الكريسماس', 'جزيرة بوفيه', 'جزيرة مان', 'جزيرة نورفوك', 'جزيرة هيرد وماكدونالد', 'جمهورية افريقيا الوسطى', 'جمهورية التشيك', 'جمهورية الدومينيك', 'جمهورية الكونغو الديمقراطية', 'جمهورية جنوب افريقيا', 'جنوب آسيا', 'جنوب أوروبا', 'جنوب شرق آسيا', 'جنوب وسط آسيا', 'جواتيمالا', 'جوادلوب', 'جوام', 'جورجيا', 'جورجيا الجنوبية وجزر ساندويتش الجنوبية', 'جيبوتي', 'جيرسي',
'دومينيكا',
'رواندا', 'روسيا', 'روسيا البيضاء', 'رومانيا', 'روينيون',
'زامبيا', 'زيمبابوي',
'ساحل العاج', 'ساموا', 'ساموا الأمريكية', 'سانت بيير وميكولون', 'سانت فنسنت وغرنادين', 'سانت كيتس ونيفيس', 'سانت لوسيا', 'سانت مارتين', 'سانت هيلنا', 'سان مارينو', 'ساو تومي وبرينسيبي', 'سريلانكا', 'سفالبارد وجان مايان', 'سلوفاكيا', 'سلوفينيا', 'سنغافورة', 'سوازيلاند', 'سوريا', 'سورينام', 'سويسرا', 'سيراليون', 'سيشل',
'شرق آسيا', 'شرق افريقيا', 'شرق أوروبا', 'شمال افريقيا', 'شمال أمريكا', 'شمال أوروبا', 'شيلي',
'صربيا', 'صربيا والجبل الأسود',
'طاجكستان',
'عمان',
'غامبيا', 'غانا', 'غرب آسيا', 'غرب افريقيا', 'غرب أوروبا', 'غويانا', 'غيانا', 'غينيا', 'غينيا الاستوائية', 'غينيا بيساو',
'فانواتو', 'فرنسا', 'فلسطين', 'فنزويلا', 'فنلندا', 'فيتنام', 'فيجي',
'قبرص', 'قرغيزستان', 'قطر',
'كازاخستان', 'كاليدونيا الجديدة', 'كرواتيا', 'كمبوديا', 'كندا', 'كوبا', 'كوريا الجنوبية', 'كوريا الشمالية', 'كوستاريكا', 'كولومبيا', 'كومنولث الدول المستقلة', 'كيريباتي', 'كينيا',
'لاتفيا', 'لاوس', 'لبنان', 'لوكسمبورج', 'ليبيا', 'ليبيريا', 'ليتوانيا', 'ليختنشتاين', 'ليسوتو',
'مارتينيك', 'ماكاو الصينية', 'مالطا', 'مالي', 'ماليزيا', 'مايوت', 'مدغشقر', 'مصر', 'مقدونيا', 'ملاوي', 'منغوليا', 'موريتانيا', 'موريشيوس', 'موزمبيق', 'مولدافيا', 'موناكو', 'مونتسرات', 'ميانمار', 'ميكرونيزيا', 'ميلانيزيا',
'ناميبيا', 'نورو', 'نيبال', 'نيجيريا', 'نيكاراجوا', 'نيوزيلاندا', 'نيوي',
'هايتي', 'هندوراس', 'هولندا', 'هونج كونج الصينية',
'وسط آسيا', 'وسط افريقيا',
);

protected static $cityFormats = array(
'{{cityName}}',
);

protected static $streetNameFormats = array(
'{{streetPrefix}} {{firstName}} {{lastName}}',
);

protected static $streetAddressFormats = array(
'{{buildingNumber}} {{streetName}}',
'{{buildingNumber}} {{streetName}} {{secondaryAddress}}',
);

protected static $addressFormats = array(
"{{streetAddress}}\n{{city}}",
);

protected static $secondaryAddressFormats = array('شقة رقم. ##', 'عمارة رقم ##');

/**
* @example 'شرق'
*/
public static function cityPrefix()
{
return static::randomElement(static::$cityPrefix);
}

/**
* @example 'الرياض'
*/
public static function cityName()
{
return static::randomElement(static::$cityName);
}

/**
* @example 'شارع'
*/
public static function streetPrefix()
{
return static::randomElement(static::$streetPrefix);
}

/**
* @example 'شقة رقم. 350'
*/
public static function secondaryAddress()
{
return static::numerify(static::randomElement(static::$secondaryAddressFormats));
}

/**
* @example 'منطقة الرياض'
*/
public static function subdivision()
{
return static::randomElement(static::$subdivisions);
}

/**
* @example 'منطقة الرياض'
*/
public static function governorate()
{
return static::randomElement(static::$governorates);
}
}
63 changes: 63 additions & 0 deletions src/Faker/Provider/ar_SA/Company.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<?php

namespace Faker\Provider\ar_SA;

class Company extends \Faker\Provider\Company
{
protected static $formats = array(
'{{lastName}} {{companySuffix}}',
'{{companyPrefix}} {{lastName}} {{companySuffix}}',
'{{companyPrefix}} {{lastName}}',
);

protected static $bsWords = array(
array()
);

protected static $catchPhraseWords = array(
array('الخدمات','الحلول','الانظمة'),
array(
'الذهبية','الذكية','المتطورة','المتقدمة', 'الدولية', 'المتخصصه', 'السريعة',
'المثلى', 'الابداعية', 'المتكاملة', 'المتغيرة', 'المثالية'
),
);

protected static $companyPrefix = array('شركة', 'مؤسسة', 'مجموعة', 'مكتب', 'أكاديمية', 'معرض');

protected static $companySuffix = array('وأولاده', 'للمساهمة المحدودة', ' ذ.م.م', 'مساهمة عامة', 'وشركائه');

/**
* @example 'مؤسسة'
* @return string
*/
public function companyPrefix()
{
return static::randomElement(self::$companyPrefix);
}

/**
* @example 'الحلول المتقدمة'
*/
public function catchPhrase()
{
$result = array();
foreach (static::$catchPhraseWords as &$word) {
$result[] = static::randomElement($word);
}

return join($result, ' ');
}

/**
* @example 'integrate extensible convergence'
*/
public function bs()
{
$result = array();
foreach (static::$bsWords as &$word) {
$result[] = static::randomElement($word);
}

return join($result, ' ');
}
}
55 changes: 55 additions & 0 deletions src/Faker/Provider/ar_SA/Internet.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php

namespace Faker\Provider\ar_SA;

class Internet extends \Faker\Provider\Internet
{
protected static $userNameFormats = array(
'{{lastNameAscii}}.{{firstNameAscii}}',
'{{firstNameAscii}}.{{lastNameAscii}}',
'{{firstNameAscii}}##',
'?{{lastNameAscii}}',
);
protected static $safeEmailTld = array(
'com', 'jo', 'me', 'net', 'org',
);

protected static $tld = array(
'biz', 'com', 'info', 'sa', 'net', 'org',
);

protected static $lastNameAscii = array(
'abbad', 'abbadi', 'abbas', 'abulebbeh', 'flefel', 'hadi', 'hamad', 'hasan', 'jabri', 'kanaan', 'karam', 'maanee', 'melhem', 'nimry', 'obaisi', 'qasem', 'qawasmee', 'rabee', 'rashwani', 'shami', 'zaloum',
);
protected static $firstNameAscii = array(
'abd', 'abdullah', 'ahmad', 'akram', 'amr', 'bashar', 'bilal', 'fadi', 'ibrahim', 'khaled', 'layth', 'mohammad', 'mutaz', 'omar', 'osama', 'rami', 'saleem', 'samer', 'sami', 'yazan',
);

public static function lastNameAscii()
{
return static::randomElement(static::$lastNameAscii);
}

public static function firstNameAscii()
{
return static::randomElement(static::$firstNameAscii);
}

/**
* @example 'ahmad.abbadi'
*/
public function userName()
{
$format = static::randomElement(static::$userNameFormats);

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

/**
* @example 'wewebit.jo'
*/
public function domainName()
{
return static::randomElement(static::$lastNameAscii) . '.' . $this->tld();
}
}
Loading

0 comments on commit 47f3c54

Please sign in to comment.