// LuaOp uses go-lua to run a lua snippet on a list of values and return a single value. // It makes the chrom, start, end, and values available to the lua interpreter. func (s *Source) LuaOp(v interfaces.IVariant, code string, vals []interface{}) string { value, err := s.Vm.Run(code, map[string]interface{}{ "chrom": v.Chrom(), "start": v.Start(), "stop": v.End(), "ref": v.Ref(), "alt": v.Alt(), "vals": vals}) if err != nil { log.Printf("ERROR in at %s:%d. %s\nvals:%+v", v.Chrom(), v.Start()+1, err, vals) return fmt.Sprintf("err:%v", value) } return fmt.Sprintf("%v", value) }