Todd 17a365ee93 spreadsheet: start adding support for formula evaluation
We can take advantage of cached formula results that Excel/LibreOffice
insert to ensure that our formula results match the expected results.
2017-09-14 22:17:42 -05:00

33 lines
934 B
Go

// Copyright 2017 Baliance. All rights reserved.
//
// Use of this source code is governed by the terms of the Affero GNU General
// Public License version 3.0 as published by the Free Software Foundation and
// appearing in the file LICENSE included in the packaging of this file. A
// commercial license can be purchased by contacting sales@baliance.com.
package formula
import "fmt"
// Evaluator is the interface for a formula evaluator. This is needed so we can
// pass it to the spreadsheet to let it evaluate formula cells before returning
// the results.
type Evaluator interface {
Eval(ctx Context, formula string) Result
}
func NewEvaluator() Evaluator {
return &defEval{}
}
type defEval struct {
}
func (d *defEval) Eval(ctx Context, formula string) Result {
expr := ParseString(formula)
if expr != nil {
return expr.Eval(ctx, d)
}
return MakeErrorResult(fmt.Sprintf("unable to parse formula %s", formula))
}