package Ġcom . app ac ou stic . android . db calculator . domain Ċ Ċ abstract Ġclass ĠOperator Formatter ( private Ġval Ġseparator : ĠSe parator ) Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠSe parator ( val Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPL US (" Ġ+ Ġ"), ĊĠĠĠĠĠĠĠ ĠMIN US (" Ġ- Ġ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( input : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( input . isBlank ()) Ġreturn Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Number Ġ= Ġcurrent Number ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġrest Of The Input Ġ= Ġinput . substring ( 0 , Ġinput . length Ġ- Ġcurrent Number . length ) ĊĊĠĠĠĠĠĠĠ Ġval Ġseparator Ġ= Ġseparator . value ĊĠĠĠĠĠĠĠ Ġif Ġ( current Number Ġ== Ġ". ") Ġreturn Ġrest Of The Input Ġ+ Ġ" 0 ." Ġ+ Ġseparator ĊĠĠĠĠĠĠĠ Ġif Ġ( current Number . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( current Number . last (). toString () Ġ!= Ġ". ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ+ Ġseparator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Of The Input Ġ+ Ġcurrent Number . substring ( 0 , Ġcurrent Number . length Ġ- Ġ 1 ) Ġ+ Ġseparator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( rest Of The Input . isNotBlank () Ġ&& Ġrest Of The Input . last (). toString () Ġ== Ġ" Ġ") Ġreturn Ġinput ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinput Ġ+ Ġseparator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcurrent Number ( input : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinput . substring After Last (" Ġ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠAdd Formatter Ġ: ĠOperator Formatter ( Separator . PLUS ) Ċ class ĠMin us Formatter Ġ: ĠOperator Formatter ( Separator . MINUS ) Ċ