/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠLe ah ĠN ich ita Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . fer elin . core . utils Ċ Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlin . concurrent . timer Task Ċ Ċ const Ġval ĠSH AR ING _ STOP _ TIMEOUT Ġ= Ġ 5 0 0 0 L Ċ Ċ fun Ġwith Timer ( time : ĠLong Ġ= Ġ 2 0 0 L , Ġbody : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ ĠTimer (). schedule ( timer Task Ġ{ ĊĠĠĠĠĠĠĠ Ġbody . invoke () ĊĠĠĠ Ġ}, Ġtime ) Ċ } Ċ Ċ /* Ċ * ĠBuilds Ġprofit Ġstring . ĠExample : Ċ * ĠCall : ĠĠĠ Ġbuild Profit String Ġ( 1 0 0 . 0 , Ġ 5 0 . 0 ) Ċ * ĠResult : Ġ Ġ"+ $ 5 0 . 0 Ġ( 5 0 , 0 % )" Ċ * Ġ*/ Ċ fun Ġbuild Profit String ( current Price : ĠDouble , Ġprevious Price : ĠDouble ): ĠString Ġ{ ĊĠĠĠ Ġval Ġnumber Profit Ġ= Ġcurrent Price Ġ- Ġprevious Price ĊĠĠĠ Ġval Ġnumber Profit Str Ġ= Ġnumber Profit . toString () ĊĊĠĠĠ Ġval Ġdigit Number Profit Ġ= Ġnumber Profit Str . substring Before ('. '). filter Ġ{ Ġit . is Digit () Ġ} ĊĠĠĠ Ġval Ġremainder Number Profit Ġ= Ġwith ( number Profit Str . substring After ('. ')) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( length Ġ>= Ġ 2 ) Ġsubstring ( 0 , Ġ 2 ) Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġpercent Profit Ġ= Ġ( 1 0 0 Ġ* Ġ( current Price Ġ- Ġprevious Price ) Ġ/ Ġcurrent Price ). toString () ĊĠĠĠ Ġval Ġdigit Percent Profit Ġ= Ġpercent Profit . substring Before ('. '). filter Ġ{ Ġit . is Digit () Ġ} ĊĠĠĠ Ġval Ġremainder Percent Profit Ġ= Ġwith ( percent Profit . substring After ('. ')) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( length Ġ>= Ġ 2 ) Ġsubstring ( 0 , Ġ 2 ) Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġprefix Ġ= Ġif Ġ( current Price Ġ> Ġprevious Price ) Ġ" +" Ġelse Ġ"-" ĊĠĠĠ Ġreturn Ġ"$ prefix $$ digit Number Profit .$ remainder Number Profit Ġ($ digit Percent Profit ,$ remainder Percent Profit % )" Ċ } Ċ Ċ fun ĠLong . toDate Str (): ĠString Ġ{ ĊĠĠĠ Ġval Ġdate Pattern Ġ= Ġ" dd ĠM MM Ġy yyy " ĊĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat ( date Pattern , ĠLocale . EN GL ISH ) ĊĠĠĠ Ġreturn ĠdateFormat . format ( Date ( this )). filter Ġ{ Ġit Ġ!= Ġ',' Ġ} Ċ } Ċ Ċ fun Ġparse Month From Date ( date : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġdate . filter Ġ{ Ġit . is Letter () Ġ} Ċ } Ċ Ċ fun Ġparse Year From Date ( date : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġdate . split (" Ġ"). get OrNull ( 2 ) Ġ?: Ġ"" Ċ } Ċ Ċ /* Ċ * ĠBuilds Ġprice Ġstring Ġfrom Ġdouble Ċ * ĠCall : ĠĠĠĠ Ġadapt Price ( 2 2 5 3 . 1 4 ) Ċ * ĠResult : ĠĠ Ġ$ 2 Ġ 2 5 3 . 1 4 Ċ * Ġ*/ Ċ fun ĠDouble . to Str Price (): ĠString Ġ{ ĊĠĠĠ Ġvar Ġresult Str Ġ= Ġ"" ĊĠĠĠ Ġval Ġprice Str Ġ= Ġthis . toString () ĊĊĠĠĠ Ġval Ġreminder Ġ= Ġprice Str . substring After (".") ĊĠĠĠ Ġvar Ġformatted Separator Ġ= Ġ"." ĊĠĠĠ Ġval Ġformatted Reminder Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġreminder . length Ġ> Ġ 2 Ġ-> Ġreminder . substring ( 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġreminder . last () Ġ== Ġ' 0 ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformatted Separator Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreminder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġinteger Ġ= Ġprice Str . substring Before (".") ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġfor Ġ( index Ġin Ġinteger . length Ġ- Ġ 1 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Str Ġ+= Ġinteger [ index ] ĊĠĠĠĠĠĠĠ Ġcounter ++ ĊĠĠĠĠĠĠĠ Ġif Ġ( counter Ġ== Ġ 3 Ġ&& Ġindex Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Str Ġ+= Ġ" Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġ"$ ${ result Str . reversed ()} $ formatted Separator $ formatted Reminder " Ċ }