JAL-1807
[jalview.git] / src / jalview / util / UrlLink.java
index 80a4380..cf0d466 100644 (file)
@@ -1,35 +1,41 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
  *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.util;
 
+import jalview.jsdev.RegExp;
+import jalview.jsdev.api.RegExpInterface;
+
 import java.util.Vector;
 
+//import com.stevesoft.pat.Regex;
+
 public class UrlLink
 {
   /**
    * helper class to parse URL Link strings taken from applet parameters or
-   * jalview properties file using the com.stevesoft.pat.Regex implementation.
-   * Jalview 2.4 extension allows regular expressions to be used to parse ID
-   * strings and replace the result in the URL. Regex's operate on the whole ID
-   * string given to the matchURL method, if no regex is supplied, then only
-   * text following the first pipe symbol will be susbstituted. Usage
-   * documentation todo.
+   * jalview properties file using the Regex implementation. Jalview 2.4
+   * extension allows regular expressions to be used to parse ID strings and
+   * replace the result in the URL. Regex's operate on the whole ID string given
+   * to the matchURL method, if no regex is supplied, then only text following
+   * the first pipe symbol will be susbstituted. Usage documentation todo.
    */
   private String url_suffix, url_prefix, target, label, regexReplace;
 
@@ -83,7 +89,7 @@ public class UrlLink
         regexReplace = link.substring(psqid + 14, p);
         try
         {
-          com.stevesoft.pat.Regex rg = com.stevesoft.pat.Regex.perlCode("/"
+          RegExpInterface rg = RegExp.perlCode("/"
                   + regexReplace + "/");
           if (rg == null)
           {
@@ -198,8 +204,7 @@ public class UrlLink
     {
       if (regexReplace != null)
       {
-        com.stevesoft.pat.Regex rg = com.stevesoft.pat.Regex.perlCode("/"
-                + regexReplace + "/");
+        RegExpInterface rg = RegExp.perlCode("/" + regexReplace + "/");
         if (rg.search(idstring))
         {
           int ns = rg.numSubs();
@@ -207,7 +212,7 @@ public class UrlLink
           {
             // take whole regex
             return new String[]
-            { rg.stringMatched(),
+            { rg.stringMatchedI(ns),
                 url_prefix + rg.stringMatched() + url_suffix };
           } /*
              * else if (ns==1) { // take only subgroup match return new String[]
@@ -219,9 +224,9 @@ public class UrlLink
             // debug
             for (int s = 0; s <= rg.numSubs(); s++)
             {
-              System.err.println("Sub " + s + " : " + rg.matchedFrom(s)
-                      + " : " + rg.matchedTo(s) + " : '"
-                      + rg.stringMatched(s) + "'");
+              System.err.println("Sub " + s + " : " + rg.matchedFromI(s)
+                      + " : " + rg.matchedToI(s) + " : '"
+                      + rg.stringMatchedI(s) + "'");
             }
             // try to collate subgroup matches
             Vector subs = new Vector();
@@ -230,19 +235,19 @@ public class UrlLink
             int s = 0; // 1;
             while (s <= ns)
             {
-              if (s + 1 <= ns && rg.matchedTo(s) > -1
-                      && rg.matchedTo(s + 1) > -1
-                      && rg.matchedTo(s + 1) < rg.matchedTo(s))
+              if (s + 1 <= ns && rg.matchedToI(s) > -1
+                      && rg.matchedToI(s + 1) > -1
+                      && rg.matchedToI(s + 1) < rg.matchedToI(s))
               {
                 // s is top level submatch. search for submatches enclosed by
                 // this one
                 int r = s + 1;
                 String mtch = "";
-                while (r <= ns && rg.matchedTo(r) <= rg.matchedTo(s))
+                while (r <= ns && rg.matchedToI(r) <= rg.matchedToI(s))
                 {
-                  if (rg.matchedFrom(r) > -1)
+                  if (rg.matchedFromI(r) > -1)
                   {
-                    mtch += rg.stringMatched(r);
+                    mtch += rg.stringMatchedI(r);
                   }
                   r++;
                 }
@@ -255,10 +260,10 @@ public class UrlLink
               }
               else
               {
-                if (rg.matchedFrom(s) > -1)
+                if (rg.matchedFromI(s) > -1)
                 {
-                  subs.addElement(rg.stringMatched(s));
-                  subs.addElement(url_prefix + rg.stringMatched(s)
+                  subs.addElement(rg.stringMatchedI(s));
+                  subs.addElement(url_prefix + rg.stringMatchedI(s)
                           + url_suffix);
                 }
                 s++;
@@ -325,6 +330,11 @@ public class UrlLink
     }
   }
 
+  /**
+   * @j2sIgnore
+   * 
+   * @param args
+   */
   public static void main(String argv[])
   {
     String[] links = new String[]