show regexp groups, handy for debugging
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / string / tokenizer / TokenizerMatch.java
index 2b9b1f8..cd07ec9 100755 (executable)
@@ -17,11 +17,13 @@ public class TokenizerMatch {
 
     public final Matcher matcher;
 
+    private Tokenizer tokenizer;
 
-    public TokenizerMatch(final String token, final Terminator terminator, Matcher matcher) {
+    public TokenizerMatch(final String token, final Terminator terminator, Matcher matcher, Tokenizer tokenizer) {
         this.token = token;
         this.terminator = terminator;
         this.matcher = matcher;
+        this.tokenizer = tokenizer;
     }
 
     public boolean isGroup(String group){
@@ -36,11 +38,34 @@ public class TokenizerMatch {
         return terminator.group.equals(group);
     }
 
+    public String[] getRegExpGroups(){
+        String[] result = new String[matcher.groupCount()];
+
+        for (int i = 0; i< result.length; i++){
+            result[i] = matcher.group(i+1);
+        }
+
+        return result;
+    }
+
     @Override
     public String toString() {
-        return "TokenizerMatch{" +
-                "token='" + token + '\'' +
-                ", terminator=" + terminator +
-                '}';
+        StringBuilder result = new StringBuilder();
+        result.append("TokenizerMatch\n" +
+                "  token='" + token + "'\n" +
+                "  terminator=" + terminator + "\n" +
+                "  groups:\n");
+
+        int i = 0;
+        for (String s : getRegExpGroups()) {
+            result.append("    " + i + ": " + s + "\n");
+            i++;
+        }
+
+        return result.toString();
+    }
+
+    public Tokenizer getTokenizer() {
+        return tokenizer;
     }
 }