Helper function to split string into groups based on regexp. Possibility to retrieve...
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / string / tokenizer / TokenizerMatch.java
old mode 100644 (file)
new mode 100755 (executable)
index 439eb2a..ebe5175
@@ -1,21 +1,62 @@
 /*
- * Svjatoslav Commons - shared library of common functionality.
- * Copyright ©2012-2013, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public License
- * as published by the Free Software Foundation.
+ * Svjatoslav Commons - shared library of common functionality. Author: Svjatoslav Agejenko.
+ * This project is released under Creative Commons Zero (CC0) license.
  */
-
 package eu.svjatoslav.commons.string.tokenizer;
 
+import java.util.regex.Matcher;
+
 public class TokenizerMatch {
 
-       public String token;
-       public Terminator terminator;
+    public final String token;
+
+    /**
+     * {@link Terminator} that matched current token
+     */
+    public final Terminator terminator;
+
+    public final Matcher matcher;
+
+    private Tokenizer tokenizer;
+
+    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){
+        if (terminator == null){
+            return group == null;
+        }
+
+        if (terminator.group == null){
+            return group == null;
+        }
+
+        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 +
+                '}';
+    }
 
-       public TokenizerMatch(final String token, final Terminator terminator) {
-               this.token = token;
-               this.terminator = terminator;
-       }
+    public Tokenizer getTokenizer() {
+        return tokenizer;
+    }
 }