Search in sources :

Example 6 with Matcher

use of org.joni.Matcher in project es6draft by anba.

the class JoniRegExpMatcher method matcher.

@Override
public JoniMatchState matcher(CharSequence s) {
    UEncoding enc = getEncoding();
    if (s != lastInput) {
        lastInput = s;
        lastInputBytes = enc.toBytes(s);
    }
    int length = lastInputBytes.length - enc.minLength();
    Matcher matcher = getPattern().matcher(lastInputBytes, 0, length);
    return new JoniMatchState(enc, matcher, s, negativeLAGroups);
}
Also used : Matcher(org.joni.Matcher)

Example 7 with Matcher

use of org.joni.Matcher in project phoenix by apache.

the class JONIPattern method matches.

private boolean matches(byte[] bytes, int offset, int len) {
    int range = offset + len;
    Matcher matcher = pattern.matcher(bytes, offset, range);
    int ret = matcher.match(offset, range, Option.DEFAULT);
    return len == ret;
}
Also used : Matcher(org.joni.Matcher)

Example 8 with Matcher

use of org.joni.Matcher in project phoenix by apache.

the class JONIPattern method split.

private boolean split(byte[] srcBytes, int srcOffset, int srcLen, ImmutableBytesWritable outPtr) {
    SortOrder sortOrder = SortOrder.ASC;
    PArrayDataTypeEncoder builder = new PArrayDataTypeEncoder(PVarchar.INSTANCE, sortOrder);
    int srcRange = srcOffset + srcLen;
    Matcher matcher = pattern.matcher(srcBytes, 0, srcRange);
    int cur = srcOffset;
    boolean append;
    while (true) {
        int nextCur = matcher.search(cur, srcRange, Option.DEFAULT);
        if (nextCur < 0) {
            builder.appendValue(srcBytes, cur, srcRange - cur);
            break;
        }
        // REGEXP_SPLIT("12ONE34TWO56THREE78","[0-9]+")={null, "ONE", "TWO", "THREE", null}
        if (cur == matcher.getBegin()) {
            builder.appendValue(srcBytes, cur, 0);
        }
        if (cur < matcher.getBegin()) {
            builder.appendValue(srcBytes, cur, matcher.getBegin() - cur);
        }
        cur = matcher.getEnd();
        // REGEXP_SPLIT("12ONE34TWO56THREE78","[0-9]+")={null, "ONE", "TWO", "THREE", null}
        if (cur == srcRange) {
            builder.appendValue(srcBytes, cur, 0);
            break;
        }
    }
    byte[] bytes = builder.encode();
    if (bytes == null)
        return false;
    outPtr.set(bytes);
    return true;
}
Also used : PArrayDataTypeEncoder(org.apache.phoenix.schema.types.PArrayDataTypeEncoder) Matcher(org.joni.Matcher) SortOrder(org.apache.phoenix.schema.SortOrder)

Example 9 with Matcher

use of org.joni.Matcher in project phoenix by apache.

the class JONIPattern method substr.

private boolean substr(byte[] srcBytes, int offset, int range, ImmutableBytesWritable outPtr) {
    Matcher matcher = pattern.matcher(srcBytes, 0, range);
    boolean ret = matcher.search(offset, range, Option.DEFAULT) >= 0;
    if (ret) {
        int len = matcher.getEnd() - matcher.getBegin();
        outPtr.set(srcBytes, matcher.getBegin(), len);
    } else {
        outPtr.set(ByteUtil.EMPTY_BYTE_ARRAY);
    }
    return ret;
}
Also used : Matcher(org.joni.Matcher)

Aggregations

Matcher (org.joni.Matcher)9 Region (org.joni.Region)2 HashMap (java.util.HashMap)1 LinkedList (java.util.LinkedList)1 SortOrder (org.apache.phoenix.schema.SortOrder)1 PArrayDataTypeEncoder (org.apache.phoenix.schema.types.PArrayDataTypeEncoder)1 NameEntry (org.joni.NameEntry)1