/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠAd yen ĠN . V . Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġopen Ġsource Ġand Ġavailable Ġunder Ġthe ĠMIT Ġlicense . ĠSee Ġthe ĠLICENSE Ġfile Ġfor Ġmore Ġinfo . Ċ Ġ* Ċ Ġ* ĠCreated Ġby Ġj ose ph j Ġon Ġ 9 / 9 / 2 0 2 1 . Ċ Ġ*/ Ċ Ċ package Ġcom . ady en . checkout . gift card . util Ċ Ċ import Ġcom . ady en . checkout . components . ui . Field State Ċ import Ġcom . ady en . checkout . components . ui . Validation Ċ import Ġcom . ady en . checkout . gift card . R Ċ Ċ object ĠG ift Card Number Utils Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠC ARD _ NUMBER _ MASK _ GROUP _ LENGTH Ġ= Ġ 4 ĊĠĠĠ Ġconst Ġval ĠDIG IT _ SEPARATOR Ġ= Ġ' Ġ' ĊĠĠĠ Ġprivate Ġconst Ġval ĠMIN IMUM _ G IFT _ CARD _ NUMBER _ LENGTH Ġ= Ġ 1 5 ĊĠĠĠ Ġconst Ġval ĠMAX IMUM _ G IFT _ CARD _ NUMBER _ LENGTH Ġ= Ġ 3 2 ĊĠĠĠ Ġconst Ġval ĠMAX _ DIGIT _ SEPARATOR _ COUNT Ġ= Ġ( MAXIMUM _ G IFT _ CARD _ NUMBER _ LENGTH Ġ/ ĠC ARD _ NUMBER _ MASK _ GROUP _ LENGTH ) Ġ- Ġ 1 Ġ// Ġ 3 2 Ġdigits , Ġgrouped Ġby Ġ 4 Ġ-> Ġ 7 Ġspaces ĊĊĠĠĠ Ġfun Ġformat Input ( input String : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġraw Input Ġ= Ġget Raw Value ( input String ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Builder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( raw Input . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpart Ġ= Ġraw Input . take ( CARD _ NUMBER _ MASK _ GROUP _ LENGTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Builder . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Builder . append ( DIGIT _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Builder . append ( part ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Input Ġ= Ġraw Input . remove Prefix ( part ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult Builder . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Raw Value ( text : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtext . replace ( DIGIT _ SEPARATOR . toString (), Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalidate Input Field ( gift Card Number : ĠString ): ĠField State < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġraw Input Ġ= Ġget Raw Value ( gift Card Number ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Input . length Ġ< ĠMIN IMUM _ G IFT _ CARD _ NUMBER _ LENGTH Ġ-> ĠValidation . Invalid ( R . string . checkout _ gift card _ number _ not _ valid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Input . length Ġ> ĠMAX IMUM _ G IFT _ CARD _ NUMBER _ LENGTH Ġ-> ĠValidation . Invalid ( R . string . checkout _ gift card _ number _ not _ valid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠValidation . Valid ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠField State ( raw Input , Ġvalidation ) ĊĠĠĠ Ġ} Ċ } Ċ