diff --git a/envexp/global.go b/envexp/global.go index f80ad78..e47516b 100644 --- a/envexp/global.go +++ b/envexp/global.go @@ -1,6 +1,7 @@ package envexp import ( + "io" "os" ) @@ -12,3 +13,27 @@ var envExpander = &Expander{ func Expand(s string) string { return envExpander.Expand(s) } + +// NewReaderSize creates a new Reader wrapper with a given buffer size +// using os.GetEnv() for expanding +func NewReaderSize(in io.Reader, size int) *Reader { + return envExpander.NewReaderSize(in, size) +} + +// NewReader creates a new Reader wrapper +// using os.GetEnv() for expanding +func NewReader(in io.Reader) *Reader { + return envExpander.NewReader(in) +} + +// NewReaderFileSize creates a new Reader for a file +// with a given buffer size using os.GetEnv() for expanding +func NewReaderFileSize(filename string, size int) (*Reader, error) { + return envExpander.NewReaderFileSize(filename, size) +} + +// NewReaderFile creates a new Reader for a file +// using os.GetEnv() for expanding +func NewReaderFile(filename string) (*Reader, error) { + return envExpander.NewReaderFile(filename) +} diff --git a/envexp/reader.go b/envexp/reader.go index f1ed8c4..e408f4f 100644 --- a/envexp/reader.go +++ b/envexp/reader.go @@ -12,6 +12,7 @@ const ( ) type Reader struct { + exp *Expander in io.Reader buf *bytes.Buffer out *bytes.Buffer @@ -31,32 +32,33 @@ func (rd *Reader) Close() error { // // Constructors // -func NewReaderSize(in io.Reader, size int) *Reader { +func (exp *Expander) NewReaderSize(in io.Reader, size int) *Reader { if size < MinimumBufferSize { size = DefaultBufferSize } return &Reader{ + exp: exp, in: in, buf: bytes.NewBuffer(make([]byte, 0, size)), out: bytes.NewBuffer(make([]byte, 0, size)), } } -func NewReader(in io.Reader) *Reader { - return NewReaderSize(in, DefaultBufferSize) +func (exp *Expander) NewReader(in io.Reader) *Reader { + return exp.NewReaderSize(in, DefaultBufferSize) } -func NewReaderFileSize(filename string, size int) (*Reader, error) { +func (exp *Expander) NewReaderFileSize(filename string, size int) (*Reader, error) { f, err := os.Open(filename) if err != nil { return nil, err } - rd := NewReaderSize(f, size) + rd := exp.NewReaderSize(f, size) return rd, nil } -func NewReaderFile(filename string) (*Reader, error) { - return NewReaderFileSize(filename, DefaultBufferSize) +func (exp *Expander) NewReaderFile(filename string) (*Reader, error) { + return exp.NewReaderFileSize(filename, DefaultBufferSize) }