diff options
| author | Fumitoshi Ukai <fumitoshi.ukai@gmail.com> | 2015-04-19 23:06:54 +0900 |
|---|---|---|
| committer | Fumitoshi Ukai <fumitoshi.ukai@gmail.com> | 2015-04-19 23:12:19 +0900 |
| commit | f360910fec59179e06978a326a51ac4a2ce1212a (patch) | |
| tree | d119c2018579c4507b14333816ee061d18f4862a /var.go | |
| parent | d8d8425d5af699cc9ad5d2d4001212ec4a3d7908 (diff) | |
RecursiveVar Append doesn't reprase old value.
Diffstat (limited to 'var.go')
| -rw-r--r-- | var.go | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -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 } |
