package Ġnl . h ann ah sten . tex ify idea . util . text Ċ Ċ import Ġnl . h ann ah sten . tex ify idea . util . capitalize First Ċ import Ġjava . util . regex . Pattern Ċ import Ġkotlin . random . Random Ċ Ċ /** Ċ Ġ* ĠGenerates Ġrandom Ġfill er / dummy Ġtext Ġbased Ġon Ġa Ġtemplate . Ċ Ġ* Ċ Ġ* ĠThe Ġgenerator Ġuses Ġa Ġtemplate Ġinput Ġfile Ġin Ġthe Ġfollowing Ġformat : Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* ĠKEY 1 Ċ Ġ* Ġvalue 1 Ċ Ġ* Ġvalue 2 Ċ Ġ* Ġvalue 3 Ċ Ġ* Ġ.. Ċ Ġ* Ġvalue N Ċ Ġ* Ċ Ġ* ĠKEY 2 Ċ Ġ* Ġvalue 1 Ċ Ġ* Ġ.. Ċ Ġ* Ġvalue N Ċ Ġ* Ċ Ġ* ĠTEXT Ċ Ġ* Ġsentence 1 Ċ Ġ* Ġsentence 2 Ċ Ġ* Ġ.. Ċ Ġ* Ġsentence N Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* ĠKeys Ġused Ġin Ġsentences Ġ( as Ġ`$ KEY 1 `) Ġwill Ġbe Ġsubstit uted Ġby Ġa Ġrandom Ġvalue . Ċ Ġ* Ċ Ġ* Ġ@ author ĠH ann ah ĠS che lle ken s Ċ Ġ*/ Ċ open Ġclass ĠTex ify Ip sum Generator ( ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġminimum Ġamount Ġof Ġparagraphs .. maximum Ġamount Ġof Ġparagraphs . ĊĠĠĠĠ Ġ* ĠDef init ive Ġamount Ġis Ġrandomly Ġdetermined . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠnumberOf Paragraph s : ĠInt Range Ġ= Ġ 3 .. 7 , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġminimum Ġamount Ġof Ġsentences Ġin Ġa Ġparagraph .. maximum Ġamount Ġof Ġsentences Ġin Ġa Ġparagraph . ĊĠĠĠĠ Ġ* ĠDef init ive Ġamount Ġis Ġrandomly Ġdetermined Ġfor Ġeach Ġparagraph . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠnumberOf Sent ences : ĠInt Range Ġ= Ġ 2 .. 2 0 , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġrandom Ġobject Ġto Ġuse Ġto Ġgenerate Ġrandom ness . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġrandom : ĠRandom Ġ= ĠRandom ( Random . nextInt ()), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhat Ġipsum Ġtemplate Ġto Ġuse . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġipsum : ĠIpsum Ġ= ĠIpsum . TEX IFY _ IDE A _ IP SUM Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMaps Ġeach ĠKEY Ġto Ġthe Ġlist Ġof Ġoptions . ĊĠĠĠĠ Ġ* ĠOnly Ġoptions Ġwith Ġthe ĠTEXT Ġkey Ġcan Ġcontain Ġ$ TEMPLATE Ġkeys . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġtemplate : ĠMap < String , ĠList < String >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġipsum . generate Input () ĊĠĠĠĠĠĠĠ Ġ// ĠWhether Ġthe Ġnew lines Ġare ĠWindows Ġor ĠUnix Ġstyle Ġdepends Ġon Ġwhich Ġsystem Ġthe Ġplugin Ġwas Ġbuilt , Ġso Ġcatch Ġboth ĊĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġinput . split ( Pattern . compile ("( \\ r ? \\ n ){ 2 , } ")) ĊĊĠĠĠĠĠĠĠ Ġparts . associate Ġ{ Ġtemplate Part Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġtemplate Part . lines () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġlines . first OrNull () Ġ?: Ġerror (" Invalid Ġtemplate Ġformat , Ġno Ġlines Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġto Ġlines . drop ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAll Ġavailable Ġtemplate Ġkeys . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġtemplate Keys : ĠSet < String > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate . keys Ġ- Ġset Of (" TEXT ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAll Ġavailable Ġsentences Ġin Ġthe Ġtemplate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġsentences : ĠList < String > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate [" TEXT "] Ġ?: Ġerror (" No ĠTEXT Ġkey Ġfound .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerates Ġa Ġlist Ġof Ġparagraphs Ġ( list Ġof Ġsentences ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgenerate (): ĠList < List < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparagraph Count Ġ= ĠnumberOf Paragraph s . random ( random ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ( 1 .. paragraph Count ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Paragraph () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerates Ġa Ġrandom Ġparagraph Ġwith Ġa Ġrandom Ġsize Ġin Ġrange Ġ[ numberOf Sent ences ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Paragraph (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsentence Count Ġ= ĠnumberOf Sent ences . random ( random ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ( 1 .. sentence Count ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsentences . random ( random ). apply Templates (). capitalize First () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSubst it utes Ġall Ġtemplates Ġwith Ġrandom Ġsub t itution s . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠString . apply Templates (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġtemplate Keys . forEach Ġ{ Ġkey Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubstitution s Ġ= Ġtemplate [ key ] Ġ?: Ġerror (" Key Ġ'$ key ' Ġnot Ġpresent Ġin Ġtemplate .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( result . contains (" $$ key ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult . replace First (" $$ key ", Ġsubstitution s . random ( random )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }