Any character non aa or nucleotide is a space
[jalview.git] / src / jalview / io / FeaturesFile.java
index 7046f88..2c0b6d7 100755 (executable)
@@ -125,7 +125,7 @@ public class FeaturesFile extends AlignFile
             else\r
             {\r
               UserColourScheme ucs = new UserColourScheme(st.nextToken());\r
-              colours.put(type, ucs.findColour("A"));\r
+              colours.put(type, ucs.findColour('A'));\r
               if (st.hasMoreElements())\r
               {\r
                 String link = st.nextToken();\r
@@ -230,7 +230,7 @@ public class FeaturesFile extends AlignFile
             {\r
               // Probably the old style groups file\r
               UserColourScheme ucs = new UserColourScheme(type);\r
-              colours.put(type, ucs.findColour("A"));\r
+              colours.put(type, ucs.findColour('A'));\r
             }\r
 \r
             sf = new SequenceFeature(type, desc, "", start, end, featureGroup);\r
@@ -258,7 +258,6 @@ public class FeaturesFile extends AlignFile
       catch (Exception ex)\r
       {\r
         System.out.println(line);\r
-        ex.printStackTrace();\r
         System.out.println("Error parsing feature file: " + ex +"\n"+line);\r
         return false;\r
       }\r
@@ -266,32 +265,62 @@ public class FeaturesFile extends AlignFile
       return true;\r
     }\r
 \r
-    void parseDescriptionHTML(SequenceFeature sf, boolean removeHTML)\r
+    public void parseDescriptionHTML(SequenceFeature sf, boolean removeHTML)\r
     {\r
+      if(sf.getDescription()==null)\r
+        return;\r
+\r
+      if(removeHTML && sf.getDescription().toUpperCase().indexOf("<HTML>")==-1)\r
+        removeHTML = false;\r
+\r
       StringBuffer sb = new StringBuffer();\r
       StringTokenizer st = new StringTokenizer(sf.getDescription(), "<");\r
       String token,  link;\r
+      int startTag;\r
+      String tag=null;\r
       while(st.hasMoreElements())\r
       {\r
-        token = st.nextToken("<>");\r
+        token = st.nextToken("&>");\r
         if(token.equalsIgnoreCase("html") || token.startsWith("/"))\r
+        {\r
           continue;\r
+        }\r
+\r
+        tag = null;\r
+        startTag = token.indexOf("<");\r
+\r
+        if (startTag > -1)\r
+        {\r
+          tag = token.substring(startTag+1);\r
+          token = token.substring(0, startTag);\r
+        }\r
 \r
-        if(token.startsWith("a href="))\r
+        if (tag != null && tag.toUpperCase().startsWith("A HREF="))\r
         {\r
-          link = token.substring(token.indexOf("\"")+1, token.length()-1);\r
+          if(token.length()>0)\r
+            sb.append(token);\r
+          link = tag.substring(tag.indexOf("\"") + 1, tag.length() - 1);\r
           String label = st.nextToken("<>");\r
-          sf.addLink(label+"|"+link);\r
-          sb.append(label+"%LINK%");\r
+          sf.addLink(label + "|" + link);\r
+          sb.append(label + "%LINK%");\r
         }\r
-        else if(token.equalsIgnoreCase("br"))\r
+        else if (tag != null && tag.equalsIgnoreCase("br"))\r
           sb.append("\n");\r
+        else if (token.startsWith("lt;"))\r
+          sb.append("<" + token.substring(3));\r
+        else if (token.startsWith("gt;"))\r
+          sb.append(">" + token.substring(3));\r
+        else if (token.startsWith("amp;"))\r
+          sb.append("&" + token.substring(4));\r
         else\r
+        {\r
           sb.append(token);\r
+        }\r
       }\r
 \r
       if(removeHTML)\r
         sf.description = sb.toString();\r
+\r
   }\r
 \r
     /**\r
@@ -384,6 +413,10 @@ public class FeaturesFile extends AlignFile
                   out.append(next[j].type+"\t");\r
                 else\r
                 {\r
+                  if(next[j].links!=null\r
+                     && next[j].getDescription().indexOf("<html>")==-1)\r
+                    out.append("<html>");\r
+\r
                   out.append(next[j].description+" ");\r
                   if(next[j].links!=null)\r
                     {\r
@@ -402,7 +435,12 @@ public class FeaturesFile extends AlignFile
                                      + "</a>");\r
                         }\r
                       }\r
+\r
+                      if (next[j].getDescription().indexOf("</html>") == -1)\r
+                        out.append("</html>");\r
                     }\r
+\r
+\r
                    out.append("\t");\r
                 }\r
 \r