001 package fj.function; 002 003 import fj.F; 004 import fj.F2; 005 import fj.data.Stream; 006 import static fj.Function.curry; 007 008 /** 009 * First-class functions on Characters. 010 */ 011 public final class Characters { 012 public static final F<Character, String> toString = new F<Character, String>() { 013 public String f(final Character c) {return Character.toString(c);} 014 }; 015 public static final F<Character, Boolean> isLowerCase = new F<Character, Boolean>() { 016 public Boolean f(final Character ch) {return Character.isLowerCase(ch);} 017 }; 018 public static final F<Character, Boolean> isUpperCase = new F<Character, Boolean>() { 019 public Boolean f(final Character ch) {return Character.isUpperCase(ch);} 020 }; 021 public static final F<Character, Boolean> isTitleCase = new F<Character, Boolean>() { 022 public Boolean f(final Character ch) {return Character.isTitleCase(ch);} 023 }; 024 public static final F<Character, Boolean> isDigit = new F<Character, Boolean>() { 025 public Boolean f(final Character ch) {return Character.isDigit(ch);} 026 }; 027 public static final F<Character, Boolean> isDefined = new F<Character, Boolean>() { 028 public Boolean f(final Character ch) {return Character.isDefined(ch);} 029 }; 030 public static final F<Character, Boolean> isLetter = new F<Character, Boolean>() { 031 public Boolean f(final Character ch) {return Character.isLetter(ch);} 032 }; 033 public static final F<Character, Boolean> isLetterOrDigit = new F<Character, Boolean>() { 034 public Boolean f(final Character ch) {return Character.isLetterOrDigit(ch);} 035 }; 036 public static final F<Character, Boolean> isJavaIdentifierStart = new F<Character, Boolean>() { 037 public Boolean f(final Character ch) {return Character.isJavaIdentifierStart(ch);} 038 }; 039 public static final F<Character, Boolean> isJavaIdentifierPart = new F<Character, Boolean>() { 040 public Boolean f(final Character ch) {return Character.isJavaIdentifierPart(ch);} 041 }; 042 public static final F<Character, Boolean> isUnicodeIdentifierStart = new F<Character, Boolean>() { 043 public Boolean f(final Character ch) {return Character.isUnicodeIdentifierStart(ch);} 044 }; 045 public static final F<Character, Boolean> isUnicodeIdentifierPart = new F<Character, Boolean>() { 046 public Boolean f(final Character ch) {return Character.isUnicodeIdentifierPart(ch);} 047 }; 048 public static final F<Character, Boolean> isIdentifierIgnorable = new F<Character, Boolean>() { 049 public Boolean f(final Character ch) {return Character.isIdentifierIgnorable(ch);} 050 }; 051 public static final F<Character, Character> toLowerCase = new F<Character, Character>() { 052 public Character f(final Character ch) {return Character.toLowerCase(ch);} 053 }; 054 public static final F<Character, Character> toUpperCase = new F<Character, Character>() { 055 public Character f(final Character ch) {return Character.toUpperCase(ch);} 056 }; 057 public static final F<Character, Character> toTitleCase = new F<Character, Character>() { 058 public Character f(final Character ch) {return Character.toTitleCase(ch);} 059 }; 060 public static final F<Character, F<Integer, Integer>> digit = curry(new F2<Character, Integer, Integer>() { 061 public Integer f(final Character ch, final Integer radix) {return Character.digit(ch, radix);} 062 }); 063 public static final F<Character, Integer> getNumericValue = new F<Character, Integer>() { 064 public Integer f(final Character ch) {return Character.getNumericValue(ch);} 065 }; 066 public static final F<Character, Boolean> isSpaceChar = new F<Character, Boolean>() { 067 public Boolean f(final Character ch) {return Character.isSpaceChar(ch);} 068 }; 069 public static final F<Character, Boolean> isWhitespace = new F<Character, Boolean>() { 070 public Boolean f(final Character ch) {return Character.isWhitespace(ch);} 071 }; 072 public static final F<Character, Boolean> isISOControl = new F<Character, Boolean>() { 073 public Boolean f(final Character ch) {return Character.isISOControl(ch);} 074 }; 075 public static final F<Character, Integer> getType = new F<Character, Integer>() { 076 public Integer f(final Character ch) {return Character.getType(ch);} 077 }; 078 public static final F<Character, Byte> getDirectionality = new F<Character, Byte>() { 079 public Byte f(final Character ch) {return Character.getDirectionality(ch);} 080 }; 081 public static final F<Character, Boolean> isMirrored = new F<Character, Boolean>() { 082 public Boolean f(final Character ch) {return Character.isMirrored(ch);} 083 }; 084 public static final F<Character, Character> reverseBytes = new F<Character, Character>() { 085 public Character f(final Character ch) {return Character.reverseBytes(ch);} 086 }; 087 public static final F<Character, Boolean> isNewLine = new F<Character, Boolean>() { 088 public Boolean f(final Character c) { return c == '\n'; } 089 }; 090 }