View Javadoc
1   package org.wikimedia.search.extra.regex.expression;
2   
3   import static com.google.common.base.Preconditions.checkNotNull;
4   
5   import com.google.common.collect.ImmutableSet;
6   
7   import lombok.EqualsAndHashCode;
8   
9   /**
10   * A leaf expression.
11   */
12  @EqualsAndHashCode
13  public final class Leaf<T> implements Expression<T> {
14      @SafeVarargs
15      public static <T> ImmutableSet<Expression<T>> leaves(T... ts) {
16          ImmutableSet.Builder<Expression<T>> builder = ImmutableSet.builder();
17          for (T t : ts) {
18              builder.add(new Leaf<>(t));
19          }
20          return builder.build();
21      }
22  
23      private final T t;
24  
25      public Leaf(T t) {
26          this.t = checkNotNull(t);
27      }
28  
29      public String toString() {
30          return t.toString();
31      }
32  
33      @Override
34      public Expression<T> simplify() {
35          return this;
36      }
37  
38      @Override
39      public boolean alwaysTrue() {
40          return false;
41      }
42  
43      @Override
44      public boolean alwaysFalse() {
45          return false;
46      }
47  
48      @Override
49      public boolean isComposite() {
50          return false;
51      }
52  
53      @Override
54      public <J> J transform(Expression.Transformer<T, J> transformer) {
55          return transformer.leaf(t);
56      }
57  
58      @Override
59      public int countClauses() {
60          return 0;
61      }
62  }