Package net.exoego.queen

Source Code of net.exoego.queen.MatchResultSeq$StringMatchResultEnumerator

package net.exoego.queen;

import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

class MatchResultSeq extends AbstractSeq<MatchResult> {
    private final Pattern pattern;
    private final CharSequence source;

    private MatchResultSeq(final CharSequence source, final Pattern pattern) {
        this.pattern = pattern;
        this.source = source;
    }

    static Seq<MatchResult> newInstance(final CharSequence charSequence, final Pattern pattern) {
        if (charSequence == null) {
            throw new NullPointerException("charSequence");
        }
        if (pattern == null) {
            throw new NullPointerException("pattern");
        }
        return new MatchResultSeq(charSequence, pattern);
    }

    @Override
    public Enumerator<MatchResult> iterator() {
        return new StringMatchResultEnumerator(pattern, source);
    }

    private static final class StringMatchResultEnumerator extends Enumerator<MatchResult> {
        private final Pattern pattern;
        private final CharSequence source;
        private int lastMatch;

        StringMatchResultEnumerator(final Pattern pattern, final CharSequence source) {
            this.pattern = pattern;
            this.source = source;
            lastMatch = 0;
        }

        @Override
        protected boolean tryGetNext() {
            final Matcher match = pattern.matcher(source.toString());
            if (match.find(lastMatch)) {
                lastMatch = match.end();
                return yield(match.toMatchResult());
            }
            return false;
        }
    }
}
TOP

Related Classes of net.exoego.queen.MatchResultSeq$StringMatchResultEnumerator

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.