package Ġpi ac enti . dsl maker . dsl . antlr Ċ Ċ import Ġorg . antlr . v 4 . kotlin runtime . Common Token Stream Ċ import Ġorg . antlr . v 4 . kotlin runtime . Token Ċ import Ġpi ac enti . dsl maker . dsl . Insertion Type Ċ Ċ interface ĠAnt lr Formatter And Highlight er Ġ{ ĊĠĠĠ Ġvar Ġexception On Failure : ĠBoolean ĊĠĠĠ Ġfun Ġhighlight And Format ( text : ĠString ): ĠString ĊĠĠĠ Ġfun Ġformat ( text : ĠString ): ĠString ĊĠĠĠ Ġfun Ġhighlight ( text : ĠString ): ĠString ĊĠĠĠ Ġfun Ġhighlight And Format Comp ut ations ( text : ĠString ): ĠAggregate Comp ut ations ĊĠĠĠ Ġfun Ġformat Comp ut ations ( text : ĠString ): ĠAggregate Comp ut ations ĊĠĠĠ Ġfun Ġhighlight Comp ut ations ( text : ĠString ): ĠAggregate Comp ut ations Ċ } Ċ Ċ abstract Ġclass ĠAnt lr Formatter And Highlight er Base Ġ: ĠAnt lr Formatter And Highlight er Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġformat ( text : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhighlight And Format ( text , Ġformat Ġ= Ġtrue , Ġhighlight Ġ= Ġfalse ). result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhighlight ( text : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhighlight And Format ( text , Ġformat Ġ= Ġfalse , Ġhighlight Ġ= Ġtrue ). result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhighlight And Format ( text : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhighlight And Format ( text , Ġformat Ġ= Ġtrue , Ġhighlight Ġ= Ġtrue ). result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhighlight And Format Comp ut ations ( text : ĠString ): ĠAggregate Comp ut ations Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhighlight And Format ( text , Ġformat Ġ= Ġtrue , Ġhighlight Ġ= Ġtrue ). re writer . all Comp ut ations ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġformat Comp ut ations ( text : ĠString ): ĠAggregate Comp ut ations Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhighlight And Format ( text , Ġformat Ġ= Ġtrue , Ġhighlight Ġ= Ġfalse ). re writer . all Comp ut ations ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhighlight Comp ut ations ( text : ĠString ): ĠAggregate Comp ut ations Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhighlight And Format ( text , Ġformat Ġ= Ġfalse , Ġhighlight Ġ= Ġtrue ). re writer . all Comp ut ations ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġhighlight And Format ( text : ĠString , Ġformat : ĠBoolean , Ġhighlight : ĠBoolean ): ĠAnt lr Formatter And Highlight er Listener Ċ } ĊĊ Ċ interface ĠAnt lr Formatter And Highlight er Listener Ġ{ ĊĠĠĠ Ġval Ġhighlight : ĠBoolean ĊĠĠĠ Ġval Ġformat : ĠBoolean ĊĠĠĠ Ġval Ġtab Type : ĠString ĊĠĠĠ Ġval Ġresult : ĠString Ġget () Ġ= Ġre writer . text ĊĠĠĠ Ġval Ġtoken Stream : ĠCommon Token Stream ĊĠĠĠ Ġval Ġre writer : ĠFast Token Stream Rew riter ĊĊĠĠĠ Ġfun Ġhighlight Token ( token : ĠToken ?, Ġhtml Class : ĠString , Ġattributes : ĠList < Pair < String , ĠString >> Ġ= Ġempty List ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( token Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġvar Ġattribute Text Ġ= Ġattributes . join ToString ( separator Ġ= Ġ" Ġ") Ġ{ Ġ"${ it . first } =${ it . second }" Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( attributes . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Text Ġ= Ġ" Ġ$ attribute Text " ĊĠĠĠĠĠĠĠ Ġre writer . replace ( token , Ġ"< span Ġclass ='$ html Class '$ attribute Text >${ token . text }</ span >") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhighlight Token Range ( tokens : ĠPair < Token ?, ĠToken ? >, Ġhtml Class : ĠString , Ġattributes : ĠList < Pair < String , ĠString >> Ġ= Ġempty List ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġtokens . first ĊĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġtokens . second ĊĠĠĠĠĠĠĠ Ġif Ġ( first Ġ== Ġnull Ġ|| Ġsecond Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġattribute Text Ġ= Ġattributes . join ToString ( separator Ġ= Ġ" Ġ") Ġ{ Ġ"${ it . first } =${ it . second }" Ġ} ĊĠĠĠĠĠĠĠ Ġre writer . insertBefore ( first , Ġ"< span Ġclass ='$ html Class '$ attribute Text >", ĠInsert ion Type . STYLE ) ĊĠĠĠĠĠĠĠ Ġre writer . insert After ( second , Ġ"</ span >", ĠInsert ion Type . STYLE ) ĊĠĠĠ Ġ} Ċ }