View Javadoc

1   package io.github.reggert.reb4j;
2   
3   import io.github.reggert.reb4j.Quantified.Mode;
4   
5   /**
6    * Expression that matches a single specific character. 
7    * 
8    * @see Literal#literal(char)
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 }