Skip to content

generates random data based on a defined template model

Notifications You must be signed in to change notification settings

no-dice/datafixture.js

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 

Repository files navigation

#datafixture.js#

Generates random data based on a defined template model.

jsfiddle example:

http://jsfiddle.net/acatl/QC3Av/

Method: DataFixture.generate

DataFixture.generate(templateObject, numberOfResults);

templateObject is an object with at least one property.

numberOfResults is the number of results we want to be generated, if numberOfResults is == 0 it outputs an object. if > 0 it outputs an array of objects.

Examples

Generate an object with a randomly set numeric property

var template = {
	like: "0...100" /* generate a number between 0 an 100, with no decimals */
};
DataFixture.generate(template, 0);

// possible output
{
	like: 23
}

Generate an Array with a randomly set numeric property

var template = {
	like: "0...100" /* generate a number between 0 an 100, with no decimals */
};
DataFixture.generate(template, 20); /* second parameter indicates the number of elements */

// possible output
[
	{like: 23},
	{like: 3},
	{like: 2},
	{like: 22},
	{like: 10},
	...
]

Generate numbers with decimals

var template = {
	like: "0...100:2" /* generate a number between 0 an 100, with 2 decimals */
};
DataFixture.generate(template, 0);

// possible output
{
	like: 12.69
}

Generate a string from a defined set of values

var template = {
	names: ["Ian","Polo", "Oscar", "Fabien", "Rafael"] /* Create string with any of the values from the array */
};
DataFixture.generate(template, 0);

// possible output
{
	names: "Rafael"
}

Generate a string from a defined set of values with mixed types

var template = {
	names: ["Ian",2, 10.4, true, "Andros"] /* Create string with any of the values from the array */
};
DataFixture.generate(template, 0);

// possible output
{
	names: 10.4
}

One level template

var template = {
	score: "0...100:2" /* generate a number between 0 an 100, with 2 decimals */
	names: ["Paula", "Darek", "Ian", "Monica", "Andros", "Kenji"] /* Create string with any of the values from the array */
};
DataFixture.generate(template, 6);

// possible output
[
	{score: 45.67,	names: "Andros"},
	{score: 5.73,	names: "Ian"},
	{score: 34.45,	names: "Paula"},
	{score: 53.76,	names: "Darek"},
	{score: 99.28,	names: "Monica"},
	{score: 0.12,	names: "Kenji"}
]

Nested levels template

var template = {
	values: "0...100:2", 
	names: ["Ian",2, 10.4, true, "Andros"], 
	complex: {
		PO:"20000...30000",
		country: ["Mexico", "Canada", "US"]
	}
};
DataFixture.generate(template, 0);

// possible output
{
	names: 10.4,
	values: 13.78,
	complex: {
		PO: 27882,
		country: "Canada"
	}
}

Nested template with more than one result

var template = {
	values: "0...100:2", 
	names: ["Ian",2, 10.4, true, "Andros"], 
	complex: {
		// _rows_ is a reserved property name 
		_rows_ : 4, 
		// _template_ is a reserved property name 
		_template_ : { 
			PO:"20000...30000",
			country: ["Mexico", "Canada", "US"]
		}
	}
};
DataFixture.generate(template, 0);

// possible output
{ values: 97.62,
  names: 10.4,
  complex: 
   [ { PO: 22468, country: 'US' },
     { PO: 27431, country: 'Canada' },
     { PO: 20893, country: 'Canada' },
     { PO: 25644, country: 'Canada' } ] 
}

Values of properties can also be functions

var df = DataFixture.generate({
	coordinates:function(){
		return DataFixture.getRandom(0,30) + ":" + DataFixture.getRandom(0,15);
	}
},10);

// possible output
[ { coordinates: '15:7' },
  { coordinates: '14:11' },
  { coordinates: '19:15' },
  { coordinates: '15:9' },
  { coordinates: '17:2' },
  { coordinates: '25:3' },
  { coordinates: '4:1' },
  { coordinates: '12:9' },
  { coordinates: '15:2' },
  { coordinates: '7:8' } ]

Create Lorem Ipsum paragraphs with random lengths

var x = DataFixture.generate({
	// you may define the range of possible words to use
	// this case: from 1 to 3 words, if omitted it will by default "1...10"
	"lorem": "lorem:1...3"
}, 10);

//output
[ { lorem: 'Lorem' },
  { lorem: 'Lorem ipsum' },
  { lorem: 'Lorem ipsum' },
  { lorem: 'Lorem ipsum' },
  { lorem: 'Lorem ipsum dolor' },
  { lorem: 'Lorem ipsum' },
  { lorem: 'Lorem' },
  { lorem: 'Lorem ipsum dolor' },
  { lorem: 'Lorem' },
  { lorem: 'Lorem ipsum' } ]

enjoy!

All feedback is welcomed

About

generates random data based on a defined template model

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published