aboutsummaryrefslogtreecommitdiff
path: root/src/modules/vehicle
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/vehicle
parentcc46a0c19af2752b6210c24b715fcce20197b6d9 (diff)
downloadfaker-a2da7c496e9a3741d165ddfe6128b50837fec361.tar.xz
faker-a2da7c496e9a3741d165ddfe6128b50837fec361.zip
refactor!: reorganize src folder (#909)
Diffstat (limited to 'src/modules/vehicle')
-rw-r--r--src/modules/vehicle/index.ts131
1 files changed, 131 insertions, 0 deletions
diff --git a/src/modules/vehicle/index.ts b/src/modules/vehicle/index.ts
new file mode 100644
index 00000000..ec010af9
--- /dev/null
+++ b/src/modules/vehicle/index.ts
@@ -0,0 +1,131 @@
+import type { Faker } from '../..';
+
+/**
+ * Module to generate vehicle related entries.
+ */
+export class Vehicle {
+ constructor(private readonly faker: Faker) {
+ // Bind `this` so namespaced is working correctly
+ for (const name of Object.getOwnPropertyNames(Vehicle.prototype)) {
+ if (name === 'constructor' || typeof this[name] !== 'function') {
+ continue;
+ }
+ this[name] = this[name].bind(this);
+ }
+ }
+
+ /**
+ * Returns a random vehicle.
+ *
+ * @example
+ * faker.vehicle.vehicle() // 'BMW Explorer'
+ */
+ vehicle(): string {
+ return `${this.manufacturer()} ${this.model()}`;
+ }
+
+ /**
+ * Returns a manufacturer name.
+ *
+ * @example
+ * faker.vehicle.manufacturer() // 'Ford'
+ */
+ manufacturer(): string {
+ return this.faker.helpers.arrayElement(
+ this.faker.definitions.vehicle.manufacturer
+ );
+ }
+
+ /**
+ * Returns a vehicle model.
+ *
+ * @example
+ * faker.vehicle.model() // 'Explorer'
+ */
+ model(): string {
+ return this.faker.helpers.arrayElement(
+ this.faker.definitions.vehicle.model
+ );
+ }
+
+ /**
+ * Returns a vehicle type.
+ *
+ * @example
+ * faker.vehicle.type() // 'Coupe'
+ */
+ type(): string {
+ return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.type);
+ }
+
+ /**
+ * Returns a fuel type.
+ *
+ * @example
+ * faker.vehicle.fuel() // 'Electric'
+ */
+ fuel(): string {
+ return this.faker.helpers.arrayElement(this.faker.definitions.vehicle.fuel);
+ }
+
+ /**
+ * Returns a vehicle identification number (VIN).
+ *
+ * @example
+ * faker.vehicle.vin() // 'YV1MH682762184654'
+ */
+ vin(): string {
+ const bannedChars = ['o', 'i', 'q'];
+ return `${this.faker.random.alphaNumeric(10, {
+ bannedChars,
+ })}${this.faker.random.alpha({
+ count: 1,
+ upcase: true,
+ bannedChars,
+ })}${this.faker.random.alphaNumeric(1, {
+ bannedChars,
+ })}${this.faker.datatype.number({ min: 10000, max: 99999 })}` // return five digit #
+ .toUpperCase();
+ }
+
+ /**
+ * Returns a vehicle color.
+ *
+ * @example
+ * faker.vehicle.color() // 'red'
+ */
+ color(): string {
+ return this.faker.commerce.color();
+ }
+
+ /**
+ * Returns a vehicle registration number (Vehicle Registration Mark - VRM)
+ *
+ * @example
+ * faker.vehicle.vrm() // 'MF56UPA'
+ */
+ vrm(): string {
+ return `${this.faker.random.alpha({
+ count: 2,
+ upcase: true,
+ })}${this.faker.datatype.number({
+ min: 0,
+ max: 9,
+ })}${this.faker.datatype.number({
+ min: 0,
+ max: 9,
+ })}${this.faker.random.alpha({ count: 3, upcase: true })}`.toUpperCase();
+ }
+
+ /**
+ * Returns a type of bicycle.
+ *
+ * @example
+ * faker.vehicle.bicycle() // 'Adventure Road Bicycle'
+ */
+ bicycle(): string {
+ return this.faker.helpers.arrayElement(
+ this.faker.definitions.vehicle.bicycle_type
+ );
+ }
+}