aboutsummaryrefslogtreecommitdiff
path: root/var.go
diff options
context:
space:
mode:
authorFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-04-19 23:06:54 +0900
committerFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-04-19 23:12:19 +0900
commitf360910fec59179e06978a326a51ac4a2ce1212a (patch)
treed119c2018579c4507b14333816ee061d18f4862a /var.go
parentd8d8425d5af699cc9ad5d2d4001212ec4a3d7908 (diff)
RecursiveVar Append doesn't reprase old value.
Diffstat (limited to 'var.go')
-rw-r--r--var.go19
1 files changed, 13 insertions, 6 deletions
diff --git a/var.go b/var.go
index e06ab30..c2cc2bc 100644
--- a/var.go
+++ b/var.go
@@ -100,15 +100,22 @@ func (v RecursiveVar) Eval(w io.Writer, ev *Evaluator) {
}
func (v RecursiveVar) Append(_ *Evaluator, s string) Var {
- var buf bytes.Buffer
- buf.WriteString(v.expr.String())
- buf.WriteByte(' ')
- buf.WriteString(s)
- e, _, err := parseExpr(buf.Bytes(), nil)
+ var expr Expr
+ if e, ok := v.expr.(Expr); ok {
+ expr = append(e, literal(" "))
+ } else {
+ expr = Expr{v.expr, literal(" ")}
+ }
+ sv, _, err := parseExpr([]byte(s), nil)
if err != nil {
panic(err)
}
- v.expr = e
+ if aexpr, ok := sv.(Expr); ok {
+ expr = append(expr, aexpr...)
+ } else {
+ expr = append(expr, sv)
+ }
+ v.expr = expr
return v
}