213 lines
4.5 KiB
JavaScript
213 lines
4.5 KiB
JavaScript
// generates fake data for many computer systems properties
|
|
|
|
var commonFileTypes = [
|
|
"video",
|
|
"audio",
|
|
"image",
|
|
"text",
|
|
"application"
|
|
];
|
|
|
|
var commonMimeTypes = [
|
|
"application/pdf",
|
|
"audio/mpeg",
|
|
"audio/wav",
|
|
"image/png",
|
|
"image/jpeg",
|
|
"image/gif",
|
|
"video/mp4",
|
|
"video/mpeg",
|
|
"text/html"
|
|
];
|
|
|
|
function setToArray(set) {
|
|
// shortcut if Array.from is available
|
|
if (Array.from) { return Array.from(set); }
|
|
|
|
var array = [];
|
|
set.forEach(function (item) {
|
|
array.push(item);
|
|
});
|
|
return array;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @namespace faker.system
|
|
*/
|
|
function System(faker) {
|
|
|
|
/**
|
|
* generates a file name
|
|
*
|
|
* @method faker.system.fileName
|
|
*/
|
|
this.fileName = function () {
|
|
var str = faker.random.words();
|
|
str = str
|
|
.toLowerCase()
|
|
.replace(/\W/g, "_") + "." + faker.system.fileExt();;
|
|
return str;
|
|
};
|
|
|
|
/**
|
|
* commonFileName
|
|
*
|
|
* @method faker.system.commonFileName
|
|
* @param {string} ext
|
|
*/
|
|
this.commonFileName = function (ext) {
|
|
var str = faker.random.words();
|
|
str = str
|
|
.toLowerCase()
|
|
.replace(/\W/g, "_");
|
|
str += "." + (ext || faker.system.commonFileExt());
|
|
return str;
|
|
};
|
|
|
|
/**
|
|
* mimeType
|
|
*
|
|
* @method faker.system.mimeType
|
|
*/
|
|
this.mimeType = function () {
|
|
var typeSet = new Set();
|
|
var extensionSet = new Set();
|
|
var mimeTypes = faker.definitions.system.mimeTypes;
|
|
|
|
Object.keys(mimeTypes).forEach(function (m) {
|
|
var type = m.split("/")[0];
|
|
|
|
typeSet.add(type);
|
|
|
|
if (mimeTypes[m].extensions instanceof Array) {
|
|
mimeTypes[m].extensions.forEach(function (ext) {
|
|
extensionSet.add(ext);
|
|
});
|
|
}
|
|
});
|
|
|
|
var types = setToArray(typeSet);
|
|
var extensions = setToArray(extensionSet);
|
|
var mimeTypeKeys = Object.keys(faker.definitions.system.mimeTypes);
|
|
|
|
return faker.random.arrayElement(mimeTypeKeys);
|
|
};
|
|
|
|
/**
|
|
* returns a commonly used file type
|
|
*
|
|
* @method faker.system.commonFileType
|
|
*/
|
|
this.commonFileType = function () {
|
|
return faker.random.arrayElement(commonFileTypes);
|
|
};
|
|
|
|
/**
|
|
* returns a commonly used file extension
|
|
*
|
|
* @method faker.system.commonFileExt
|
|
*/
|
|
this.commonFileExt = function () {
|
|
return faker.system.fileExt(faker.random.arrayElement(commonMimeTypes));
|
|
};
|
|
|
|
|
|
/**
|
|
* returns any file type available as mime-type
|
|
*
|
|
* @method faker.system.fileType
|
|
*/
|
|
this.fileType = function () {
|
|
var typeSet = new Set();
|
|
var extensionSet = new Set();
|
|
var mimeTypes = faker.definitions.system.mimeTypes;
|
|
|
|
Object.keys(mimeTypes).forEach(function (m) {
|
|
var type = m.split("/")[0];
|
|
|
|
typeSet.add(type);
|
|
|
|
if (mimeTypes[m].extensions instanceof Array) {
|
|
mimeTypes[m].extensions.forEach(function (ext) {
|
|
extensionSet.add(ext);
|
|
});
|
|
}
|
|
});
|
|
|
|
var types = setToArray(typeSet);
|
|
var extensions = setToArray(extensionSet);
|
|
var mimeTypeKeys = Object.keys(faker.definitions.system.mimeTypes);
|
|
return faker.random.arrayElement(types);
|
|
|
|
};
|
|
|
|
/**
|
|
* fileExt
|
|
*
|
|
* @method faker.system.fileExt
|
|
* @param {string} mimeType
|
|
*/
|
|
this.fileExt = function (mimeType) {
|
|
var typeSet = new Set();
|
|
var extensionSet = new Set();
|
|
var mimeTypes = faker.definitions.system.mimeTypes;
|
|
|
|
Object.keys(mimeTypes).forEach(function (m) {
|
|
var type = m.split("/")[0];
|
|
|
|
typeSet.add(type);
|
|
|
|
if (mimeTypes[m].extensions instanceof Array) {
|
|
mimeTypes[m].extensions.forEach(function (ext) {
|
|
extensionSet.add(ext);
|
|
});
|
|
}
|
|
});
|
|
|
|
var types = setToArray(typeSet);
|
|
var extensions = setToArray(extensionSet);
|
|
var mimeTypeKeys = Object.keys(faker.definitions.system.mimeTypes);
|
|
|
|
if (mimeType) {
|
|
var mimes = faker.definitions.system.mimeTypes;
|
|
return faker.random.arrayElement(mimes[mimeType].extensions);
|
|
}
|
|
|
|
return faker.random.arrayElement(extensions);
|
|
};
|
|
|
|
/**
|
|
* returns directory path
|
|
*
|
|
* @method faker.system.directoryPath
|
|
*/
|
|
this.directoryPath = function () {
|
|
var paths = faker.definitions.system.directoryPaths
|
|
return faker.random.arrayElement(paths);
|
|
};
|
|
|
|
/**
|
|
* returns file path
|
|
*
|
|
* @method faker.system.filePath
|
|
*/
|
|
this.filePath = function () {
|
|
return faker.fake("{{system.directoryPath}}/{{system.fileName}}.{{system.fileExt}}");
|
|
};
|
|
|
|
/**
|
|
* semver
|
|
*
|
|
* @method faker.system.semver
|
|
*/
|
|
this.semver = function () {
|
|
return [faker.datatype.number(9),
|
|
faker.datatype.number(9),
|
|
faker.datatype.number(9)].join('.');
|
|
}
|
|
|
|
}
|
|
|
|
module['exports'] = System;
|