forked from unidoc/unioffice
-
Notifications
You must be signed in to change notification settings - Fork 0
/
evaluator.go
32 lines (26 loc) · 934 Bytes
/
evaluator.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 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))
}