Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions lib/src/animals.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import 'data/animals/animals_names.dart';
import 'package:faker/src/providers/base_providers.dart';
import 'random_generator.dart';

class Animal {
const Animal(this.random);
const Animal(this.random, this._provider);

final RandomGenerator random;
final AnimalsDataProvider _provider;

/// Generates an animal name.
///
/// Example:
/// ```dart
/// faker.animal.name();
/// ```
String name() => random.element(animalsNames);
String name() => random.element(_provider.animalsList());
}
94 changes: 94 additions & 0 deletions lib/src/data/animals/kr/animals_names.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
const animalNames = [
'개',
'당나귀',
'표범',
'토끼',
'비둘기',
'돌고래',
'염소',
'뱀장어',
'비글',
'오소리',
'햄스터',
'매',
'재규어',
'도마뱀',
'라마',
'코뿔소',
'웜뱃',
'양',
'나무늘보',
'라쿤',
'스라소니',
'여우원숭이',
'대왕고래',
'소',
'호랑이',
'치타',
'거북',
'알바트로스',
'개구리',
'자칼',
'거위',
'고릴라',
'오랑우탄',
'기린',
'코브라',
'사슴',
'치와와',
'코알라',
'친칠라',
'고슴도치',
'들소',
'미어캣',
'올빼미',
'두더지',
'왕도마뱀',
'노새',
'쥐',
'고양이',
'사자',
'곰',
'육지거북',
'산토끼',
'까마귀',
'고래',
'타조',
'에뮤',
'침팬지',
'영양',
'카멜레온',
'캥거루',
'도도새',
'얼룩말',
'황소',
'생쥐',
'독수리',
'오리',
'엘크',
'비버',
'뱀',
'말',
'흑표',
'코끼리',
'악어',
'암탉',
'물고기',
'여우',
'아르마딜로',
'늑대',
'원숭이',
'박쥐',
'낙타',
'하마',
'이구아나',
'해파리',
'주머니쥐',
'버팔로',
'수달',
'홍학',
'백조',
'멧돼지',
'매머드',
'공작',
];
16 changes: 13 additions & 3 deletions lib/src/faker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ import 'package:faker/src/geo.dart';
import 'package:faker/src/lorem.dart';
import 'package:faker/src/phone_number.dart';
import 'package:faker/src/providers/default_providers.dart';
import 'package:faker/src/providers/base_providers.dart';
import 'package:faker/src/providers/fa_providers.dart';
import 'package:faker/src/providers/kr_providers.dart';

import 'address.dart';
import 'animals.dart';
Expand All @@ -18,7 +20,6 @@ import 'internet.dart';
import 'job.dart';
import 'jwt.dart';
import 'person.dart';
import 'providers/base_providers.dart';
import 'random_generator.dart';
import 'sport.dart';
import 'vehicle.dart';
Expand Down Expand Up @@ -68,18 +69,27 @@ class Faker {
phoneNumber = PhoneNumber(random),
vehicle = Vehicle(random),
randomGenerator = random,
animal = Animal(random);
animal = Animal(random,
provider?.animalsDataProvider ?? DefaultAnimalsDataProvider());

factory Faker({int? seed, FakerDataProvider? provider}) =>
Faker.withGenerator(RandomGenerator(seed: seed), provider: provider);
}

class FakerDataProvider {
final AnimalsDataProvider? animalsDataProvider;
final LoremDataProvider? loremDataProvider;

FakerDataProvider({this.loremDataProvider});
FakerDataProvider({
this.animalsDataProvider,
this.loremDataProvider,
});
}

class FakerDataProviderFa extends FakerDataProvider {
FakerDataProviderFa() : super(loremDataProvider: LoremDataProviderFa());
}

class FakerDataProviderKr extends FakerDataProvider {
FakerDataProviderKr() : super(animalsDataProvider: AnimalsDataProviderKr());
}
17 changes: 17 additions & 0 deletions lib/src/phone_number.dart
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,21 @@ class PhoneNumber {
'+81 0###-###-####',
'+81 (0###) ###-####',
];
static const krPhoneNumberPatterns = [
// Standard 10-digit phone number formats
'010########',
'010-####-####',
'010.####.####',
// Standard 11-digit phone number formats
'01#########',
'01#-###-####',
'01#.###.####',
// Standard 11-digit phone number formats with country code
'+82-10-####-####',
'+82 10 #### ####',
'+82-1#-###-####',
'+82 1# ### ####',
];

const PhoneNumber(this.random);

Expand All @@ -131,4 +146,6 @@ class PhoneNumber {
String de() => random.fromPattern(dePhoneNumberPatterns);

String ja() => random.fromPattern(jaPhoneNumberPatterns);

String kr() => random.fromPattern(krPhoneNumberPatterns);
}
179 changes: 175 additions & 4 deletions lib/src/providers/base_providers.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,178 @@
abstract class LoremDataProvider {
/// Provides a list of lorem ipsum words that can be used to create fake data
List<String> wordsList();
// abstract class AddressDataProvider {
// /// Provides a list of cities that can be used to create fake data
// List<String> citiesList();

// /// Provides a list of countries that can be used to create fake data
// List<String> countriesList();

// /// Provides a list of country codes that can be used to create fake data
// List<String> countryCodesList();

// /// Provides a list of streets that can be used to create fake data
// List<String> streetsList();

// /// Provides a list of zip codes that can be used to create fake data
// List<String> zipCodesList();
// }

abstract class AnimalsDataProvider {
/// Provides a list of animal names that can be used to create fake data
List<String> animalsList();
}

// abstract class ColorsDataProvider {
// /// Provides a list of color names that can be used to create fake data
// List<String> colorNamesList();

// /// Provides a list of color hex codes that can be used to create fake data
// List<String> colorHexCodesList();
// }

// abstract class CompanyDataProvider {
// /// Provides a list of company names that can be used to create fake data
// List<String> companyNamesList();

// /// Provides a list of company suffixes that can be used to create fake data
// List<String> companySuffixesList();
// }

// abstract class ConferenceDataProvider {
// /// Provides a list of conference names that can be used to create fake data
// List<String> conferenceNamesList();
// }

// abstract class CurrencyDataProvider {
// /// Provides a list of currency names that can be used to create fake data
// List<String> currencyNamesList();

// /// Provides a list of currency codes that can be used to create fake data
// List<String> currencyCodesList();
// }

// abstract class DateDataProvider {
// /// Provides a list of months that can be used to create fake data
// List<String> monthsList();

// /// Provides a list of weekdays that can be used to create fake data
// List<String> weekdaysList();
// }

// abstract class FoodDataProvider {
// /// Provides a list of cuisines that can be used to create fake data
// List<String> cuisinesList();

// /// Provides a list of dishes that can be used to create fake data
// List<String> dishesList();

// /// Provides a list of restaurants that can be used to create fake data
// List<String> restaurantsList();
// }

// abstract class GeoDataProvider {
// /// Provides a list of continents that can be used to create fake data
// List<String> continentsList();

// /// Provides a list of countries that can be used to create fake data
// List<String> countriesList();

// /// Provides a list of country codes that can be used to create fake data
// List<String> countryCodesList();

// /// Provides a list of cities that can be used to create fake data
// List<String> citiesList();

// /// Provides a list of streets that can be used to create fake data
// List<String> streetsList();

/// Provides a list of lorem ipsum sentences that can be used to create fake data
// /// Provides a list of zip codes that can be used to create fake data
// List<String> zipCodesList();
// }

// abstract class GuidDataProvider {
// /// Provides a list of GUIDs that can be used to create fake data
// List<String> guidsList();
// }

// abstract class ImageDataProvider {
// /// Provides a list of image URLs that can be used to create fake data
// List<String> imageUrlsList();
// }

// abstract class InternetDataProvider {
// /// Provides a list of domains that can be used to create fake data
// List<String> domainsList();

// /// Provides a list of email domains that can be used to create fake data
// List<String> emailDomainsList();

// /// Provides a list of free email domains that can be used to create fake data
// List<String> freeEmailDomainsList();

// /// Provides a list of safe email domains that can be used to create fake data
// List<String> safeEmailDomainsList();

// /// Provides a list of URLs that can be used to create fake data
// List<String> urlsList();
// }

// abstract class JobDataProvider {
// /// Provides a list of job adjectives that can be used to create fake data
// List<String> jobAdjectivesList();

// /// Provides a list of job nouns that can be used to create fake data
// List<String> jobNounsList();

// /// Provides a list of job prefixes that can be used to create fake data
// List<String> jobPrefixesList();
// }

// abstract class JwtDataProvider {
// /// Provides a list of JWTs that can be used to create fake data
// List<String> jwtList();
// }

abstract class LoremDataProvider {
/// Provides a list of sentences that can be used to create fake data
List<String> sentencesList();

/// Provides a list of words that can be used to create fake data
List<String> wordsList();
}

// abstract class PersonDataProvider {
// /// Provides a list of first names that can be used to create fake data
// List<String> firstNamesList();

// /// Provides a list of last names that can be used to create fake data
// List<String> lastNamesList();
// }

// abstract class PhoneNumberDataProvider {
// /// Provides a list of phone number formats that can be used to create fake data
// List<String> phoneNumberFormatsList();
// }

// abstract class SportDataProvider {
// /// Provides a list of sport names that can be used to create fake data
// List<String> sportNamesList();
// }

// abstract class VehicleDataProvider {
// /// Provides a list of vehicle types that can be used to create fake data
// List<String> vehicleTypesList();

// /// Provides a list of vehicle makes that can be used to create fake data
// List<String> vehicleMakesList();

// /// Provides a list of vehicle models that can be used to create fake data
// List<String> vehicleModelsList();

// /// Provides a list of vehicle styles that can be used to create fake data
// List<String> vehicleStylesList();

// /// Provides a list of vehicle transmissions that can be used to create fake data
// List<String> vehicleTransmissionsList();

// /// Provides a list of vehicle drive types that can be used to create fake data
// List<String> vehicleDriveTypesList();
// }
6 changes: 6 additions & 0 deletions lib/src/providers/default_providers.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import 'base_providers.dart';
import '../data/animals/defaults/animals_names.dart' as animal_list;
import '../data/lorem/defaults/sentences.dart' as sentence_list;
import '../data/lorem/defaults/words.dart' as word_list;

class DefaultAnimalsDataProvider extends AnimalsDataProvider {
@override
List<String> animalsList() => animal_list.animalsNames;
}

class DefaultLoremDataProvider extends LoremDataProvider {
@override
List<String> sentencesList() => sentence_list.sentences;
Expand Down
7 changes: 7 additions & 0 deletions lib/src/providers/kr_providers.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import 'base_providers.dart';
import '../data/animals/kr/animals_names.dart' as animals;

class AnimalsDataProviderKr extends AnimalsDataProvider {
@override
List<String> animalsList() => animals.animalNames;
}
Loading