package Ġcom . g ig aw ork s . tech . calculator . ui . main . helper Ċ Ċ fun Ġhandle Delete ( expression : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġtemp Expression Ġ= Ġexpression ĊĠĠĠ Ġvar Ġlast Character : ĠChar ĊĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠ Ġtemp Expression Ġ= Ġtemp Expression . drop Last ( 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( temp Expression . isEmpty ()) Ġbreak ĊĠĠĠĠĠĠĠ Ġlast Character Ġ= Ġtemp Expression . last () ĊĠĠĠ Ġ} Ġwhile Ġ( last Character . is Trig on ometric Char ()) ĊĊĠĠĠ Ġreturn Ġtemp Expression Ċ } Ċ Ċ fun Ġhandle Click ( expression : ĠString , Ġstring : ĠString , Ġis Prev Result : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠ Ġval Ġnumber Set Ġ= Ġset Of (" 0 ", Ġ" 1 ", Ġ" 2 ", Ġ" 3 ", Ġ" 4 ", Ġ" 5 ", Ġ" 6 ", Ġ" 7 ", Ġ" 8 ", Ġ" 9 ") ĊĠĠĠ Ġval Ġtrig on ometric Set Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠ Ġ" sin ", ĊĠĠĠĠĠĠĠ Ġ" cos ", ĊĠĠĠĠĠĠĠ Ġ" tan ", ĊĠĠĠĠĠĠĠ Ġ" sin âģ » Â ¹ ", ĊĠĠĠĠĠĠĠ Ġ" cos âģ » Â ¹ ", ĊĠĠĠĠĠĠĠ Ġ" tan âģ » Â ¹ ", ĊĠĠĠĠĠĠĠ Ġ" log ", ĊĠĠĠĠĠĠĠ Ġ" ln " ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġright Unary Set Ġ= Ġset Of ("% ", Ġ" !") ĊĠĠĠ Ġval Ġleft Unary Set Ġ= Ġset Of (" âĪ ļ ", Ġ" âĪ Ľ ") ĊĠĠĠ Ġval Ġconstant Set Ġ= Ġset Of (" ÏĢ ", Ġ" e ") ĊĠĠĠ Ġval Ġbinary Operator Set Ġ= Ġset Of (" Ã · ", Ġ" ÃĹ ", Ġ"+", Ġ"^ ") ĊĠĠĠ Ġreturn Ġwhen Ġ( string ) Ġ{ ĊĠĠĠĠĠĠĠ Ġin Ġnumber Set Ġ-> Ġhandle Number Click ( expression , Ġstring , Ġis Prev Result ) ĊĠĠĠĠĠĠĠ Ġin Ġtrig on ometric Set Ġ-> Ġhandle Trig on ometric Click ( expression , Ġstring ) ĊĠĠĠĠĠĠĠ Ġin Ġright Unary Set Ġ-> Ġhandle Right Unary Click ( expression , Ġstring , Ġis Prev Result ) ĊĠĠĠĠĠĠĠ Ġin Ġleft Unary Set Ġ-> Ġhandle Left Unary Click ( expression , Ġstring ) ĊĠĠĠĠĠĠĠ Ġin Ġconstant Set Ġ-> Ġhandle Constant Click ( expression , Ġstring , Ġis Prev Result ) ĊĠĠĠĠĠĠĠ Ġin Ġbinary Operator Set Ġ-> Ġhandle Binary Operator Click ( expression , Ġstring ) ĊĠĠĠĠĠĠĠ Ġ"-", Ġ"\ u 2 2 1 2 " Ġ-> Ġhandle Minus Click ( expression , Ġstring ) ĊĠĠĠĠĠĠĠ Ġ"(" Ġ-> Ġhandle Open Bracket Click ( expression ) ĊĠĠĠĠĠĠĠ Ġ")" Ġ-> Ġhandle Close Bracket Click ( expression ) ĊĠĠĠĠĠĠĠ Ġ"." Ġ-> Ġhandle Decimal Click ( expression ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"$ expression $ string " ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġhandle Minus Click ( expression : ĠString , Ġstring : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( expression . isEmpty ()) Ġreturn Ġstring ĊĠĠĠ Ġval Ġlast Char Ġ= Ġexpression . last () ĊĠĠĠ Ġif Ġ( last Char . isNumber () Ġ|| Ġlast Char . is Unary Operator () Ġ|| Ġlast Char Ġ== Ġ')' Ġ|| Ġlast Char Ġ== Ġ'(' ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ expression $ string " ĊĠĠĠ Ġif Ġ( last Char Ġ== Ġ'.') Ġreturn Ġ"${ expression } 0 $ string " ĊĠĠĠ Ġif Ġ( last Char . is Binary Operator () Ġ&& Ġexpression . length Ġ> Ġ 1 Ġ&& Ġexpression [ expression . last Index Ġ- Ġ 1 ]. isNumber ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( last Char Ġ== Ġ'\ u 2 2 1 2 ' Ġ|| Ġlast Char Ġ== Ġ'-') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Ġ= Ġexpression . drop Last ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ exp +" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ expression $ string " ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġexpression Ċ } ĊĊ Ċ private Ġfun Ġhandle Binary Operator Click ( expression : ĠString , Ġstring : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( expression . isEmpty ()) Ġreturn Ġexpression ĊĠĠĠ Ġval Ġlast Char Ġ= Ġexpression . last () ĊĠĠĠ Ġif Ġ( last Char . isNumber () Ġ|| Ġlast Char . is Right Unary Operator () Ġ|| Ġlast Char Ġ== Ġ') ') Ġreturn Ġ"$ expression $ string " ĊĠĠĠ Ġif Ġ( last Char Ġ== Ġ'.') Ġreturn Ġ"${ expression } 0 $ string " ĊĠĠĠ Ġif Ġ( last Char . is Operator () Ġ&& Ġexpression . length Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( last Char Ġ== Ġ'\ u 2 2 1 2 ' Ġ|| Ġlast Char Ġ== Ġ'-') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Last Ġ= Ġexpression [ expression . last Index Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( second Last Ġ== Ġ'(' Ġ|| Ġsecond Last . is Left Unary Operator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġexpression ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexp Ġ= Ġremove From End Until ( expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Binary Operator () Ġ|| Ġit . is Left Unary Operator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ exp $ string " ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġexpression Ċ } Ċ Ċ private Ġfun Ġhandle Decimal Click ( expression : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( expression . isEmpty ()) Ġreturn Ġ" 0 ." ĊĠĠĠ Ġval Ġlast Char Ġ= Ġexpression . last () ĊĠĠĠ Ġif Ġ( last Char . is Digit () Ġ&& Ġcan Place Decimal ( expression )) Ġreturn Ġ"$ expression ." ĊĠĠĠ Ġif Ġ( last Char . is Right Unary Operator () Ġ|| Ġlast Char Ġ== Ġ') ') Ġreturn Ġ"$ expression ÃĹ 0 ." ĊĠĠĠ Ġif Ġ( last Char . is Operator () Ġ|| Ġlast Char Ġ== Ġ'(' ) Ġreturn Ġ"${ expression } 0 ." ĊĠĠĠ Ġreturn Ġexpression Ċ } Ċ Ċ private Ġfun Ġhandle Close Bracket Click ( expression : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( expression . isEmpty ()) Ġreturn Ġ"" ĊĠĠĠ Ġval Ġlast Char Ġ= Ġexpression . last () ĊĠĠĠ Ġif Ġ( last Char . isNumber () Ġ|| Ġlast Char . is Right Unary Operator () Ġ|| Ġlast Char Ġ== Ġ') ') Ġreturn Ġ"$ expression )" ĊĠĠĠ Ġif Ġ( last Char Ġ== Ġ'.') Ġreturn Ġ"${ expression } 0 )" ĊĠĠĠ Ġreturn Ġexpression Ċ } Ċ Ċ fun Ġhandle Constant Click ( expression : ĠString , Ġstring : ĠString , Ġis Prev Result : ĠBoolean ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( expression . isEmpty () Ġ|| Ġis Prev Result ) Ġreturn Ġstring ĊĠĠĠ Ġval Ġlast Char Ġ= Ġexpression . last () ĊĠĠĠ Ġif Ġ( last Char . is Right Unary Operator () Ġ|| Ġlast Char . isNumber () Ġ|| Ġlast Char Ġ== Ġ') ') ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ expression \ u 0 0 D 7 $ string " ĊĠĠĠ Ġif Ġ( last Char Ġ== Ġ'.') Ġreturn Ġ"${ expression } 0 ÃĹ $ string " ĊĠĠĠ Ġreturn Ġ"$ expression $ string " Ċ } Ċ Ċ private Ġfun Ġhandle Open Bracket Click ( expression : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( expression . isEmpty ()) Ġreturn Ġ"(" ĊĠĠĠ Ġval Ġlast Char Ġ= Ġexpression . last () ĊĠĠĠ Ġif Ġ( last Char . isNumber () Ġ|| Ġlast Char . is Right Unary Operator () Ġ|| Ġlast Char Ġ== Ġ') ') Ġreturn Ġ"$ expression ÃĹ (" ĊĠĠĠ Ġif Ġ( last Char . is Operator () Ġ|| Ġlast Char Ġ== Ġ'(' ) Ġreturn Ġ"$ expression (" ĊĠĠĠ Ġif Ġ( last Char Ġ== Ġ'.') Ġreturn Ġ"${ expression } 0 ÃĹ (" ĊĠĠĠ Ġreturn Ġexpression Ċ } Ċ Ċ private Ġfun Ġhandle Right Unary Click ( ĊĠĠĠ Ġexpression : ĠString , ĊĠĠĠ Ġstring : ĠString , ĊĠĠĠ Ġis Prev Result : ĠBoolean Ċ ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( expression . isEmpty ()) Ġreturn Ġ"" ĊĠĠĠ Ġif Ġ( is Prev Result ) Ġreturn Ġ"$ expression $ string " ĊĠĠĠ Ġval Ġlast Char Ġ= Ġexpression . last () ĊĠĠĠ Ġif Ġ( last Char . isNumber () Ġ|| Ġlast Char Ġ== Ġ') ') Ġreturn Ġ"$ expression $ string " ĊĠĠĠ Ġif Ġ( last Char . is Right Unary Operator ()) Ġreturn Ġ"${ expression . drop Last ( 1 )} $ string " ĊĠĠĠ Ġif Ġ( last Char Ġ== Ġ'.') Ġreturn Ġ"${ expression } 0 $ string " ĊĠĠĠ Ġif Ġ( last Char . is Operator () Ġ&& Ġexpression . length Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( last Char Ġ== Ġ'\ u 2 2 1 2 ' Ġ|| Ġlast Char Ġ== Ġ'-') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Last Ġ= Ġexpression [ expression . last Index Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( second Last Ġ== Ġ'(' Ġ|| Ġsecond Last . is Left Unary Operator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġexpression ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexp Ġ= Ġremove From End Until ( expression ) Ġ{ Ġit . is Operator () Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( exp . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ exp $ string " ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġexpression Ċ } Ċ Ċ private Ġfun Ġhandle Left Unary Click ( expression : ĠString , Ġstring : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( expression . isEmpty ()) Ġreturn Ġstring ĊĠĠĠ Ġval Ġlast Char Ġ= Ġexpression . last () ĊĠĠĠ Ġif Ġ( last Char . isNumber () Ġ|| Ġlast Char . is Right Unary Operator () Ġ|| Ġlast Char Ġ== Ġ') ') ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ expression ÃĹ $ string " ĊĠĠĠ Ġif Ġ( last Char . is Operator () Ġ|| Ġlast Char Ġ== Ġ'(' ) Ġreturn Ġ"$ expression $ string " ĊĠĠĠ Ġif Ġ( last Char Ġ== Ġ'.') Ġreturn Ġ"${ expression } 0 ÃĹ $ string " ĊĠĠĠ Ġreturn Ġexpression Ċ } Ċ Ċ private Ġfun Ġhandle Trig on ometric Click ( expression : ĠString , Ġstring : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( expression . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Char Ġ= Ġexpression . last () ĊĠĠĠĠĠĠĠ Ġif Ġ( last Char . isNumber () Ġ|| Ġlast Char . is Right Unary Operator () Ġ|| Ġlast Char Ġ== Ġ') ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ expression ÃĹ $ string (" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( last Char Ġ== Ġ'.') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ expression } 0 ÃĹ $ string (" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ expression $ string (" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ"$ string (" ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġhandle Number Click ( expression : ĠString , Ġstring : ĠString , Ġis Prev Result : ĠBoolean ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( expression . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Prev Result ) Ġreturn Ġstring ĊĠĠĠĠĠĠĠ Ġval Ġlast Char Ġ= Ġexpression . last () ĊĠĠĠĠĠĠĠ Ġif Ġ( last Char . is Right Unary Operator () Ġ|| Ġlast Char . is Constant () Ġ|| Ġlast Char Ġ== Ġ') ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ expression \ u 0 0 D 7 $ string " ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġ"$ expression $ string " Ċ }