diff options
| author | Shinigami <[email protected]> | 2022-05-03 15:48:20 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-05-03 15:48:20 +0200 |
| commit | a2da7c496e9a3741d165ddfe6128b50837fec361 (patch) | |
| tree | 88d371bc19487bc8a34d9043035aed8e4fedd7d5 /src/modules/hacker | |
| parent | cc46a0c19af2752b6210c24b715fcce20197b6d9 (diff) | |
| download | faker-a2da7c496e9a3741d165ddfe6128b50837fec361.tar.xz faker-a2da7c496e9a3741d165ddfe6128b50837fec361.zip | |
refactor!: reorganize src folder (#909)
Diffstat (limited to 'src/modules/hacker')
| -rw-r--r-- | src/modules/hacker/index.ts | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/modules/hacker/index.ts b/src/modules/hacker/index.ts new file mode 100644 index 00000000..ee1bbc5c --- /dev/null +++ b/src/modules/hacker/index.ts @@ -0,0 +1,94 @@ +import type { Faker } from '../..'; + +/** + * Module to generate hacker/IT words and phrases. + */ +export class Hacker { + constructor(private readonly faker: Faker) { + // Bind `this` so namespaced is working correctly + for (const name of Object.getOwnPropertyNames(Hacker.prototype)) { + if (name === 'constructor' || typeof this[name] !== 'function') { + continue; + } + this[name] = this[name].bind(this); + } + } + + /** + * Returns a random hacker/IT abbreviation. + * + * @example + * faker.hacker.abbreviation() // 'THX' + */ + abbreviation(): string { + return this.faker.helpers.arrayElement( + this.faker.definitions.hacker.abbreviation + ); + } + + /** + * Returns a random hacker/IT adjective. + * + * @example + * faker.hacker.adjective() // 'cross-platform' + */ + adjective(): string { + return this.faker.helpers.arrayElement( + this.faker.definitions.hacker.adjective + ); + } + + /** + * Returns a random hacker/IT noun. + * + * @example + * faker.hacker.noun() // 'system' + */ + noun(): string { + return this.faker.helpers.arrayElement(this.faker.definitions.hacker.noun); + } + + /** + * Returns a random hacker/IT verb. + * + * @example + * faker.hacker.verb() // 'copy' + */ + verb(): string { + return this.faker.helpers.arrayElement(this.faker.definitions.hacker.verb); + } + + /** + * Returns a random hacker/IT verb for continuous actions (en: ing suffix; e.g. hacking). + * + * @example + * faker.hacker.ingverb() // 'navigating' + */ + ingverb(): string { + return this.faker.helpers.arrayElement( + this.faker.definitions.hacker.ingverb + ); + } + + /** + * Generates a random hacker/IT phrase. + * + * @example + * faker.hacker.phrase() + * // 'If we override the card, we can get to the HDD feed through the back-end HDD sensor!' + */ + phrase(): string { + const data = { + abbreviation: this.abbreviation, + adjective: this.adjective, + ingverb: this.ingverb, + noun: this.noun, + verb: this.verb, + }; + + const phrase = this.faker.helpers.arrayElement( + this.faker.definitions.hacker.phrase + ); + return this.faker.helpers.mustache(phrase, data); + } +} |
