package Ġnet . assemble . android . common . filter čĊč Ċ import Ġandroid . text . Input Filter č Ċ import Ġandroid . text . Sp anned č Ċ import Ġjava . text . NumberFormat č Ċ import Ġjava . util .* č Ċ import Ġjava . util . regex . Pattern čĊč Ċ open Ġclass ĠCurrency Format ( locale : ĠLocale ) Ġ: ĠInput Filter Ġ{ čĊĠĠĠ Ġprivate Ġval Ġcurrency Ġ= ĠCurrency . getInstance ( locale ) !! čĊĠĠĠ Ġprotected Ġval Ġfraction Digits Ġ= Ġcurrency . default Fraction Digits čĊĠĠĠ Ġprivate Ġval Ġfraction Pow Ġ= Ġ( 1 .. fraction Digits ). fold ( 1 , Ġ{ Ġacc , Ġ_ Ġ-> Ġacc Ġ* Ġ 1 0 Ġ}) čĊčĊĠĠĠ Ġoverride Ġfun Ġfilter ( source : ĠCharSequence , Ġstart : ĠInt , Ġend : ĠInt , Ġdest : ĠSp anned , Ġd start : ĠInt , Ġd end : ĠInt ): ĠCharSequence ? Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġpattern Ġ= ĠPattern . compile ("( 0 |[ 1 - 9 ]+ [ 0 - 9 ]*) " Ġ+ Ġif Ġ( fraction Digits Ġ> Ġ 0 ) Ġ" ?( \\ .[ 0 - 9 ]{ 0 ,$ fraction Digits }) ?" Ġelse Ġ"") čĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġ( dest . sub Sequence ( 0 , Ġd start ). toString () Ġ+ Ġsource . toString () Ġ+ Ġdest . sub Sequence ( d end , Ġdest . length )) čĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= Ġpattern . matcher ( result ) čĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! matcher . matches ()) Ġdest . sub Sequence ( d start , Ġd end ) Ġelse Ġnull čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ éĩĳ é¡ į ( æķ´æķ° åĢ¤ ) ãĤĴ éĩĳ é¡ į ( å°ı æķ° åĢ¤ ) ãģ« å¤ī æıĽ čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġfee Ġ éĩĳ é¡ į ( æķ´æķ° åĢ¤ ) čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġformat ( fee : ĠInt ) Ġ= Ġ(" % d " Ġ+ Ġif Ġ( fraction Digits Ġ> Ġ 0 ) Ġ". % 0 ${ fraction Digits } d " Ġelse Ġ"") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( fee Ġ/ Ġfraction Pow , Ġfee Ġ% Ġfraction Pow ) čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ éĩĳ é¡ į ( æķ´æķ° åĢ¤ ) ãĤĴ éĩĳ é¡ į æĸĩåŃĹåĪĹ ãģ« å¤ī æıĽ čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġfee Ġ éĩĳ é¡ į ( æķ´æķ° åĢ¤ ) čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġformat Currency ( fee : ĠInt ): ĠString Ġ= ĠNumber Format . getC urrency Instance () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( fee Ġ+ Ġ( fee Ġ% Ġfraction Pow ). toDouble () Ġ/ Ġfraction Pow ) čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ éĩĳ é¡ į ( å°ı æķ° åĢ¤ ) ãĤĴ éĩĳ é¡ į ( æķ´æķ° åĢ¤ ) ãģ« å¤ī æıĽ čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġfee Str Ġ éĩĳ é¡ į ( æķ´æķ° åĢ¤ ) čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġparse ( fee Str : ĠString ) Ġ= Ġfee Str . split (". "). let Ġ{ čĊĠĠĠĠĠĠĠ Ġit [ 0 ]. toInt () Ġ* Ġfraction Pow Ġ+ Ġif Ġ( it . count () Ġ> Ġ 1 ) Ġit [ 1 ]. toInt () Ġelse Ġ 0 čĊĠĠĠ Ġ} č Ċ } čĊ