001 package fj.function; 002 003 import fj.F; 004 import fj.F2; 005 import static fj.Function.curry; 006 007 /** 008 * Curried string functions. 009 * 010 * @version %build.number%<br> 011 * <ul> 012 * <li>$LastChangedRevision: 5 $</li> 013 * <li>$LastChangedDate: 2008-12-06 16:49:43 +1000 (Sat, 06 Dec 2008) $</li> 014 * </ul> 015 */ 016 public class Strings { 017 private Strings() { 018 throw new UnsupportedOperationException(); 019 } 020 021 /** 022 * A curried version of {@link String#isEmpty()}. 023 */ 024 public static final F<String, Boolean> isEmpty = new F<String, Boolean>() { 025 public Boolean f(final String s) { 026 return s.length() == 0; 027 } 028 }; 029 030 /** 031 * A curried version of {@link String#length()}. 032 */ 033 public static final F<String, Integer> length = new F<String, Integer>() { 034 public Integer f(final String s) { 035 return s.length(); 036 } 037 }; 038 039 /** 040 * A curried version of {@link String#contains(CharSequence)}. 041 * The function returns true if the second argument contains the first. 042 */ 043 public static final F<String, F<String, Boolean>> contains = curry(new F2<String, String, Boolean>() { 044 public Boolean f(final String s1, final String s2) { 045 return s2.contains(s1); 046 } 047 }); 048 049 /** 050 * A curried version of {@link String#matches(String)}. 051 * The function returns true if the second argument matches the first. 052 */ 053 public static final F<String, F<String, Boolean>> matches = curry(new F2<String, String, Boolean>() { 054 public Boolean f(final String s1, final String s2) { 055 return s2.matches(s1); 056 } 057 }); 058 059 }