Uladzislau Arlouski
6 years ago
5 changed files with 127 additions and 16 deletions
@ -0,0 +1,48 @@ |
|||||||
|
package com.jayway.jsonpath.internal.filter; |
||||||
|
|
||||||
|
import java.util.regex.Pattern; |
||||||
|
|
||||||
|
public enum PatternFlag { |
||||||
|
UNIX_LINES(Pattern.UNIX_LINES, 'd'), |
||||||
|
CASE_INSENSITIVE(Pattern.CASE_INSENSITIVE, 'i'), |
||||||
|
COMMENTS(Pattern.COMMENTS, 'x'), |
||||||
|
MULTILINE(Pattern.MULTILINE, 'm'), |
||||||
|
DOTALL(Pattern.DOTALL, 's'), |
||||||
|
UNICODE_CASE(Pattern.UNICODE_CASE, 'u'), |
||||||
|
UNICODE_CHARACTER_CLASS(Pattern.UNICODE_CHARACTER_CLASS, 'U'); |
||||||
|
|
||||||
|
private final int code; |
||||||
|
private final char flag; |
||||||
|
|
||||||
|
private PatternFlag(int code, char flag) { |
||||||
|
this.code = code; |
||||||
|
this.flag = flag; |
||||||
|
} |
||||||
|
|
||||||
|
public static int parseFlags(char[] flags) { |
||||||
|
int flagsValue = 0; |
||||||
|
for (char flag : flags) { |
||||||
|
flagsValue |= getCodeByFlag(flag); |
||||||
|
} |
||||||
|
return flagsValue; |
||||||
|
} |
||||||
|
|
||||||
|
public static String parseFlags(int flags) { |
||||||
|
StringBuilder builder = new StringBuilder(); |
||||||
|
for (PatternFlag patternFlag : PatternFlag.values()) { |
||||||
|
if ((patternFlag.code & flags) == patternFlag.code) { |
||||||
|
builder.append(patternFlag.flag); |
||||||
|
} |
||||||
|
} |
||||||
|
return builder.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
private static int getCodeByFlag(char flag) { |
||||||
|
for (PatternFlag patternFlag : PatternFlag.values()) { |
||||||
|
if (patternFlag.flag == flag) { |
||||||
|
return patternFlag.code; |
||||||
|
} |
||||||
|
} |
||||||
|
return 0; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,47 @@ |
|||||||
|
package com.jayway.jsonpath.internal.filter; |
||||||
|
|
||||||
|
import com.jayway.jsonpath.BaseTest; |
||||||
|
|
||||||
|
import org.junit.Assert; |
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.junit.runners.Parameterized; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
@RunWith(Parameterized.class) |
||||||
|
public class PatternFlagTest extends BaseTest { |
||||||
|
|
||||||
|
private final int flags; |
||||||
|
private final String expectedFlags; |
||||||
|
|
||||||
|
public PatternFlagTest(int flags, String expectedFlags) { |
||||||
|
this.flags = flags; |
||||||
|
this.expectedFlags = expectedFlags; |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testParseFlags() { |
||||||
|
Assert.assertEquals(expectedFlags, PatternFlag.parseFlags(flags)); |
||||||
|
} |
||||||
|
|
||||||
|
@Parameterized.Parameters |
||||||
|
public static Iterable data() { |
||||||
|
return Arrays.asList( |
||||||
|
new Object[][]{ |
||||||
|
{ 1, "d" }, |
||||||
|
{ 2, "i" }, |
||||||
|
{ 4, "x" }, |
||||||
|
{ 8, "m" }, |
||||||
|
{ 32, "s" }, |
||||||
|
{ 64, "u" }, |
||||||
|
{ 256, "U" }, |
||||||
|
{ 300, "xmsU" }, |
||||||
|
{ 13, "dxm" }, |
||||||
|
{ 7, "dix" }, |
||||||
|
{ 100, "xsu" }, |
||||||
|
{ 367, "dixmsuU" } |
||||||
|
} |
||||||
|
); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue