aboutsummaryrefslogtreecommitdiff
path: root/var.go
diff options
context:
space:
mode:
authorFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-07-07 14:19:32 +0900
committerFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-07-07 15:21:46 +0900
commitb44b12d1f8db50517bdbb949516d84375f578d47 (patch)
treedbb466b1d818bdd11326b70da419c06f21e4d27f /var.go
parentc8b4b1c1ecba85933c16b74052e23106bf5581f2 (diff)
introduce evalWriter
merge ssvWriter into buffer
Diffstat (limited to 'var.go')
-rw-r--r--var.go20
1 files changed, 11 insertions, 9 deletions
diff --git a/var.go b/var.go
index 7169152..87f032e 100644
--- a/var.go
+++ b/var.go
@@ -70,7 +70,7 @@ func (v *targetSpecificVar) String() string {
return v.v.String()
// return v.v.String() + " (op=" + v.op + ")"
}
-func (v *targetSpecificVar) Eval(w io.Writer, ev *Evaluator) error {
+func (v *targetSpecificVar) Eval(w evalWriter, ev *Evaluator) error {
return v.v.Eval(w, ev)
}
@@ -97,7 +97,7 @@ func (v *simpleVar) Origin() string { return v.origin }
func (v *simpleVar) IsDefined() bool { return true }
func (v *simpleVar) String() string { return v.value }
-func (v *simpleVar) Eval(w io.Writer, ev *Evaluator) error {
+func (v *simpleVar) Eval(w evalWriter, ev *Evaluator) error {
io.WriteString(w, v.value)
return nil
}
@@ -153,7 +153,7 @@ func (v *automaticVar) Origin() string { return "automatic" }
func (v *automaticVar) IsDefined() bool { return true }
func (v *automaticVar) String() string { return string(v.value) }
-func (v *automaticVar) Eval(w io.Writer, ev *Evaluator) error {
+func (v *automaticVar) Eval(w evalWriter, ev *Evaluator) error {
w.Write(v.value)
return nil
}
@@ -169,10 +169,11 @@ func (v *automaticVar) Append(ev *Evaluator, s string) (Var, error) {
if err != nil {
return nil, err
}
- buf := bytes.NewBuffer(nil)
+ var buf buffer
buf.Write(v.value)
buf.WriteByte(' ')
- err = val.Eval(buf, ev)
+ buf.resetSpace()
+ err = val.Eval(&buf, ev)
if err != nil {
return nil, err
}
@@ -183,10 +184,11 @@ func (v *automaticVar) Append(ev *Evaluator, s string) (Var, error) {
}
func (v *automaticVar) AppendVar(ev *Evaluator, val Value) (Var, error) {
- buf := bytes.NewBuffer(nil)
+ var buf buffer
buf.Write(v.value)
buf.WriteByte(' ')
- err := val.Eval(buf, ev)
+ buf.resetSpace()
+ err := val.Eval(&buf, ev)
if err != nil {
return nil, err
}
@@ -206,7 +208,7 @@ func (v *recursiveVar) Origin() string { return v.origin }
func (v *recursiveVar) IsDefined() bool { return true }
func (v *recursiveVar) String() string { return v.expr.String() }
-func (v *recursiveVar) Eval(w io.Writer, ev *Evaluator) error {
+func (v *recursiveVar) Eval(w evalWriter, ev *Evaluator) error {
v.expr.Eval(w, ev)
return nil
}
@@ -262,7 +264,7 @@ func (undefinedVar) Flavor() string { return "undefined" }
func (undefinedVar) Origin() string { return "undefined" }
func (undefinedVar) IsDefined() bool { return false }
func (undefinedVar) String() string { return "" }
-func (undefinedVar) Eval(_ io.Writer, _ *Evaluator) error {
+func (undefinedVar) Eval(_ evalWriter, _ *Evaluator) error {
return nil
}
func (undefinedVar) serialize() serializableVar {