// 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;