Skip to content

Instantly share code, notes, and snippets.

@tzechienchu
Last active November 10, 2016 04:50
Show Gist options
  • Save tzechienchu/66a687e089ed026c38fd0b39d768b1ac to your computer and use it in GitHub Desktop.
Save tzechienchu/66a687e089ed026c38fd0b39d768b1ac to your computer and use it in GitHub Desktop.
PickOne
var _ = require('lodash');
var fs = require("fs");
var path = require('path');
var DataGenerator = (function () {
var instance;
var lines = fs.readFileSync(path.join(__dirname, '../actionData/alice.txt')).toString().split('\n');
lines = lines.filter(function(line) {
return (line.length > 0)
})
function init() {
var pickOne = function(arr) {
var len =arr.length;
var rnd = Math.floor(Math.random() * (len));
return arr[rnd];
}
var pickYear = function(start,end) {
return pickOne(_.range(start,end))
}
var pickMonth = function() {
return pickOne(_.range(12))+1
}
var pickDay = function() {
return pickOne(_.range(30))+1
}
var pickHour = function() {
var d1 = pickOne(_.range(9));
var d2 = pickOne(_.range(2));
if (d2 === 2) {
if ((d1 >= 4) && (d1 <= 7)) d1 = d1 - 4
if ((d1 >= 8) && (d1 <= 9)) d1 = d1 - 6
}
return [d2,d1].join('');
}
var pickMin = function() {
var d1 = pickOne(_.range(10));
var d2 = pickOne(_.range(6));
return [d2,d1].join('');
}
var pickLine = function() {
return pickOne(lines)
}
var pickWord = function(size) {
var wordSize = 0;
while(wordSize < size) {
var line = pickOne(lines).split(' ');
var word = pickOne(line);
wordSize = word.length;
}
return word
}
var pickWords = function(number) {
var words = _.range(number).map(function() {
var line = pickOne(lines).split(' ');
return pickOne(line);
})
return words
}
var pickParagraph = function(lineSize) {
var len =lines.length;
var rnd = Math.floor(Math.random() * (len));
var parLines = _.range(rnd,rnd+lineSize).map(function(ix){
return lines[ix]
})
var par = parLines.join('\n')
return par
}
return {
pickOne:pickOne,
pickYear:pickYear,
pickMonth:pickMonth,
pickDay:pickDay,
pickHour:pickHour,
pickMin:pickMin,
pickWord:pickWord,
pickWords:pickWords,
pickLine:pickLine,
pickParagraph:pickParagraph
}
}
return {
getInstance: function () {
if ( !instance ) {
instance = init();
}
return instance;
}
};
})();
module.exports = DataGenerator;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment