Skip to content

Commit

Permalink
add symbols map for pattern character
Browse files Browse the repository at this point in the history
  • Loading branch information
gufengwyx8 committed Apr 5, 2016
1 parent 0ae8ff3 commit fa0954c
Showing 1 changed file with 22 additions and 51 deletions.
73 changes: 22 additions & 51 deletions src/main/java/ru/lanwen/verbalregex/VerbalExpression.java
Expand Up @@ -3,7 +3,9 @@
import static java.lang.String.valueOf;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Expand All @@ -18,6 +20,19 @@ public static class Builder {
private StringBuilder suffixes = new StringBuilder();
private int modifiers = Pattern.MULTILINE;

private static final Map<Character, Integer> SYMBOL_MAP;

static {
SYMBOL_MAP = new HashMap<>();
SYMBOL_MAP.put('d', Pattern.UNIX_LINES);
SYMBOL_MAP.put('i', Pattern.CASE_INSENSITIVE);
SYMBOL_MAP.put('x', Pattern.COMMENTS);
SYMBOL_MAP.put('m', Pattern.MULTILINE);
SYMBOL_MAP.put('s', Pattern.DOTALL);
SYMBOL_MAP.put('u', Pattern.UNICODE_CASE);
SYMBOL_MAP.put('U', Pattern.UNICODE_CHARACTER_CLASS);
}

/**
* Package private. Use {@link #regex()} to build a new one
*
Expand Down Expand Up @@ -172,7 +187,7 @@ public Builder find(final String value) {
public Builder maybe(final String pValue) {
return this.then(pValue).add("?");
}

/**
* Add a regex to the expression that might appear once (or not)
* Example:
Expand Down Expand Up @@ -367,60 +382,16 @@ public Builder range(final String... pArgs) {
}

public Builder addModifier(final char pModifier) {
switch (pModifier) {
case 'd':
modifiers |= Pattern.UNIX_LINES;
break;
case 'i':
modifiers |= Pattern.CASE_INSENSITIVE;
break;
case 'x':
modifiers |= Pattern.COMMENTS;
break;
case 'm':
modifiers |= Pattern.MULTILINE;
break;
case 's':
modifiers |= Pattern.DOTALL;
break;
case 'u':
modifiers |= Pattern.UNICODE_CASE;
break;
case 'U':
modifiers |= Pattern.UNICODE_CHARACTER_CLASS;
break;
default:
break;
if (SYMBOL_MAP.containsKey(pModifier)) {
modifiers |= SYMBOL_MAP.get(pModifier);
}

return this;
}

public Builder removeModifier(final char pModifier) {
switch (pModifier) {
case 'd':
modifiers &= ~Pattern.UNIX_LINES;
break;
case 'i':
modifiers &= ~Pattern.CASE_INSENSITIVE;
break;
case 'x':
modifiers &= ~Pattern.COMMENTS;
break;
case 'm':
modifiers &= ~Pattern.MULTILINE;
break;
case 's':
modifiers &= ~Pattern.DOTALL;
break;
case 'u':
modifiers &= ~Pattern.UNICODE_CASE;
break;
case 'U':
modifiers &= ~Pattern.UNICODE_CHARACTER_CLASS;
break;
default:
break;
if (SYMBOL_MAP.containsKey(pModifier)) {
modifiers &= ~SYMBOL_MAP.get(pModifier);
}

return this;
Expand Down Expand Up @@ -578,7 +549,7 @@ public Builder or(final String pValue) {
}
return this;
}

/**
* Adds an alternative expression to be matched
* based on an array of values
Expand Down Expand Up @@ -750,7 +721,7 @@ public String getText(final String toTest, final int group) {

/**
* Extract exact group from string and add it to list
*
*
* Example:
* String text = "SampleHelloWorldString";
* VerbalExpression regex = regex().capt().oneOf("Hello", "World").endCapt().maybe("String").build();
Expand Down

0 comments on commit fa0954c

Please sign in to comment.