package Ġcom . github . k old . examples Ċ Ċ import Ġcom . github . k old . validated . Validated Ċ import Ġcom . github . k old . validated . Value Violation Ċ Ċ class ĠEmail Address Ġprivate Ġconstructor ( val Ġvalue : ĠString ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Opt In ( Experimental Std lib Api :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġfrom String ( email : ĠString ): ĠValid ated < EmailAddress > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġviolations Ġ= Ġbuild List Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( email . length Ġ> Ġ 2 0 4 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Value Violation (" value . too . long ", Ġ" Email Ġaddress Ġcan 't Ġbe Ġlonger Ġthan Ġ 2 0 4 8 Ġcharacters ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! email . contains ("@ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Value Violation (" value . invalid ", Ġ" Email Ġaddress Ġis Ġinvalid Ġformat ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( vi olations . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValid ated . Valid ( EmailAddress ( email )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValid ated . Invalid ( vi olations ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }