Mercurial Hosting > luan
view src/luan/modules/HtmlLuan.java @ 1673:1b9f9fdb3b41
remove backup password
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 28 May 2022 21:00:30 -0600 |
parents | 21f5edab1fbf |
children | 36c28be6d432 |
line wrap: on
line source
package luan.modules; import java.util.List; import java.util.ArrayList; import java.util.Arrays; import java.util.Set; import java.util.HashSet; import java.util.Map; import java.util.regex.Pattern; import java.util.regex.Matcher; import luan.Luan; import luan.LuanTable; import luan.LuanException; public final class HtmlLuan { public static String encode(String s) throws LuanException { Utils.checkNotNull(s); final char[] a = s.toCharArray(); StringBuilder buf = new StringBuilder(); for( char c : a ) { switch(c) { case '&': buf.append("&"); break; case '<': buf.append("<"); break; case '>': buf.append(">"); break; case '"': buf.append("""); break; default: buf.append(c); } } return buf.toString(); } private static final Pattern entityPtn = Pattern.compile( "&#(\\d+);" ); public static String decode(String s) { StringBuffer buf = new StringBuffer(); Matcher m = entityPtn.matcher(s); while( m.find() ) { String entity = new String(new char[]{(char)Integer.parseInt(m.group(1))}); m.appendReplacement(buf,entity); } m.appendTail(buf); s = buf.toString(); s = s.replace(" "," "); s = s.replace(""","\""); s = s.replace(">",">"); s = s.replace("<","<"); s = s.replace("&","&"); return s; } public static String quote(String s) { StringBuilder buf = new StringBuilder(); buf.append('"'); int i = 0; while(true) { int i2 = s.indexOf('"',i); if( i2 == -1 ) { buf.append(s.substring(i)); break; } else { buf.append(s.substring(i,i2)); buf.append("""); i = i2 + 1; } } buf.append('"'); return buf.toString(); } }