public int getNameToBackrefNumber(String name) { try { byte[] bytes = name.getBytes(); return pattern.nameToBackrefNumber(bytes, 0, bytes.length, regs); } catch (JOniException je) { throw getRuntime().newIndexError(je.getMessage()); } }
private int nameToBackrefNumber(RubyString str) { ByteList value = str.getByteList(); try { return pattern.nameToBackrefNumber( value.getUnsafeBytes(), value.getBegin(), value.getBegin() + value.getRealSize(), regs); } catch (JOniException je) { throw getRuntime().newIndexError(je.getMessage()); } }
// This returns a list of values in the order the names are defined (named capture local var // feature uses this). public IRubyObject[] getNamedBackrefValues(Ruby runtime) { if (pattern.numberOfNames() == 0) return NULL_ARRAY; IRubyObject[] values = new IRubyObject[pattern.numberOfNames()]; int j = 0; for (Iterator<NameEntry> i = pattern.namedBackrefIterator(); i.hasNext(); ) { NameEntry e = i.next(); int nth = pattern.nameToBackrefNumber(e.name, e.nameP, e.nameEnd, regs); values[j++] = RubyRegexp.nth_match(nth, this); } return values; }