1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.commons.text;
18
19 /**
20 * Commonly used implementations of {@link CharacterPredicate}. Per the interface
21 * requirements, all implementations are thread safe.
22 *
23 * @since 1.0
24 */
25 public enum CharacterPredicates implements CharacterPredicate {
26
27 /**
28 * Tests code points against {@link Character#isLetter(int)}.
29 *
30 * @since 1.0
31 */
32 LETTERS {
33 @Override
34 public boolean test(final int codePoint) {
35 return Character.isLetter(codePoint);
36 }
37 },
38
39 /**
40 * Tests code points against {@link Character#isDigit(int)}.
41 *
42 * @since 1.0
43 */
44 DIGITS {
45 @Override
46 public boolean test(final int codePoint) {
47 return Character.isDigit(codePoint);
48 }
49 },
50
51 /**
52 * Tests if the code points represents a number between 0 and 9.
53 *
54 * @since 1.2
55 */
56 ARABIC_NUMERALS {
57 @Override
58 public boolean test(final int codePoint) {
59 return codePoint >= '0' && codePoint <= '9';
60 }
61 },
62
63 /**
64 * Tests if the code points represents a letter between a and z.
65 *
66 * @since 1.2
67 */
68 ASCII_LOWERCASE_LETTERS {
69 @Override
70 public boolean test(final int codePoint) {
71 return codePoint >= 'a' && codePoint <= 'z';
72 }
73 },
74
75 /**
76 * Tests if the code points represents a letter between A and Z.
77 *
78 * @since 1.2
79 */
80 ASCII_UPPERCASE_LETTERS {
81 @Override
82 public boolean test(final int codePoint) {
83 return codePoint >= 'A' && codePoint <= 'Z';
84 }
85 },
86
87 /**
88 * Tests if the code points represents a letter between a and Z.
89 *
90 * @since 1.2
91 */
92 ASCII_LETTERS {
93 @Override
94 public boolean test(final int codePoint) {
95 return ASCII_LOWERCASE_LETTERS.test(codePoint) || ASCII_UPPERCASE_LETTERS.test(codePoint);
96 }
97 },
98
99 /**
100 * Tests if the code points represents a letter between a and Z or a number between 0 and 9.
101 *
102 * @since 1.2
103 */
104 ASCII_ALPHA_NUMERALS {
105 @Override
106 public boolean test(final int codePoint) {
107 return ASCII_LOWERCASE_LETTERS.test(codePoint) || ASCII_UPPERCASE_LETTERS.test(codePoint)
108 || ARABIC_NUMERALS.test(codePoint);
109 }
110 }
111 }