diff options
Diffstat (limited to 'java/pablotron/luigi/Filter.java')
-rw-r--r-- | java/pablotron/luigi/Filter.java | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/java/pablotron/luigi/Filter.java b/java/pablotron/luigi/Filter.java new file mode 100644 index 0000000..d89beab --- /dev/null +++ b/java/pablotron/luigi/Filter.java @@ -0,0 +1,89 @@ +package pablotron.luigi; + +import java.util.Map; +import java.util.HashMap; + +public final class Filter { + public interface Handler { + public String filter(String val, String args[], Map<String, String> row); + }; + + public static Map<String, Handler> FILTERS = new HashMap<String, Handler>() {{ + put("null", new Handler() { + public String filter(String val, String args[], Map<String, String> row) { + return ""; + } + }); + + put("s", new Handler() { + public String filter(String val, String args[], Map<String, String> row) { + int v = Integer.parseInt(val); + return (v == 1) ? "" : "s"; + } + }); + + put("uc", new Handler() { + public String filter(String val, String args[], Map<String, String> row) { + return val.toUpperCase(); + } + }); + + put("lc", new Handler() { + public String filter(String val, String args[], Map<String, String> row) { + return val.toLowerCase(); + } + }); + + put("length", new Handler() { + public String filter(String val, String args[], Map<String, String> row) { + return Integer.toString(val.length()); + } + }); + + put("trim", new Handler() { + public String filter(String val, String args[], Map<String, String> row) { + return val.trim(); + } + }); + + put("h", new Handler() { + public String filter(String val, String args[], Map<String, String> row) { + StringBuilder r = new StringBuilder(val.length()); + + for (int i = 0, l = val.length(); i < l; i++) { + char c = val.charAt(i); + + switch (c) { + case '&': + r.append("&"); + break; + case '<': + r.append("<"); + break; + case '>': + r.append(">"); + break; + case '\'': + r.append("'"); + break; + case '"': + r.append("""); + break; + default: + r.append(c); + } + } + + return r.toString(); +/* + * return val + * .replace("&", "&") + * .replace("<", "<") + * .replace(">", ">") + * .replace("'", "'") + * .replace("\"", """); + */ + } + }); + }}; +}; |