func checkCaptureIndex(L *LState, m *pm.MatchData, idx int) { if idx <= 2 { return } if idx >= m.CaptureLength() { L.RaiseError("invalid capture index") } }
func capturedString(L *LState, m *pm.MatchData, str string, idx int) string { checkCaptureIndex(L, m, idx) if idx >= m.CaptureLength() && idx == 2 { idx = 0 } if m.IsPosCapture(idx) { return fmt.Sprint(m.Capture(idx)) } else { return str[m.Capture(idx):m.Capture(idx+1)] } }