Package com.googlecode.totallylazy

Source Code of com.googlecode.totallylazy.Characters

package com.googlecode.totallylazy;

import com.googlecode.totallylazy.numbers.Numbers;
import com.googlecode.totallylazy.predicates.LogicalPredicate;

import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import java.util.Set;

public class Characters {
    public static Charset UTF8 = Charset.forName("UTF-8");
    public static Charset UTF16 = Charset.forName("UTF-16");
    public static Charset ASCII = Charset.forName("ASCII");

    public static Sequence<Character> characters(final CharSequence value) {
        return Sequences.characters(value);
    }

    public static Sequence<Character> characters(final char[] value) {
        return Sequences.characters(value);
    }

    public static LogicalPredicate<Character> in(Charset charset) {
        final CharsetEncoder encoder = charset.newEncoder();
        return new LogicalPredicate<Character>() {
            @Override
            public boolean matches(Character other) {
                return encoder.canEncode(other);
            }
        };
    }

    public static LogicalPredicate<Character> in(final String characters) {
        return new LogicalPredicate<Character>(){
            @Override
            public boolean matches(Character other) {
                return characters.indexOf(other) != -1;
            }

            @Override
            public String toString() {
                return "[" + characters + "]";
            }
        };
    }

        public static LogicalPredicate<Character> identifierStart = new LogicalPredicate<Character>() {
        @Override
        public boolean matches(Character other) {
            return Character.isJavaIdentifierStart(other);
        }
    };

    public static LogicalPredicate<Character> identifierPart = new LogicalPredicate<Character>() {
        @Override
        public boolean matches(Character other) {
            return Character.isJavaIdentifierPart(other);
        }
    };

    public static LogicalPredicate<Character> letter = new LogicalPredicate<Character>() {
        public boolean matches(Character other) {
            return Character.isLetter(other);
        }
    };

    public static LogicalPredicate<Character> digit = new LogicalPredicate<Character>() {
        public boolean matches(Character other) {
            return Character.isDigit(other);
        }
    };

    public static LogicalPredicate<Character> between(final char start, final char end){
        return new LogicalPredicate<Character>() {
            public boolean matches(Character other) {
                return other >= start && other <= end;
            }
        };
    }

    public static LogicalPredicate<Character> alphaNumeric = between('A', 'Z').or(between('a', 'z')).or(between('0', '9'));

    public static Sequence<Character> range(char start, char end) {
        return Numbers.range((int) start, (int) end).map(new Callable1<Number, Character>() {
            @Override
            public Character call(Number number) throws Exception {
                return (char) number.intValue();
            }
        });
    }

    public static Set<Character> set(Charset charset) {
        return characters(charset).toSet();
    }

    public static Sequence<Character> characters(Charset charset) {
        return characters().filter(in(charset));
    }

    public static Sequence<Character> characters() {
        return range(Character.MIN_VALUE, Character.MAX_VALUE);
    }
}
TOP

Related Classes of com.googlecode.totallylazy.Characters

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.