1 package jfun.yan.xml; 2 3 import java.util.Set ; 4 5 import jfun.util.StringUtils; 6 7 class StringPredicates{ 8 private static final StringPredicate one = new StringPredicate(){ 9 public boolean isString(String s){return true;} 10 public String toString(){return "true";} 11 }; 12 private static final StringPredicate zero = new StringPredicate(){ 13 public boolean isString(String s){return false;} 14 public String toString(){return "false";} 15 }; 16 public static StringPredicate always(){ 17 return one; 18 } 19 public static StringPredicate never(){ 20 return zero; 21 } 22 public static StringPredicate startsWith(final String prefix){ 23 return new StringPredicate(){ 24 public boolean isString(String s){ 25 return s.startsWith(prefix); 26 } 27 public String toString(){return prefix+"*";} 28 }; 29 } 30 public static StringPredicate equals(final String target){ 31 return new StringPredicate(){ 32 public boolean isString(String s){ 33 return target.equals(s); 34 } 35 public String toString(){return target;} 36 }; 37 } 38 public static StringPredicate in(final Set set){ 39 return new StringPredicate(){ 40 public boolean isString(String s){ 41 return set.contains(s); 42 } 43 public String toString(){return set.toString();} 44 }; 45 } 46 public static StringPredicate and(final StringPredicate[] preds){ 47 return new StringPredicate(){ 48 public boolean isString(String s){ 49 for(int i=0; i<preds.length; i++){ 50 if(!preds[i].isString(s)) 51 return false; 52 } 53 return true; 54 } 55 public String toString(){ 56 return StringUtils.listArray("(","&&",")",preds); 57 } 58 }; 59 } 60 public static StringPredicate or(final StringPredicate[] preds){ 61 return new StringPredicate(){ 62 public boolean isString(String s){ 63 for(int i=0; i<preds.length; i++){ 64 if(preds[i].isString(s)) 65 return true; 66 } 67 return false; 68 } 69 public String toString(){ 70 return StringUtils.listArray("(","||",")",preds); 71 } 72 }; 73 } 74 public static StringPredicate not(final StringPredicate pred){ 75 return new StringPredicate(){ 76 public boolean isString(String s){ 77 return !pred.isString(s); 78 } 79 public String toString(){ 80 return "!"+pred; 81 } 82 }; 83 } 84 } 85 | Popular Tags |