Last active
November 10, 2016 04:50
-
-
Save tzechienchu/66a687e089ed026c38fd0b39d768b1ac to your computer and use it in GitHub Desktop.
PickOne
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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