in external_lib/dummy-json/lib/helpers.js [132:179]
repeat: function (min, max, options) {
var ret = '';
var total = 0;
var data;
var i;
if (arguments.length === 3) {
// If given two numbers then pick a random one between the two
total = utils.randomInt(min, max);
} else if (arguments.length === 2) {
// If given one number then just use it as a fixed repeat total
options = max;
total = min;
} else {
throw new Error('The repeat helper requires a numeric param');
}
// Create a shallow copy of data so we can add variables without modifying the original
data = Handlebars.Utils.extend({}, options.data);
for (i = 0; i < total; i++) {
// Clear the linked values on each iteration so a new set of names/companies is generated
options.data.root.__cache = {};
// You can access these in your template using @index, @total, @first, @last
data.index = i;
data.total = total;
data.first = i === 0;
data.last = i === total - 1;
// By using 'this' as the context the repeat block will inherit the current scope
ret = ret + options.fn(this, {data: data});
if (options.hash.comma !== false) {
// Trim any whitespace left by handlebars and add a comma if it doesn't already exist,
// also trim any trailing commas that might be at the end of the loop
ret = ret.trimRight();
if (i < total - 1 && ret.charAt(ret.length - 1) !== ',') {
ret += ',';
} else if (i === total - 1 && ret.charAt(ret.length - 1) === ',') {
ret = ret.slice(0, -1);
}
ret += os.EOL;
}
}
return ret;
},