PennController for IBEX › Forums › FAQ / Tips › DashedSentence in a PennController trial › Reply To: DashedSentence in a PennController trial
December 8, 2020 at 11:10 am
#6435

Participant
Hi Jeremy,
I was wondering if there is a way to prevent the dashed function from deviding the chunks and presenting them on different lines? So if there’s not enough space for the whole sentence region on the first line, the presentation starts from the second line. Also right now it happens sometimes that you move your gaze to the next line thinking the next word will apear there, but then another word is added to the previous line:
Jeremy surely know how to solve
——-
Jeremy surely knows how to solve this
problem.
Is there an easy fix for it?
Thanks a lot!
Aliona
Here’s my function:
// create cumulative function
cumulative = (sentence, remove) => {
let words = sentence.split('*'), blanks = words.map(w=>w.split('').map(c=>'_').join('') ); // 'sentence.split('*')' = '*' defines the chunk boundaries (in the .csv)
let textName = 'cumulative'+words.join('');
// We'll return cmds: the first command consists in creating (and printing) a Text element with dashes
let cmds = [ newText(textName, blanks.join(' '))
//.print()
.settings.css("font-family","courier")
.settings.css("font-size", "20px")
.cssContainer({"width": "80vw"})
.print("10vw","50vh")
//.settings.css("font-size", "0.5em")
//.cssContainer({"width": "10vw"})
];
// COURIER as font
// We'll go through each word, and add two command blocks per word
for (let i = 0; i <= words.length; i++)
cmds = cmds.concat([ newKey('cumulative'+i+'_'+words[i], " ").log().wait() , // Wait for (and log) a press on Space; will log "cumulative"+number-of-region_sentence-chunk
getText(textName).text(blanks.map((w,n)=>(n<=i?words[n]:w)).join(' ')) ]); // Show word; to make cumulative changed n==i?words to n<=i?words (print words less than or equal to i-region)
if (remove) // Remove the text after the last key.wait() is parameter specified
cmds.push(getText(textName).remove());
return cmds;
};