/* sectiontitles is ["Software development and experience", "First experiences of programming", "Hermeneutic and formalist perspectives", "Mathematics and experience", "Beyond computational thinking", "Software development as an experience", "Empirical Modelling", "Retrospect and Prospect"]; currsection is (ixpara == 1) ? "Abstract" : ( (ixpara<66) ? sectionheader : ( (ixpara<90) ? "Note " // str(ixpara-65): "References" ) ); func findsection { para currixpara; auto result; if (currixpara == 2) result = 1; if ((currixpara > 2) && (currixpara < 10)) result = 2; if ((currixpara >= 10) && (currixpara < 24)) result = 3; if ((currixpara >= 24) && (currixpara < 30)) result = 4; if ((currixpara >= 30) && (currixpara < 37)) result = 5; if ((currixpara >= 37) && (currixpara < 47)) result = 6; if ((currixpara >= 47) && (currixpara < 57)) result = 7; if ((currixpara >= 57) && (currixpara < 66)) result = 8; return result; } sectionnumber is findsection(ixpara); sectionheader is "Section " // str(sectionnumber) // ": " // sectiontitles[sectionnumber]; ## title is Div("title", leftmargin, 10, rightmargin, 50, "

Realising Software Development as a Lived Experience

"); titledefault is "

This is a default title.

"; */ titledefault is "

Bruno Latour's Five Promises of Constructivism

"; titleheader is "Bruno Latour's Five Promises of Constructivism. "; sectiontitles is ["Guarantee 1", "Guarantee 2", "Guarantee 3", "Guarantee 4", "Guarantee 5"]; sectionnumber is ixpara; sectionheader is "Guarantee " // str(ixpara); currsection is (ixpara<6) ? sectiontitles[ixpara] : "More about the Promises of Constructivism"; ## presentation comprises a sequence based on a generic slide called slideX ## control then passes to the text presenter interface slideList is []; ## slides is [buttonPrev, buttonNext, buttonProj, slideNumber, slideList[currentSlide]]; slides is [buttonPrev, buttonNext, slideX]; ## setting up the script to present the contents of the generic slide keyword = ""; paragraphs is findwordparatext(keyword, allparasplusslides); ## this is default paratext is paragraphs[ixpara]; ixpara = 1; ## this is default allsentences is splitintosentences(paratext); numsentences is allsentences#; ## this is default seqsentences is list1tok(min(sentencessofar, numsentences)); ## this is default /* ixselsentences is list1tok(allsentences#); ## this is default ## use to update "sentence n of N" ## and maybe control behaviour "mod allsentences#" selsentences is filter(allsentences, ixselsentences); parasofarread is concatpsentences(filter(selsentences,seqsentences)); */ ## the defns commmented out above were previously used to enable the selection of sentences ## from a paragraph via observable ixselsentences: now reorganising management of state so ## that have means to specify the block of text generated by selecting a subset of sentences ## - see mkTextblock(). Also gives flexibility to concatenate blocks, interspersing explicitly ## specified content parasofarread is concatpsentences(filter(allsentences, seqsentences)); /* ## taking account of the selection of a subset of sentences: nextsentencelab is "Reading sentence " // str(ixselsentences[sentencessofar]) // " of " // str(allsentences#) // " ..."; nextsentenceenabled is (sentencessofar < ixselsentences#); */ nextsentencelab is "Reading sentence " // str(sentencessofar) // " of " // str(allsentences#) // " ..."; nextsentenceenabled is (sentencessofar < allsentences#); ## default context allows a specific paragraph in the essay to be selected (by assigning a value to ixpara) ## and permits the first numsentences on the slide to be displayed ## can change what paragraph(s) is/are supplied, how many sentences are displayed, and which are selected ## so can provide your own custom paragraph ## for purposes of presentation, paragraphs is defined to be paraSlides ## initially paraSlides = [titleheader]; ixpara = paraSlides#; ixsentence = 1; ## the generic description of slideX is: ## slideX is Slide("

" // parasofarread // "

"); ## no need for the extra

slideX is Slide(parasofarread); ## paragraphs is paraSlides; ########################################## slideList is [dummy1, dummy2, dummy3]; ## needed in order to make currentSlide = 1/2/3 controllable by the Previous / Next buttons - otherwise redundant ## slides is [buttonPrev, buttonNext, (currentSlide == 1) ? slideX : ((currentSlide == 2) ? Slide(paraSlideAux[currAuxSlide]) : slideStream3)]; currentSlide = 1; slideStream3 = allparasplusslides; paraSlideAux = allparasplusslides; currAuxSlide is (ixpara<=6) ? 11 + ixpara%2 : ixpara-6;