MCPcopy
hub / github.com/qax-os/excelize / formulaCriteriaEval

Function formulaCriteriaEval

calc.go:1874–1895  ·  view source on GitHub ↗

formulaCriteriaEval evaluate formula criteria expression.

(val formulaArg, criteria *formulaCriteria)

Source from the content-addressed store, hash-verified

1872
1873// formulaCriteriaEval evaluate formula criteria expression.
1874func formulaCriteriaEval(val formulaArg, criteria *formulaCriteria) (result bool, err error) {
1875 s := NewStack()
1876 tokenCalcFunc := map[byte]func(rOpd, lOpd formulaArg, opdStack *Stack) error{
1877 criteriaEq: calcEq,
1878 criteriaNe: calcNEq,
1879 criteriaL: calcL,
1880 criteriaLe: calcLe,
1881 criteriaG: calcG,
1882 criteriaGe: calcGe,
1883 }
1884 switch criteria.Type {
1885 case criteriaEq, criteriaLe, criteriaGe, criteriaNe, criteriaL, criteriaG:
1886 if fn, ok := tokenCalcFunc[criteria.Type]; ok {
1887 if _ = fn(criteria.Condition, val, s); s.Len() > 0 {
1888 return s.Pop().(formulaArg).Number == 1, err
1889 }
1890 }
1891 case criteriaRegexp:
1892 return regexp.MatchString(criteria.Condition.Value(), val.Value())
1893 }
1894 return
1895}
1896
1897// Engineering Functions
1898

Callers 7

SUMIFMethod · 0.85
AVERAGEIFMethod · 0.85
COUNTIFMethod · 0.85
formulaIfsMatchFunction · 0.85
calcMatchMatrixFunction · 0.85
calcMatchFunction · 0.85
criteriaEvalMethod · 0.85

Calls 4

LenMethod · 0.95
PopMethod · 0.95
NewStackFunction · 0.85
ValueMethod · 0.45

Tested by

no test coverage detected