package Ġio . monkey patch . k aval . arrow . validator Ċ Ċ import Ġarrow . core . Option Ċ import Ġarrow . core . Some Ċ import Ġio . monkey patch . k aval . core . Validator Ċ import Ġio . monkey patch . k aval . core . field Ċ import Ġio . monkey patch . k aval . core . predicate Ċ import Ġio . monkey patch . k aval . core . when Is Instance Ċ Ċ /** Ċ Ġ* ĠProvide Ġvalidators Ġfor ĠArrow Kt Ġ[ Option ] Ċ Ġ*/ Ċ object ĠOptions Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġvalidator Ġfor Ġ[ Option ] Ġthat Ġonly Ġaccept Ġ[ arrow . core . None ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠT Ġthe Ġoption Ġinner Ġtype ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġvalidator ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġis None (): ĠValidator < Option < T >> Ġ= ĊĠĠĠĠĠĠĠ Ġpredicate ( Option < T >:: isEmpty ) Ġ{ Ġ" require Ġto Ġbe Ġempty " Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġvalidator Ġfor Ġ[ Option ] Ġthat Ġonly Ġaccept Ġ[ Some ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠT Ġthe Ġoption Ġinner Ġtype ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġvalidator ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġis Some (): ĠValidator < Option < T >> Ġ= ĊĠĠĠĠĠĠĠ Ġpredicate ( Option < T >:: isDefined ) Ġ{ Ġ" require Ġto Ġbe Ġdefined " Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġvalidator Ġfor Ġ[ Option ] Ġthat Ġaccept Ġ[ arrow . core . None ] Ġor Ġa Ġvalid Ġ[ Some ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġvalidator Ġprovide Ġa ĠT Ġvalidator Ġfor Ġ[ Some ] Ġcase ĊĠĠĠĠ Ġ* Ġ@ param ĠT Ġthe Ġoption Ġinner Ġtype ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġvalidator ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġis None Or ( validator : Ġ() Ġ-> ĠValidator < T >): ĠValidator < Option < T >> Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Is Instance Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield (" t ", ĠSome < T >:: t , Ġvalidator ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ