1 package io.github.reggert.reb4j;
2
3 import io.github.reggert.reb4j.Quantified.Mode;
4
5
6
7
8
9
10 public final class CharLiteral extends Literal implements Quantifiable
11 {
12 private static final long serialVersionUID = 1L;
13 public final char unescapedChar;
14
15 CharLiteral(final char unescapedChar)
16 {this.unescapedChar = unescapedChar;}
17
18 @Override
19 public final Quantified.AnyTimes anyTimes(final Mode mode)
20 {return new Quantified.AnyTimes(this, mode);}
21
22 @Override
23 public final Quantified.AnyTimes anyTimes()
24 {return anyTimes(Mode.GREEDY);}
25
26 @Override
27 @Deprecated
28 public final Quantified.AnyTimes anyTimesReluctantly()
29 {return Quantified.anyTimesReluctantly(this);}
30
31 @Override
32 @Deprecated
33 public final Quantified.AnyTimes anyTimesPossessively()
34 {return Quantified.anyTimesPossessively(this);}
35
36 @Override
37 public final Quantified.AtLeastOnce atLeastOnce(final Mode mode)
38 {return new Quantified.AtLeastOnce(this, mode);}
39
40 @Override
41 public final Quantified.AtLeastOnce atLeastOnce()
42 {return atLeastOnce(Mode.GREEDY);}
43
44 @Override
45 @Deprecated
46 public final Quantified.AtLeastOnce atLeastOnceReluctantly()
47 {return atLeastOnce(Mode.RELUCTANT);}
48
49 @Override
50 @Deprecated
51 public final Quantified.AtLeastOnce atLeastOncePossessively()
52 {return atLeastOnce(Mode.POSSESSIVE);}
53
54 @Override
55 public final Quantified.Optional optional(final Mode mode)
56 {return new Quantified.Optional(this, mode);}
57
58 @Override
59 public final Quantified.Optional optional()
60 {return optional(Mode.GREEDY);}
61
62 @Override
63 @Deprecated
64 public final Quantified.Optional optionalReluctantly()
65 {return optional(Mode.RELUCTANT);}
66
67 @Override
68 @Deprecated
69 public final Quantified.Optional optionalPossessively()
70 {return optional(Mode.POSSESSIVE);}
71
72 @Override
73 public final Quantified.RepeatExactly repeat(final int n, final Mode mode)
74 {return new Quantified.RepeatExactly(this, n, mode);}
75
76 @Override
77 public final Quantified.RepeatExactly repeat(final int n)
78 {return repeat(n, Mode.GREEDY);}
79
80 @Override
81 @Deprecated
82 public final Quantified.RepeatExactly repeatReluctantly(final int n)
83 {return repeat(n, Mode.RELUCTANT);}
84
85 @Override
86 @Deprecated
87 public final Quantified.RepeatExactly repeatPossessively(final int n)
88 {return repeat(n, Mode.POSSESSIVE);}
89
90 @Override
91 public final Quantified.RepeatRange repeat(final int min, final int max, final Mode mode)
92 {return new Quantified.RepeatRange(this, min, max, mode);}
93
94 @Override
95 public final Quantified.RepeatRange repeat(final int min, final int max)
96 {return repeat(min, max, Mode.GREEDY);}
97
98 @Override
99 @Deprecated
100 public final Quantified.RepeatRange repeatReluctantly(final int min, final int max)
101 {return repeat(min, max, Mode.RELUCTANT);}
102
103 @Override
104 @Deprecated
105 public final Quantified.RepeatRange repeatPossessively(final int min, final int max)
106 {return repeat(min, max, Mode.POSSESSIVE);}
107
108 @Override
109 public final Quantified.RepeatRange atLeast(final int n, final Mode mode)
110 {return new Quantified.RepeatRange(this, n, null, mode);}
111
112 @Override
113 public final Quantified.RepeatRange atLeast(final int n)
114 {return atLeast(n, Mode.GREEDY);}
115
116 @Override
117 @Deprecated
118 public final Quantified.RepeatRange atLeastReluctantly(final int n)
119 {return atLeast(n, Mode.RELUCTANT);}
120
121 @Override
122 @Deprecated
123 public final Quantified.RepeatRange atLeastPossessively(final int n)
124 {return atLeast(n, Mode.POSSESSIVE);}
125
126 @Override
127 public String unescaped()
128 {return Character.toString(unescapedChar);}
129
130 @Override
131 public int hashCode()
132 {
133 final int prime = 31;
134 int result = 1;
135 result = prime * result + unescapedChar;
136 return result;
137 }
138
139 @Override
140 public boolean equals(final Object obj)
141 {
142 if (this == obj)
143 return true;
144 if (obj == null)
145 return false;
146 if (getClass() != obj.getClass())
147 return false;
148 final CharLiteral other = (CharLiteral) obj;
149 return unescapedChar == other.unescapedChar;
150 }
151 }