#!/usr/bin/ruby
define r = /(....)/
define s = '1234567'
assert_eq('4567', r.match(s, 3)[0] )
assert_eq('1234', r.match(s, 0)[0] )
assert_eq('1234', r.match(s, -1)[0] )
assert_eq('1234', r.match(s, 0.7)[0] )
# No matching when pos >= length(str)
#assert_eq('1234', r.match(s, 11)[0] )
#assert_eq('1234', r.match(s, 7)[0] )
#assert_eq('1234', r.match(s, 8)[0] )
do {
var captures = []
var str = "foo -- bar -- baz"
var pos = 0
while (/(\w+)/.match(str, pos)) {|m|
captures << "#{m}"
pos = m.pos[1]
}
assert_eq(captures, ['foo', 'bar', 'baz'])
}
say "** Test passed!"