6bf30f5d6587233f59dac11d751343b44bc9b68c
[debian/jabref.git] / src / java / net / sf / jabref / imports / HTMLConverter.java
1 package net.sf.jabref.imports;
2
3 import net.sf.jabref.export.layout.LayoutFormatter;
4
5 /**
6  * Created by IntelliJ IDEA.
7  * User: alver
8  * Date: Mar 26, 2006
9  * Time: 8:05:08 PM
10  * To change this template use File | Settings | File Templates.
11  */
12 public class HTMLConverter implements LayoutFormatter {
13
14     public String format(String text) {
15
16         if (text == null)
17             return null;
18
19         StringBuffer sb = new StringBuffer();
20
21         for (int i=0; i<text.length(); i++) {
22
23             int c = text.charAt(i);
24
25             if (c == '&') {
26                 i = readHtmlChar(text, sb, i);
27                 sb.append((char)c);
28             } else if (c == '<') {
29                 i = readTag(text, sb, i);
30             } else
31                 sb.append((char)c);
32
33         }
34
35         return sb.toString();
36     }
37
38     private final int MAX_TAG_LENGTH = 20;
39     private final int MAX_CHAR_LENGTH = 10;
40
41     private int readHtmlChar(String text, StringBuffer sb, int position) {
42         // Have just read the < character that starts the tag.
43         int index = text.indexOf(';', position);
44         if ((index > position) && (index-position < MAX_CHAR_LENGTH)) {
45             //System.out.println("Removed code: "+text.substring(position, index));
46             return index+1; // Just skip the tag.
47         } else return position; // Don't do anything.
48     }
49
50     private int readTag(String text, StringBuffer sb, int position) {
51         // Have just read the < character that starts the tag.
52         int index = text.indexOf('>', position);
53         if ((index > position) && (index-position < MAX_TAG_LENGTH)) {
54             //System.out.println("Removed tag: "+text.substring(position, index));
55             return index+1; // Just skip the tag.
56         } else return position; // Don't do anything.
57     }
58 }