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