Method: ZScan#scan

Defined in:
ext/zscan.c

#scan(pattern) ⇒ Object



225
226
227
228
229
230
231
232
233
234
235
236
237
238
# File 'ext/zscan.c', line 225

static VALUE zscan_scan(VALUE self, VALUE pattern) {
  VALUE v_bytelen = zscan_match_bytesize(self, pattern);
  if (v_bytelen == Qnil) {
    return Qnil;
  } else {
    P;
    long bytelen = NUM2LONG(v_bytelen);
    volatile VALUE ret = rb_funcall(p->s, rb_intern("byteslice"), 2, LONG2NUM(p->bytepos), v_bytelen);
    VALUE v_len = rb_str_length(ret);
    p->bytepos += bytelen;
    p->pos += NUM2LONG(v_len);
    return ret;
  }
}