/
controls.js
51 lines (46 loc) · 1.54 KB
/
controls.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
(function (tracery, baseEngModifiers){
var traceryGrammar;
function createStory() {
var numberOfStories = parseInt(document.querySelector('#numberOfStories').value);
var output = document.querySelector('#story');
var stories = [];
for(var i=0;i<numberOfStories;i++) {
stories.push('<p>' + traceryGrammar.flatten('#origin#').replace(/\n\n/g,'</p><p>') + '</p>');
}
output.innerHTML = stories.join('<hr>');
var numberOfWords = stories[0].split(" ").length;
var wordCountHolder = document.querySelector('#wordCount');
wordCountHolder.innerHTML = numberOfWords;
console.log(numberOfWords);
}
function loadTracery(grammar) {
traceryGrammar = tracery.createGrammar(grammar);
traceryGrammar.addModifiers(baseEngModifiers);
createStory();
document.querySelector('#newStory').addEventListener('click', function() {
createStory();
})
}
document.addEventListener('DOMContentLoaded', function() {
if(typeof GRAMMAR === 'undefined') {
fetch("story.json") // see https://stackoverflow.com/a/42272155
.then(response => response.json())
.then(json => loadTracery(json));
} else if(typeof GRAMMAR === 'object') {
loadTracery(GRAMMAR);
} else if(typeof GRAMMAR === 'string') {
var xhr = new XMLHttpRequest();
xhr.open('GET', GRAMMAR);
xhr.onload = function() {
if (xhr.status === 200) {
GRAMMAR = JSON.parse(xhr.responseText);
loadTracery(GRAMMAR);
}
else {
alert('Request failed. Returned status of ' + xhr.status);
}
};
xhr.send();
}
});
})(tracery, baseEngModifiers)