Skip to content

Commit

Permalink
feat: add internet.emoji (#504)
Browse files Browse the repository at this point in the history
  • Loading branch information
hugoattal committed Apr 19, 2022
1 parent 2264314 commit cb746cb
Show file tree
Hide file tree
Showing 6 changed files with 3,592 additions and 2 deletions.
8 changes: 7 additions & 1 deletion src/definitions/internet.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import type { EmojiType } from '../internet';
import { allOf } from './utils';

/**
Expand All @@ -16,6 +17,10 @@ export interface InternetDefinitions {
* Some free-mail domains used in that country (e.g. `gmail.de`).
*/
free_email: string[];
/**
* List of all fully-qualified emojis.
*/
emoji: Record<EmojiType, string[]>;
}

/**
Expand All @@ -24,5 +29,6 @@ export interface InternetDefinitions {
export const INTERNET = allOf<keyof InternetDefinitions>()(
'domain_suffix',
'example_email',
'free_email'
'free_email',
'emoji'
);
33 changes: 33 additions & 0 deletions src/internet.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
import type { Faker } from '.';
import * as random_ua from './utils/user-agent';

export type EmojiType =
| 'smiley'
| 'body'
| 'person'
| 'nature'
| 'food'
| 'travel'
| 'activity'
| 'object'
| 'symbol'
| 'flag';

/**
* Module to generate internet related entries.
*/
Expand Down Expand Up @@ -426,4 +438,25 @@ export class Internet {
};
return _password(len, memorable, pattern, prefix);
}

/**
* Generates a random emoji.
*
* @param options Options object.
* @param options.types A list of the emoji types that should be used.
* @example
* faker.internet.emoji() // '🥰'
* faker.internet.emoji({ types: ['food', 'nature'] }) // '🥐'
*/
emoji(options: { types?: ReadonlyArray<EmojiType> } = {}): string {
const {
types = Object.keys(
this.faker.definitions.internet.emoji
) as Array<EmojiType>,
} = options;
const emojiType = this.faker.random.arrayElement(types);
return this.faker.random.arrayElement(
this.faker.definitions.internet.emoji[emojiType]
);
}
}

0 comments on commit cb746cb

Please sign in to comment.