package Ġorg . jetbrains . kotlin . spec Ċ Ċ import Ġcom . github . aj alt . cli kt . core . Cli kt Command Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments . argument Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments . convert Ċ import Ġcom . github . aj alt . cli kt . parameters . options . convert Ċ import Ġcom . github . aj alt . cli kt . parameters . options . flag Ċ import Ġcom . github . aj alt . cli kt . parameters . options . option Ċ import Ġcom . zaxxer . n up ro cess . Nu Abstract Process Handler Ċ import Ġcom . zaxxer . n up ro cess . Nu Process Ċ import Ġcom . zaxxer . n up ro cess . Nu Process Builder Ċ import Ġcom . zaxxer . n up ro cess . Nu Process Handler Ċ import Ġru . spb stu . pand oc .* Ċ import Ġjava . io . File Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ object ĠInline K at ex Ġ: ĠP and oc Visitor () Ġ{ ĊĠĠĠ Ġval Ġkat ex Cache : ĠMutable Map < String , ĠInline > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġfun Ġkat ex ( text : ĠString , Ġdisplay : ĠBoolean ): ĠInline Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstd Out Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġval Ġexit Code Ġ= ĠCompletableFuture < Int >() ĊĊĠĠĠĠĠĠĠ Ġval Ġprocess Listener Ġ= Ġobject Ġ: ĠNu Abstract Process Handler () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stderr ( buffer : ĠByteBuffer , Ġclosed : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . append ( Charsets . UTF _ 8 . decode ( buffer )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Stderr ( buffer , Ġclosed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stdout ( buffer : ĠByteBuffer , Ġclosed : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstd Out . append ( Charsets . UTF _ 8 . decode ( buffer )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Stdout ( buffer , Ġclosed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Exit ( statusCode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Code . complete ( statusCode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġn px Ġ= Ġ"../ web / build / node _ modules /. bin / kat ex " ĊĠĠĠĠĠĠĠ Ġval Ġkat ex Ġ= Ġif ( display ) ĠNu Process Builder ( process Listener , Ġn px , Ġ"-- display - mode ") ĊĠĠĠĠĠĠĠ Ġelse ĠNu Process Builder ( process Listener , Ġn px ) ĊĊĠĠĠĠĠĠĠ Ġwith ( kat ex . start ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Std in ( Charsets . UTF _ 8 . encode ( text )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Std in ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit Code . get () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInline . Raw Inline ( Format . HTML , Ġ"$ std Out ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit ( i : ĠInline . Math ): ĠInline Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġi . type Ġ== ĠMath Type . Display Math ĊĊĠĠĠĠĠĠĠ Ġreturn Ġkat ex Cache . get Or Put ( i . text ) Ġ{ Ġkat ex ( i . text , Ġdisplay ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠDo Nothing : ĠP and oc Visitor () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvisit ( doc : ĠP and oc ): ĠP and oc Ġ= Ġdoc Ċ } Ċ Ċ private Ġobject ĠInline K at ex Filter Ġ: ĠCli kt Command () Ġ{ ĊĠĠĠ Ġval Ġformat : ĠFormat Ġby Ġargument (" P and oc Ġoutput Ġformat "). convert Ġ{ ĠFormat ( it ) Ġ} ĊĠĠĠ Ġval Ġdisable Static Math Ġby Ġoption (). flag ("-- enable - static - math ") ĊĊĠĠĠ Ġval Ġis HTML Ġget () Ġ= Ġformat . is HTML () ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( is HTML Ġ&& Ġ! disable Static Math ) Ġmake Filter ( Inline K at ex ) ĊĠĠĠĠĠĠĠ Ġelse Ġmake Filter ( Do Nothing ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ= ĠInline K at ex Filter . main ( args ) Ċ