UNPKG

random-fixture-data

Version:

Random fixture data generator cloned from boo1ean/casual by Egor Gumenyuk to provide mixed-case methods that pass jshint tests where camelcase is set to true...

112 lines (89 loc) 2.18 kB
var helpers = require('./helpers'), exists = require('fs').existsSync; var safe_require = function(filename) { if (exists(filename + '.js')) { return require(filename); } return {}; }; var capitalizeName = function(name) { var ss = name.split('_'), nm = ss.shift(); if (ss.length === 0) { return name; } ss.forEach(function(s) { nm += s.replace(/^[a-z]/, function(m) { return m.toUpperCase(); }); }); return nm ; }; var build_casual = function() { var casual = helpers.extend({}, helpers); casual.functions = function() { var adapter = {}; Object.keys(this).forEach(function(name) { if (name[0] === '_') { var nm = name.slice(1); adapter[ nm ] = casual[ name ]; if (nm.indexOf('_') > 0) { adapter[ capitalizeName( nm ) ] = casual[ name ]; } } }); return adapter; }; var providers = [ 'address', 'text', 'internet', 'person', 'number', 'date', 'payment', 'misc', 'color' ]; casual.register_locale = function(locale) { casual.define(locale, function() { var casual = build_casual(); providers.forEach(function(provider) { casual.register_provider(helpers.extend( require('./providers/' + provider), safe_require(__dirname + '/providers/' + locale + '/' + provider) )); }); return casual; }); } var locales = [ 'en_US', 'ru_RU', 'uk_UA', 'nl_NL', 'en_CA', 'it_CH' ]; locales.forEach(casual.register_locale); return casual; }; // create mixed case methods var build = function() { // Default locale is en_US var casual = build_casual().en_US; Object.keys( casual ).forEach(function(key) { if (key[0] === '_') { var name = key.slice(1), nm; if (name.indexOf('_') > 0) { nm = capitalizeName( name ); casual.define( nm, function() { return casual[ name ]; }); } } }); return casual; }; module.exports = build();