【发布时间】:2015-12-09 16:30:44
【问题描述】:
我正在尝试解析可以注入在配置文件中定义的变量的 CSS 文件。目前该功能:
- 根据给定的路径参数打开文件
- 解析文件内容
- 通过注入配置变量来执行模板
- 将渲染的内容写入控制台而不是原始文件
func parse(path string) {
f, err := ioutil.ReadFile(path)
if err != nil {
log.Print(err)
return
}
// Parse requires a string
t, err := template.New("css").Parse(string(f))
if err != nil {
log.Print(err)
return
}
// A sample config
config := map[string]string {
"textColor": "#abcdef",
"linkColorHover": "#ffaacc",
}
// Execute needs some sort of io.Writer
err = t.Execute(os.Stdout, config)
if err != nil {
log.Print("Can't execute ", path)
}
}
我的问题是 template.Parse() 需要内容作为字符串,template.Execute() 需要 io.Writer 作为参数。我试图用os.Open() 打开文件,它返回一个实现io.Writer 接口的文件对象。但是如何从这样的文件对象中获取文件的内容作为字符串以便与Parse() 一起使用?
【问题讨论】:
-
我尝试扩展一个静态端生成器。因此我只需要这样做一次。