package Ġcom . red mad robot . input mask . helper Ċ Ċ import Ġcom . red mad robot . input mask . model . Caret String Ċ Ċ /** Ċ Ġ* Ġ### ĠAff inity Calculation Strategy Ċ Ġ* Ċ Ġ* ĠAllows Ġto Ġopt Ġfor Ġa Ġdifferent Ġmask Ġpicking Ġalgorithm Ġin Ġtext Ġfield Ġlisteners . Ċ Ġ*/ Ċ enum Ġclass ĠAff inity Calculation Strategy Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDefault Ġstrategy . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUses Ġ``` Mask ``` Ġbuilt - in Ġmechanism Ġto Ġcalculate Ġtotal Ġaff inity Ġbetween Ġthe Ġtext Ġand Ġthe Ġmask Ġformat . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠW HO LE _ STRING , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFinds Ġthe Ġlongest Ġcommon Ġprefix Ġbetween Ġthe Ġoriginal Ġtext Ġand Ġthe Ġsame Ġtext Ġafter Ġapplying Ġthe Ġmask . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠPREFIX ; ĊĊĠĠĠ Ġfun Ġcalculate Affinity Of Mask ( mask : ĠMask , Ġtext : ĠCare t String , Ġautocomplete : ĠBoolean ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW HO LE _ STRING Ġ-> Ġmask . apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCare t String ( text . string , Ġtext . caret Position ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġautocomplete ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). affinity ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPREFIX Ġ-> Ġmask . apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCare t String ( text . string , Ġtext . caret Position ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġautocomplete ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). formatted Text . string . prefix Intersection ( text . string ). length ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . prefix Intersection ( another : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . isEmpty () Ġ|| Ġanother . isEmpty ()) Ġreturn Ġ"" ĊĊĠĠĠĠĠĠĠ Ġvar Ġend Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( end Index Ġ< Ġthis . length Ġ&& Ġend Index Ġ< Ġanother . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this [ end Index ] Ġ== Ġanother [ end Index ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Index Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . substring ( 0 , Ġend Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis . substring ( 0 , Ġend Index ) ĊĠĠĠ Ġ} Ċ }