001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.util; 005 006 007 /** 008 * Helper class to render ${...} sequence in Velocity and 009 * encode URL's. 010 * @author Pavel 011 */ 012 public class Escaper { 013 014 /** 015 * Escapes HTML 016 * @param tkn 017 * @return 018 */ 019 public static String escapeHtml(String txt) { 020 if (txt==null) { 021 return null; 022 } 023 024 StringBuffer ret = new StringBuffer(); 025 char[] chars=txt.toCharArray(); 026 for (int i=0; i<chars.length; ++i) { 027 switch (chars[i]) { 028 case '<': 029 ret.append("<"); 030 break; 031 case '>': 032 ret.append(">"); 033 break; 034 case '&': 035 if (i<chars.length-1 && '#'==chars[i+1]) { // Do not double-escape (&#...;) 036 ret.append(chars[i]); 037 } else { 038 ret.append("&"); 039 } 040 break; 041 case '\'': 042 ret.append("'"); 043 break; 044 case '\\': 045 ret.append("\"); 046 break; 047 case '\"': 048 ret.append("""); 049 break; 050 default: 051 ret.append("&#"+((int) chars[i])+";"); 052 } 053 } 054 return ret.toString(); 055 } 056 057 }