Skip to content

Commit

Permalink
feat: migrate music (#107)
Browse files Browse the repository at this point in the history
  • Loading branch information
Shinigami92 authored and damienwebdev committed Jan 14, 2022
1 parent 77f4e63 commit 46d51ba
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/index.ts
Expand Up @@ -10,6 +10,7 @@ import { Helpers } from './helpers';
import { Image } from './image';
import { Internet } from './internet';
import { Mersenne } from './mersenne';
import { Music } from './music';
import { Name } from './name';
import { Phone } from './phone_number';
import { Random } from './random';
Expand Down Expand Up @@ -190,7 +191,7 @@ export class Faker {
readonly image: Image = new Image(this);
readonly internet: Internet = new Internet(this);
readonly lorem = new (require('./lorem'))(this);
readonly music = new (require('./music'))(this);
readonly music: Music = new Music(this);
readonly name: Name = new Name(this);
readonly phone: Phone = new Phone(this);
readonly system: System = new System(this);
Expand Down
29 changes: 29 additions & 0 deletions src/music.ts
@@ -0,0 +1,29 @@
import type { Faker } from '.';

export class Music {
constructor(private readonly faker: Faker) {
// Bind `this` so namespaced is working correctly
for (const name of Object.getOwnPropertyNames(Music.prototype)) {
if (name === 'constructor' || typeof this[name] !== 'function') {
continue;
}
this[name] = this[name].bind(this);
}

// TODO @Shinigami92 2022-01-12: We should find a better strategy as assigning this property to a function
// @ts-expect-error
this.genre.schema = {
description: 'Generates a genre.',
sampleResults: ['Rock', 'Metal', 'Pop'],
};
}

/**
* genre
*
* @method faker.music.genre
*/
genre(): string {
return this.faker.random.arrayElement(this.faker.definitions.music.genre);
}
}

0 comments on commit 46d51ba

Please sign in to comment.