JAL-1807 test
[jalviewjs.git] / bin / jalview / util / ParseHtmlBodyAndLinks.js
1 Clazz.declarePackage ("jalview.util");
2 Clazz.load (["java.lang.StringBuffer", "java.util.ArrayList", "java.util.regex.Pattern"], "jalview.util.ParseHtmlBodyAndLinks", ["java.util.StringTokenizer"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this.orig = null;
5 this.htmlContent = true;
6 this.links = null;
7 this.sb = null;
8 Clazz.instantialize (this, arguments);
9 }, jalview.util, "ParseHtmlBodyAndLinks");
10 Clazz.prepareFields (c$, function () {
11 this.links =  new java.util.ArrayList ();
12 this.sb =  new StringBuffer ();
13 });
14 Clazz.defineMethod (c$, "getOrig", 
15 function () {
16 return this.orig;
17 });
18 Clazz.defineMethod (c$, "isHtmlContent", 
19 function () {
20 return this.htmlContent;
21 });
22 Clazz.defineMethod (c$, "getContent", 
23 function () {
24 return this.sb.toString ();
25 });
26 Clazz.defineMethod (c$, "getLinks", 
27 function () {
28 return this.links;
29 });
30 Clazz.makeConstructor (c$, 
31 function (description, removeHTML, newline) {
32 if (description == null || description.length == 0) {
33 this.htmlContent = false;
34 return;
35 }if (description.toUpperCase ().indexOf ("<HTML>") == -1) {
36 this.htmlContent = false;
37 }this.orig = description;
38 var st =  new java.util.StringTokenizer (description, "<");
39 var token;
40 var link;
41 var startTag;
42 var tag = null;
43 while (st.hasMoreElements ()) {
44 token = st.nextToken ("&>");
45 if (token.equalsIgnoreCase ("html") || token.startsWith ("/")) {
46 continue;
47 }tag = null;
48 startTag = token.indexOf ("<");
49 if (startTag > -1) {
50 tag = token.substring (startTag + 1);
51 token = token.substring (0, startTag);
52 }if (tag != null && tag.toUpperCase ().startsWith ("A HREF=")) {
53 if (token.length > 0) {
54 this.sb.append (token);
55 }link = tag.substring (tag.indexOf ("\"") + 1, tag.length - 1);
56 var label = st.nextToken ("<>");
57 this.links.add (label + "|" + link);
58 this.sb.append (label + "%LINK%");
59 } else if (tag != null && tag.equalsIgnoreCase ("br")) {
60 this.sb.append (newline);
61 } else if (token.startsWith ("lt;")) {
62 this.sb.append ("<" + token.substring (3));
63 } else if (token.startsWith ("gt;")) {
64 this.sb.append (">" + token.substring (3));
65 } else if (token.startsWith ("amp;")) {
66 this.sb.append ("&" + token.substring (4));
67 } else {
68 this.sb.append (token);
69 }}
70 if (removeHTML && !this.htmlContent) {
71 this.sb =  new StringBuffer (jalview.util.ParseHtmlBodyAndLinks.LEFT_ANGLE_BRACKET_PATTERN.matcher (description).replaceAll ("&lt;"));
72 }}, "~S,~B,~S");
73 Clazz.defineMethod (c$, "getNonHtmlContent", 
74 function () {
75 return this.isHtmlContent () ? this.sb.toString () : this.orig;
76 });
77 c$.LEFT_ANGLE_BRACKET_PATTERN = c$.prototype.LEFT_ANGLE_BRACKET_PATTERN = java.util.regex.Pattern.compile ("<");
78 });