code: func initScript(root string) error {
  	modTime := time.Now()
  	b := new(bytes.Buffer)
  
  	content, ok := static.Files["playground.js"]
  	if !ok {
  		return fmt.Errorf("playground.js not found in static files")
  	}
  	b.WriteString(content)
  
  	// Keep this list in dependency order
  	files := []string{
  		"static/lib/jquery.min.js",
  		"static/lib/jquery-ui.min.js",
  		"static/lib/angular.min.js",
  		"static/lib/codemirror/lib/codemirror.js",
  		"static/lib/codemirror/mode/go/go.js",
  		"static/lib/angular-ui.min.js",
  		"static/js/app.js",
  		"static/js/controllers.js",
  		"static/js/directives.js",
  		"static/js/services.js",
  		"static/js/values.js",
  	}
  
  	for _, file := range files {
  		f, err := ioutil.ReadFile(filepath.Join(root, file))
  		if err != nil {
  			return fmt.Errorf("couldn't open %v: %v", file, err)
  		}
  		_, err = b.Write(f)
  		if err != nil {
  			return fmt.Errorf("error concatenating %v: %v", file, err)
  		}
  	}
  
  	http.HandleFunc("/script.js", func(w http.ResponseWriter, r *http.Request) {
  		w.Header().Set("Content-type", "application/javascript")
  		// Set expiration time in one week.
  		w.Header().Set("Cache-control", "max-age=604800")
  		http.ServeContent(w, r, "", modTime, bytes.NewReader(b.Bytes()))
  	})
  
  	return nil
  }
docs: // initScript concatenates all the javascript files needed to render
  // the tour UI and serves the result on /script.js.