2011-06-17 15:44:59 +00:00
|
|
|
// This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
|
|
|
|
// license. Its contents can be found at:
|
|
|
|
// http://creativecommons.org/publicdomain/zero/1.0/
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2011-11-09 13:46:27 +00:00
|
|
|
"compress/gzip"
|
2011-06-17 15:44:59 +00:00
|
|
|
"fmt"
|
|
|
|
"io"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Translate the input file.
|
|
|
|
// input -> gzip -> gowriter -> output.
|
2011-11-02 15:40:26 +00:00
|
|
|
func translate(input io.Reader, output io.Writer, pkgname, funcname string) (err error) {
|
2011-06-17 15:44:59 +00:00
|
|
|
var gz *gzip.Compressor
|
|
|
|
|
2011-06-17 16:52:40 +00:00
|
|
|
fmt.Fprintf(output, `package %s
|
2011-06-17 15:44:59 +00:00
|
|
|
|
2012-02-11 15:49:43 +00:00
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"compress/gzip"
|
|
|
|
"io"
|
|
|
|
)
|
|
|
|
|
|
|
|
func %s() ([]byte, error) {
|
|
|
|
var gz *gzip.Decompressor
|
|
|
|
var err error
|
|
|
|
if gz, err = gzip.NewReader(bytes.NewBuffer([]byte{`, pkgname, funcname)
|
2011-06-17 15:44:59 +00:00
|
|
|
|
2011-06-17 16:52:40 +00:00
|
|
|
if gz, err = gzip.NewWriter(&GoWriter{Writer: output}); err != nil {
|
2011-06-17 15:44:59 +00:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2011-06-17 16:52:40 +00:00
|
|
|
io.Copy(gz, input)
|
2011-06-17 15:44:59 +00:00
|
|
|
gz.Close()
|
|
|
|
|
2011-06-17 16:52:40 +00:00
|
|
|
fmt.Fprint(output, `
|
2012-02-11 15:49:43 +00:00
|
|
|
})); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
var b bytes.Buffer
|
|
|
|
io.Copy(&b, gz)
|
|
|
|
gz.Close()
|
2011-06-17 15:44:59 +00:00
|
|
|
|
2012-02-11 15:49:43 +00:00
|
|
|
return b.Bytes(), nil
|
|
|
|
}`)
|
2011-06-17 15:44:59 +00:00
|
|
|
return
|
|
|
|
}
|