package Ġio . github . f om in . o as gen Ċ Ċ import Ġjava . lang . StringBuilder Ċ Ċ fun ĠString . indent With Margin ( indent Level : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġthis . lines (). indent With Margin ( indent Level ) Ċ Ċ fun ĠIterable < String >. indent With Margin ( indent : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . lines () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("\ n |$ indent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove Suffix ("\ n |$ indent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. lines () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("\ n ") Ġ{ Ġit . trim End () Ġ} Ċ } Ċ Ċ fun ĠIterable < String >. indent With Margin ( indent Level : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġval Ġindent Ġ= Ġ( 0 Ġuntil Ġindent Level ). fold ( StringBuilder ()) Ġ{ sb , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġsb . append (" ĠĠĠ Ġ") ĊĠĠĠĠĠĠĠ Ġsb ĊĠĠĠ Ġ}. toString () ĊĠĠĠ Ġreturn Ġthis . indent With Margin ( indent ) Ċ } Ċ Ċ fun ĠString . trim End ings (): ĠString Ġ= Ġthis . lines (). map Ġ{ Ġit . trim End () Ġ}. join ToString ("\ n ") Ċ Ċ fun Ġescape Reserved Words And Chars ( replacement Chars : ĠList < Pair < String , ĠString >>, Ġreserved Words : ĠSet < String >, Ġvar arg Ġparts : ĠString ): ĠList < String > Ġ{ ĊĠĠĠ Ġval Ġfiltered Parts Ġ= Ġparts . map Ġ{ Ġpart Ġ-> ĊĠĠĠĠĠĠĠ Ġreplacement Chars . fold ( part ) Ġ{ Ġacc , Ġreplacement Pair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc . replace ( replacement Pair . first , Ġreplacement Pair . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġwhen Ġ( filtered Parts . size ) Ġ{ ĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsingle Part Ġ= Ġfiltered Parts [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreserved Words . contains ( single Part ) Ġ-> ĠlistOf ("$ single Part $ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠlistOf ( single Part ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġfiltered Parts ĊĠĠĠ Ġ} Ċ Ċ }