View Javadoc

1   package io.atlassian.fugue.optic.std;
2   
3   import io.atlassian.fugue.Either;
4   import io.atlassian.fugue.Option;
5   import io.atlassian.fugue.optic.Iso;
6   import io.atlassian.fugue.optic.PPrism;
7   import io.atlassian.fugue.optic.Prism;
8   
9   import java.util.Optional;
10  
11  import static io.atlassian.fugue.Either.left;
12  import static io.atlassian.fugue.Option.none;
13  import static io.atlassian.fugue.optic.PPrism.pPrism;
14  
15  public class OptionOptics {
16  
17    private OptionOptics() {}
18  
19    public static <A, B> PPrism<Option<A>, Option<B>, A, B> pSome() {
20      return pPrism(oa -> oa.fold(() -> left(none()), Either::right), Option::some);
21    }
22  
23    public static <A> Prism<Option<A>, A> some() {
24      return new Prism<>(pSome());
25    }
26  
27    public static <A> Iso<Option<A>, Optional<A>> optionToOptional() {
28      return Iso.iso(Option::toOptional, Option::fromOptional);
29    }
30  
31  }