package Ġcn . w uy at ang . ans ip ipe . ui Ċ Ċ import Ġcn . w uy at ang . ans ip ipe . Ansi Ċ import Ġcn . w uy at ang . ans ip ipe . Ansi . Color .* Ċ import Ġcn . w uy at ang . ans ip ipe . Ansi . Control .* Ċ import Ġcn . w uy at ang . ans ip ipe . Ansi . Feature .* Ċ import Ġcn . w uy at ang . ans ip ipe . Pipe Processor ĊĊ Ċ /** Ċ Ġ* ĠThe ĠWindow Ġclass . Ċ Ġ* Ġ@ param Ġinner ĠThe Ġrectangle Ġof Ġthis Ġwindow . ĠThis Ġwill Ġbe Ġused Ġas Ġthe Ġinner Ġrectangle . Ċ Ġ* Ġ@ param Ġborder Style ĠA Ġstring Ġto Ġrepresent Ġthe Ġborders , Ġpossible Ġvalues Ġare : Ġ[ BORDER _ ASCII ], Ġ[ BORDER _ S LIM ], Ċ Ġ* Ġ[ BORDER _ BLANK ]. ĠIf Ġthis Ġstring Ġis Ġempty , Ġno Ġborder Ġwill Ġbe Ġpresent . ĠDefault Ġis Ġ[ BORDER _ S LIM ] Ċ Ġ* Ċ Ġ* Ġ@ param Ġshadow Style ĠA Ġstring Ġto Ġrepresent Ġthe Ġshadow , Ġpossible Ġvalues Ġare : Ġ[ BORDER _ ASCII ], Ġ[ BORDER _ S LIM ], Ċ Ġ* Ġ[ BORDER _ BLANK ]. ĠIf Ġthis Ġstring Ġis Ġempty , Ġno Ġshadow Ġwill Ġbe Ġpresented . ĠDefault Ġis Ġ[ BORDER _ BLANK ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġbg Format ĠA Ġ[ Format ] Ġobject Ġto Ġbe Ġused Ġas Ġthe Ġdefault Ġtext Ġstyle Ġof Ġthe Ġbackground Ġof Ġthis Ġwindow . Ċ Ġ* Ġ@ param Ġsh Format ĠA Ġ[ Format ] Ġobject Ġto Ġbe Ġused Ġas Ġthe Ġshadow Ġof Ġthe Ġwindow . Ċ Ġ*/ Ċ open Ġclass ĠWindow ( ĊĠĠĠ Ġval Ġinner : ĠRect Ġ= ĠRect ( 0 , Ġ 0 , Ġ 4 0 , Ġ 2 0 ), ĊĠĠĠ Ġval Ġborder Style : ĠString Ġ= ĠBORDER _ S LIM , ĊĠĠĠ Ġval Ġshadow Style : ĠString Ġ= ĠBORDER _ S LIM , ĊĠĠĠ Ġval Ġbg Format : ĠFormat ? Ġ= ĠFormat ( Bold , ĠWhite . fg Br , ĠBlue . bg Br ), ĊĠĠĠ Ġval Ġsh Format : ĠFormat ? Ġ= ĠFormat ( Black . fg , ĠBlack . bg Br ) Ċ ): ĠPipe Processor , ĠAn si Paragraph () Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandle Ġone Ġloop Ġof Ġpipe Ġprocess . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġwill : ĊĠĠĠĠ Ġ* Ġ 1 . ĠRead Ġfrom Ġthe Ġconsole Ġ 1 Ġchar . ĊĠĠĠĠ Ġ* Ġ 2 . ĠThen Ġoutput Ġto Ġthe Ġconsole . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġraw ĠThe Ġraw Ġinput Ġstring Ġfrom Ġthe Ġconsole . ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġinput Ġkey Ġfrom Ġthe Ġconsole . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġto Ġcontinue Ġloop , Ġfalse Ġto Ġbreak . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġprocess ( raw : ĠString , Ġkey : ĠAn si . Key ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDo ing Ġnothing . ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandle Ġresize Ġmessage Ġfrom Ġscript . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwidth ĠThe Ġscreen Ġwidth Ġin Ġchars . ĊĠĠĠĠ Ġ* Ġ@ param Ġheight ĠThe Ġscreen Ġheight Ġin Ġchars . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġto Ġcontinue Ġloop , Ġfalse Ġto Ġbreak . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġresized ( width : ĠInt , Ġheight : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDo ing Ġnothing . ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComp anion Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠBORDER _ S LIM Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠâĶ Į âĶĢâĶ Ĳ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĤ ĠâĶĤ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠâĶĶ âĶĢâĶ ĺ ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval ĠBORDER _ ASCII Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+- + ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+- + ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval ĠBORDER _ BLANK Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ... ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (). replace ('.', Ġ' Ġ') ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor , ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĠThe Ġx Ġcoordinate Ġof Ġthe Ġtop Ġleft Ġcorner ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĠThe Ġy Ġcoordinate Ġof Ġthe Ġtop Ġleft Ġcorner ĊĠĠĠĠ Ġ* Ġ@ param Ġw ĠThe Ġ( inner ) Ġwidth Ġof Ġthis Ġwindow ĊĠĠĠĠ Ġ* Ġ@ param Ġh ĠThe Ġ( inner ) Ġheight Ġof Ġthis Ġwindow ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġborder Style ĠA Ġstring Ġto Ġrepresent Ġthe Ġborders , Ġpossible Ġvalues Ġare : Ġ[ BORDER _ ASCII ], Ġ[ BORDER _ S LIM ], ĊĠĠĠĠ Ġ* Ġ[ BORDER _ NONE ]. ĠIf Ġthis Ġstring Ġis Ġempty , Ġno Ġborder Ġwill Ġbe Ġpresent . ĠDefault Ġis Ġ[ BORDER _ S LIM ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġshadow Style ĠA Ġcharacter Ġ( represent Ġas ĠString ) Ġto Ġdefine Ġthe Ġshadow . ĠIf Ġthis Ġstring Ġis Ġempty , Ġno Ġborder ĊĠĠĠĠ Ġ* Ġwill Ġbe Ġpresented . ĠDefault Ġis Ġ' Ġ' Ġ( a Ġspace ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbg Format ĠA Ġ[ Format ] Ġobject Ġto Ġbe Ġused Ġas Ġthe Ġdefault Ġtext Ġstyle Ġof Ġthe Ġbackground Ġof Ġthis Ġwindow . ĊĠĠĠĠ Ġ* Ġ@ param Ġsh Format ĠA Ġ[ Format ] Ġobject Ġto Ġbe Ġused Ġas Ġthe Ġshadow Ġof Ġthe Ġwindow . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor Ġ( ĊĠĠĠĠĠĠĠ Ġx : ĠInt , Ġy : ĠInt , Ġw : ĠInt , Ġh : ĠInt , ĊĠĠĠĠĠĠĠ Ġborder Style : ĠString Ġ= ĠBORDER _ S LIM , ĊĠĠĠĠĠĠĠ Ġshadow Style : ĠString Ġ= ĠBORDER _ S LIM , ĊĠĠĠĠĠĠĠ Ġbg Format : ĠFormat ? Ġ= ĠFormat ( Bold , ĠWhite . fg Br , ĠBlue . bg Br ), ĊĠĠĠĠĠĠĠ Ġsh Format : ĠFormat ? Ġ= ĠFormat ( Black . fg , ĠBlack . bg Br ) ĊĠĠĠ Ġ): Ġthis ( ĊĠĠĠĠĠĠĠ ĠRect ( x , Ġy , Ġw , Ġh ), ĊĠĠĠĠĠĠĠ Ġborder Style , ĊĠĠĠĠĠĠĠ Ġshadow Style , ĊĠĠĠĠĠĠĠ Ġbg Format , ĊĠĠĠĠĠĠĠ Ġsh Format ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġouter Ġdimension Ġof Ġthis ĠWindow . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ> ĠNOTE : ĠThis Ġdoes ĠNOT Ġinclude Ġshadow s ! ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠ Ġval Ġouter Ġ= Ġobject : ĠRect () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġborder Ġ= Ġ( if ( border Style . isEmpty ()) Ġ 0 Ġelse Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġx : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġinner . x Ġ- Ġborder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġy : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġinner . y Ġ- Ġborder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġw : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġinner . w Ġ+ Ġborder Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġh : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġinner . h Ġ+ Ġborder Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRender Ġthis Ġwindow . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrender () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRender Ġshadow ĊĠĠĠĠĠĠĠ Ġif ( shadow Style . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsh Rect Ġ= Ġouter . clone (). apply { Ġoffset ( 1 , Ġ 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Rect ( sh Rect , Ġshadow Style , Ġsh Format ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠRender Ġbackground ĊĠĠĠĠĠĠĠ Ġrender Rect ( outer , Ġborder Style , Ġbg Format ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRender Ġcontents ĊĠĠĠĠĠĠĠ Ġval Ġcrop Rect Ġ= Ġinner . clone (). apply Ġ{ Ġset ( 0 , Ġ 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġrender ( inner , Ġbg Format , Ġcrop Rect ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRender Ġa Ġrectangle ĊĠĠĠĠ Ġ* Ġ@ param Ġrect ĠThe Ġouter Ġrectangle Ġto Ġrender ĊĠĠĠĠ Ġ* Ġ@ param Ġstyle ĠThe Ġbackground Ġstyle , Ġpossible Ġvalues Ġare Ġ[ BORDER _ BLANK ], Ġ[ BORDER _ S LIM ], Ġ[ BORDER _ ASCII ] Ġ... Ġetc . ĊĠĠĠĠ Ġ* Ġ@ param Ġformat ĠThe Ġbackground Ġformat ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrender Rect ( rect : ĠRect , Ġstyle : ĠString , Ġformat : ĠFormat ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwalls Ġ= Ġstyle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. split ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toCharArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . size Ġ>= Ġ 3 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ("", Ġ" Ġ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ("", Ġ" Ġ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ("", Ġ" Ġ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠAn si Paragraph () ĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġrect . h ). forEach Ġ{ Ġr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwl Ġ= Ġwhen Ġ( r ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġwalls [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect . h Ġ- Ġ 1 Ġ Ġ-> Ġwalls [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĠĠĠĠĠĠ Ġ-> Ġwalls [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . new Line () Ġ+ Ġformat Ġ+ Ġwl [ 0 ] Ġ+ Ġwl [ 1 ]. repeat ( rect . w Ġ- Ġ 2 ) Ġ+ Ġwl [ 2 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġp . render ( rect ) ĊĠĠĠ Ġ} Ċ } ĊĊ