code: func CompileModules(modules map[string]string) (*Compiler, error) {
  
  	parsed := make(map[string]*Module, len(modules))
  
  	for f, module := range modules {
  		if pm, err := ParseModule(f, module); err != nil {
  			return nil, err
  		} else if pm != nil {
  			parsed[f] = pm
  		}
  	}
  
  	compiler := NewCompiler()
  	compiler.Compile(parsed)
  
  	if compiler.Failed() {
  		return nil, compiler.Errors
  	}
  
  	return compiler, nil
  }
docs: // CompileModules takes a set of Rego modules represented as strings and
  // compiles them for evaluation. The keys of the map are used as filenames.