aboutsummaryrefslogtreecommitdiff
path: root/src/modules/hacker
diff options
context:
space:
mode:
authorShinigami <[email protected]>2022-05-03 15:48:20 +0200
committerGitHub <[email protected]>2022-05-03 15:48:20 +0200
commita2da7c496e9a3741d165ddfe6128b50837fec361 (patch)
tree88d371bc19487bc8a34d9043035aed8e4fedd7d5 /src/modules/hacker
parentcc46a0c19af2752b6210c24b715fcce20197b6d9 (diff)
downloadfaker-a2da7c496e9a3741d165ddfe6128b50837fec361.tar.xz
faker-a2da7c496e9a3741d165ddfe6128b50837fec361.zip
refactor!: reorganize src folder (#909)
Diffstat (limited to 'src/modules/hacker')
-rw-r--r--src/modules/hacker/index.ts94
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);
+ }
+}