Skip to content

Commit

Permalink
feat: migrate hacker
Browse files Browse the repository at this point in the history
  • Loading branch information
Shinigami92 committed Jan 13, 2022
1 parent 7b02094 commit e73890c
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 1 deletion.
84 changes: 84 additions & 0 deletions src/hacker.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import type { Faker } from '.';

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);
}
}

/**
* abbreviation
*
* @method faker.hacker.abbreviation
*/
abbreviation() {
return this.faker.random.arrayElement(
this.faker.definitions.hacker.abbreviation
);
}

/**
* adjective
*
* @method faker.hacker.adjective
*/
adjective() {
return this.faker.random.arrayElement(
this.faker.definitions.hacker.adjective
);
}

/**
* noun
*
* @method faker.hacker.noun
*/
noun() {
return this.faker.random.arrayElement(this.faker.definitions.hacker.noun);
}

/**
* verb
*
* @method faker.hacker.verb
*/
verb() {
return this.faker.random.arrayElement(this.faker.definitions.hacker.verb);
}

/**
* ingverb
*
* @method faker.hacker.ingverb
*/
ingverb() {
return this.faker.random.arrayElement(
this.faker.definitions.hacker.ingverb
);
}

/**
* phrase
*
* @method faker.hacker.phrase
*/
phrase() {
const data = {
abbreviation: this.abbreviation,
adjective: this.adjective,
ingverb: this.ingverb,
noun: this.noun,
verb: this.verb,
};

const phrase = this.faker.random.arrayElement(
this.faker.definitions.hacker.phrase
);
return this.faker.helpers.mustache(phrase, data);
}
}
3 changes: 2 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Datatype } from './datatype';
import { Hacker } from './hacker';
import { Mersenne } from './mersenne';
import { Random } from './random';

Expand Down Expand Up @@ -169,7 +170,7 @@ export class Faker {
readonly date = new (require('./date'))(this);
readonly finance = new (require('./finance'))(this);
readonly git = new (require('./git'))(this);
readonly hacker = new (require('./hacker'))(this);
readonly hacker: Hacker = new Hacker(this);
// TODO @Shinigami92 2022-01-12: iban was not used
// readonly iban = new (require('./iban'))(this);
readonly image = new (require('./image'))(this);
Expand Down

0 comments on commit e73890c

Please sign in to comment.