Can now generate as many words as you want
parent
d4576cb4a2
commit
398f75227c
|
@ -12,10 +12,12 @@
|
||||||
<p class="subtitle">A rearrangement of <a href="https://www.gutenberg.org/ebooks/22472">Charles Fort's <i>The Book of the Damned</i></a> using <a href="https://compromise.cool/">compromise</a> | by <a href="https://mikelynch.org">Mike Lynch</a> | <a href="https://git.tilde.town/bombinans/damned-fort">Source</a></p>
|
<p class="subtitle">A rearrangement of <a href="https://www.gutenberg.org/ebooks/22472">Charles Fort's <i>The Book of the Damned</i></a> using <a href="https://compromise.cool/">compromise</a> | by <a href="https://mikelynch.org">Mike Lynch</a> | <a href="https://git.tilde.town/bombinans/damned-fort">Source</a></p>
|
||||||
</div>
|
</div>
|
||||||
<div id="frame">
|
<div id="frame">
|
||||||
<div id="page"></div>
|
|
||||||
<div id="controls">
|
<div id="controls">
|
||||||
<input id="nextPage" type="button" value="more" />
|
<input id="nextPage" type="button" value="next page" /> or
|
||||||
|
<input id="nWords" type="text" value="50000" size="6"/>
|
||||||
|
<input id="makeLots" type="button" value="words" />
|
||||||
</div>
|
</div>
|
||||||
|
<div id="page"></div>
|
||||||
<script type="module" src="/src/main.js"></script>
|
<script type="module" src="/src/main.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
40
src/main.js
40
src/main.js
|
@ -5,6 +5,7 @@ import helpers from 'wink-helpers';
|
||||||
import './style.css';
|
import './style.css';
|
||||||
|
|
||||||
const CHUNK_SIZE = 1024;
|
const CHUNK_SIZE = 1024;
|
||||||
|
const PAGE_TIME = 100;
|
||||||
|
|
||||||
function scramble(words) {
|
function scramble(words) {
|
||||||
const w = words.map(o => o.text());
|
const w = words.map(o => o.text());
|
||||||
|
@ -15,6 +16,7 @@ function scramble(words) {
|
||||||
|
|
||||||
function make_fragments(verbs, nouns) {
|
function make_fragments(verbs, nouns) {
|
||||||
const fragments = [];
|
const fragments = [];
|
||||||
|
let wc = 0;
|
||||||
while( verbs.length > 0 && nouns.length > 0 ) {
|
while( verbs.length > 0 && nouns.length > 0 ) {
|
||||||
const v = verbs.pop();
|
const v = verbs.pop();
|
||||||
const n = nouns.pop();
|
const n = nouns.pop();
|
||||||
|
@ -36,7 +38,7 @@ async function damned_fort() {
|
||||||
const text = await response.text();
|
const text = await response.text();
|
||||||
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
return () => {
|
return ( append ) => {
|
||||||
const chunk = text.substring(i, i + CHUNK_SIZE);
|
const chunk = text.substring(i, i + CHUNK_SIZE);
|
||||||
if( chunk ) {
|
if( chunk ) {
|
||||||
const div = document.getElementById("page");
|
const div = document.getElementById("page");
|
||||||
|
@ -44,22 +46,52 @@ async function damned_fort() {
|
||||||
const v = scramble(doc.verbs());
|
const v = scramble(doc.verbs());
|
||||||
const n = scramble(doc.nouns());
|
const n = scramble(doc.nouns());
|
||||||
const fragments = make_fragments(n, v);
|
const fragments = make_fragments(n, v);
|
||||||
div.innerHTML = `<p>${fragments.join('<br />')}</p>`;
|
const fdoc = nlp(fragments.join(' '));
|
||||||
|
const wc = fdoc.terms().length;
|
||||||
|
const hfrag = `<p>${fragments.join('<br />')}</p>`;
|
||||||
|
if( append ) {
|
||||||
|
div.innerHTML += hfrag;
|
||||||
|
} else {
|
||||||
|
div.innerHTML = hfrag;
|
||||||
|
}
|
||||||
i +=CHUNK_SIZE;
|
i +=CHUNK_SIZE;
|
||||||
|
return wc;
|
||||||
} else {
|
} else {
|
||||||
i = 0;
|
i = 0;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function recurse_make(target, makef) {
|
||||||
|
const new_target = target - makef(true);
|
||||||
|
if( new_target > 0 ) {
|
||||||
|
document.getElementById("nWords").value = String(new_target);
|
||||||
|
setTimeout(() => { recurse_make(new_target, makef) }, PAGE_TIME);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
|
|
||||||
const next_ctrl = await damned_fort();
|
const next_ctrl = await damned_fort();
|
||||||
const next = document.getElementById("nextPage");
|
const next = document.getElementById("nextPage");
|
||||||
|
|
||||||
next.addEventListener("click", (e) => { next_ctrl(); });
|
next.addEventListener("click", (e) => { next_ctrl(false); });
|
||||||
next_ctrl();
|
next_ctrl(true);
|
||||||
|
const makeLots = document.getElementById("makeLots");
|
||||||
|
makeLots.addEventListener("click", (e) => {
|
||||||
|
const nwords = Number(document.getElementById("nWords").value);
|
||||||
|
if( ! isNaN(nwords) ) {
|
||||||
|
recurse_make(nwords, next_ctrl);
|
||||||
|
};
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
main();
|
main();
|
Loading…
Reference in New Issue