aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/index.ts3
-rw-r--r--src/music.ts29
2 files changed, 31 insertions, 1 deletions
diff --git a/src/index.ts b/src/index.ts
index 965b38e9..98b5f51e 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -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';
@@ -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);
diff --git a/src/music.ts b/src/music.ts
new file mode 100644
index 00000000..5c773693
--- /dev/null
+++ b/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);
+ }
+}