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; }
if (matchCheck(end, s, prev, interrupt)) return match(s); return mismatch(); if (matchCheck(origRange, s, prev, interrupt)) return match(s); // ??? prev = s; s += enc.length(bytes, s, end); if (matchCheck(origRange, s, prev, interrupt)) return match(s); prev = s; s += enc.length(bytes, s, end); if (matchCheck(origRange, s, prev, interrupt)) return match(s); prev = s; s += enc.length(bytes, s, end); if (matchCheck(origRange, s, prev, interrupt)) return match(s); while (s != -1 && s >= low) { prev = enc.prevCharHead(bytes, str, s, end); if (matchCheck(origStart, s, prev, interrupt)) return match(s); s = prev; if (matchCheck(origStart, s, prev, interrupt)) return match(s); s = prev; } while (s >= range);
private final int mismatch() { if (Config.USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE) { if (msaBestLen >= 0) { int s = msaBestS; return match(s); } } // falls through finish: return FAILED; }
if (matchCheck(end, s, prev, interrupt)) return match(s); return mismatch(); if (matchCheck(origRange, s, prev, interrupt)) return match(s); // ??? prev = s; s += enc.length(bytes, s, end); if (matchCheck(origRange, s, prev, interrupt)) return match(s); prev = s; s += enc.length(bytes, s, end); if (matchCheck(origRange, s, prev, interrupt)) return match(s); prev = s; s += enc.length(bytes, s, end); if (matchCheck(origRange, s, prev, interrupt)) return match(s); while (s != -1 && s >= low) { prev = enc.prevCharHead(bytes, str, s, end); if (matchCheck(origStart, s, prev, interrupt)) return match(s); s = prev; if (matchCheck(origStart, s, prev, interrupt)) return match(s); s = prev; } while (s >= range);
private final int mismatch() { if (Config.USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE) { if (msaBestLen >= 0) { int s = msaBestS; return match(s); } } // falls through finish: return FAILED; }
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; }
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; }
@Override public boolean matches(int start) { return update(matcher.match(byteIndex(start), byteLength, Option.NONE)); } }
public static int matcherMatch(ThreadContext context, Matcher matcher, int start, int range, int option) { if (!context.runtime.getInstanceConfig().isInterruptibleRegexps()) return matcher.match(start, range, option); try { RubyThread thread = context.getThread(); SearchMatchTask task = new SearchMatchTask(thread, start, range, option, true); return thread.executeTask(context, matcher, task); } catch (InterruptedException e) { throw context.runtime.newInterruptedRegexpError("Regexp Interrupted"); } }
public static int matcherMatch(ThreadContext context, Matcher matcher, int start, int range, int option) { if (!context.runtime.getInstanceConfig().isInterruptibleRegexps()) return matcher.match(start, range, option); try { RubyThread thread = context.getThread(); SearchMatchTask task = new SearchMatchTask(thread, start, range, option, true); return thread.executeTask(context, matcher, task); } catch (InterruptedException e) { throw context.runtime.newInterruptedRegexpError("Regexp Interrupted"); } }
@Override public IRubyObject size(IRubyObject[] args) { Ruby runtime = getRuntime(); ByteList value = getByteList(); Encoding enc = value.getEncoding(); if (!enc.isUnicode() || isSingleByteOptimizable(RubyString.this, enc)) return rubyLength(runtime); Regex reg = RubyRegexp.getRegexpFromCache(runtime, GRAPHEME_CLUSTER_PATTERN, enc, RegexpOptions.NULL_OPTIONS); int beg = value.getBegin(); int end = beg + value.getRealSize(); Matcher matcher = reg.matcher(value.getUnsafeBytes(), beg, end); int count = 0; while (beg < end) { int len = matcher.match(beg, end, Option.DEFAULT); if (len <= 0) break; count++; beg += len; } return RubyFixnum.newFixnum(runtime, count); } };
@Override public IRubyObject size(IRubyObject[] args) { Ruby runtime = getRuntime(); ByteList value = getByteList(); Encoding enc = value.getEncoding(); if (!enc.isUnicode() || isSingleByteOptimizable(RubyString.this, enc)) return rubyLength(runtime); Regex reg = RubyRegexp.getRegexpFromCache(runtime, GRAPHEME_CLUSTER_PATTERN, enc, RegexpOptions.NULL_OPTIONS); int beg = value.getBegin(); int end = beg + value.getRealSize(); Matcher matcher = reg.matcher(value.getUnsafeBytes(), beg, end); int count = 0; while (beg < end) { int len = matcher.match(beg, end, Option.DEFAULT); if (len <= 0) break; count++; beg += len; } return RubyFixnum.newFixnum(runtime, count); } };
int len = matcher.match(ptr, end, Option.DEFAULT); if (len <= 0) break; RubyString result = newStringShared(runtime, ptrBytes, ptr, len, enc);
int len = matcher.match(ptr, end, Option.DEFAULT); if (len <= 0) break; RubyString result = newStringShared(runtime, ptrBytes, ptr, len, enc);
ret = matcher.match(beg, range, Option.NONE);
ret = matcher.match(beg, range, Option.NONE);
ret = matcher.match(value.begin + pos, value.begin + value.realSize, Option.NONE); } else { ret = matcher.search(value.begin + pos, value.begin + value.realSize, Option.NONE);