diff options
| author | bjculkin <bjculkin@mix.wvu.edu> | 2017-03-20 16:20:38 -0400 |
|---|---|---|
| committer | bjculkin <bjculkin@mix.wvu.edu> | 2017-03-20 16:20:38 -0400 |
| commit | 98e6ac3f053ab2d8894514df3238cb5fd0101c98 (patch) | |
| tree | c9bea687756292a57687d27352e6574596b9b98c /BJC-Utils2/src/main/java/bjc/utils/parserutils | |
| parent | e78e3ac11870926332f47e6c3522ad819c3917b8 (diff) | |
Add sample predicated openers/closers
This adds a sample predicated opener/closer pair based off of regular
expressions.
The opener accepts a regular expression and will provide all of its
numbered captured groups.
The closer accepts a format string and uses the parameters (capture
groups) as the format parameters.
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/parserutils')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/parserutils/delims/RegexCloser.java | 22 | ||||
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/parserutils/delims/RegexOpener.java | 39 |
2 files changed, 61 insertions, 0 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/delims/RegexCloser.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/delims/RegexCloser.java new file mode 100644 index 0000000..9ec2353 --- /dev/null +++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/delims/RegexCloser.java @@ -0,0 +1,22 @@ +package bjc.utils.parserutils.delims; + +import java.util.function.BiPredicate; + +public class RegexCloser implements BiPredicate<String, String[]> { + private String rep; + + public RegexCloser(String closer) { + rep = closer; + } + + @Override + public boolean test(String closer, String[] params) { + /* + * Confirm passing an array instead of a single var-arg. + */ + String work = String.format(rep, (Object[]) params); + + return work.equals(closer); + } + +}
\ No newline at end of file diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/delims/RegexOpener.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/delims/RegexOpener.java new file mode 100644 index 0000000..c9965f2 --- /dev/null +++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/delims/RegexOpener.java @@ -0,0 +1,39 @@ +package bjc.utils.parserutils.delims; + +import bjc.utils.data.IPair; +import bjc.utils.data.Pair; + +import java.util.function.Function; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class RegexOpener implements Function<String, IPair<String, String[]>> { + private String name; + + private Pattern patt; + + public RegexOpener(String groupName, String groupRegex) { + name = groupName; + + patt = Pattern.compile(groupRegex); + } + + @Override + public IPair<String, String[]> apply(String str) { + Matcher m = patt.matcher(str); + + if(m.matches()) { + int numGroups = m.groupCount(); + + String[] parms = new String[numGroups + 1]; + + for(int i = 0; i <= numGroups; i++) { + parms[i] = m.group(i); + } + + return new Pair<>(name, parms); + } + + return new Pair<>(null, null); + } +}
\ No newline at end of file |
