summaryrefslogtreecommitdiff
path: root/calc.go
diff options
context:
space:
mode:
Diffstat (limited to 'calc.go')
-rw-r--r--calc.go134
1 files changed, 103 insertions, 31 deletions
diff --git a/calc.go b/calc.go
index 89eb087..b3c6df8 100644
--- a/calc.go
+++ b/calc.go
@@ -1377,7 +1377,7 @@ func (f *File) rangeResolver(cellRefs, cellRanges *list.List) (arg formulaArg, e
if cellRanges.Len() > 0 {
arg.Type = ArgMatrix
for row := valueRange[0]; row <= valueRange[1]; row++ {
- var matrixRow = []formulaArg{}
+ matrixRow := []formulaArg{}
for col := valueRange[2]; col <= valueRange[3]; col++ {
var cell, value string
if cell, err = CoordinatesToCellName(col, row); err != nil {
@@ -1473,7 +1473,7 @@ func formulaCriteriaParser(exp string) (fc *formulaCriteria) {
func formulaCriteriaEval(val string, criteria *formulaCriteria) (result bool, err error) {
var value, expected float64
var e error
- var prepareValue = func(val, cond string) (value float64, expected float64, err error) {
+ prepareValue := func(val, cond string) (value float64, expected float64, err error) {
if value, err = strconv.ParseFloat(val, 64); err != nil {
return
}
@@ -3385,7 +3385,7 @@ func (fn *formulaFuncs) DECIMAL(argsList *list.List) formulaArg {
if argsList.Len() != 2 {
return newErrorFormulaArg(formulaErrorVALUE, "DECIMAL requires 2 numeric arguments")
}
- var text = argsList.Front().Value.(formulaArg).String
+ text := argsList.Front().Value.(formulaArg).String
var radix int
var err error
radix, err = strconv.Atoi(argsList.Back().Value.(formulaArg).String)
@@ -3934,7 +3934,7 @@ func (fn *formulaFuncs) MDETERM(argsList *list.List) (result formulaArg) {
return newErrorFormulaArg(formulaErrorVALUE, "MDETERM requires at least 1 argument")
}
strMtx = argsList.Front().Value.(formulaArg).Matrix
- var rows = len(strMtx)
+ rows := len(strMtx)
for _, row := range argsList.Front().Value.(formulaArg).Matrix {
if len(row) != rows {
return newErrorFormulaArg(formulaErrorVALUE, formulaErrorVALUE)
@@ -4257,30 +4257,107 @@ type romanNumerals struct {
var romanTable = [][]romanNumerals{
{
- {1000, "M"}, {900, "CM"}, {500, "D"}, {400, "CD"}, {100, "C"}, {90, "XC"},
- {50, "L"}, {40, "XL"}, {10, "X"}, {9, "IX"}, {5, "V"}, {4, "IV"}, {1, "I"},
+ {1000, "M"},
+ {900, "CM"},
+ {500, "D"},
+ {400, "CD"},
+ {100, "C"},
+ {90, "XC"},
+ {50, "L"},
+ {40, "XL"},
+ {10, "X"},
+ {9, "IX"},
+ {5, "V"},
+ {4, "IV"},
+ {1, "I"},
},
{
- {1000, "M"}, {950, "LM"}, {900, "CM"}, {500, "D"}, {450, "LD"}, {400, "CD"},
- {100, "C"}, {95, "VC"}, {90, "XC"}, {50, "L"}, {45, "VL"}, {40, "XL"},
- {10, "X"}, {9, "IX"}, {5, "V"}, {4, "IV"}, {1, "I"},
+ {1000, "M"},
+ {950, "LM"},
+ {900, "CM"},
+ {500, "D"},
+ {450, "LD"},
+ {400, "CD"},
+ {100, "C"},
+ {95, "VC"},
+ {90, "XC"},
+ {50, "L"},
+ {45, "VL"},
+ {40, "XL"},
+ {10, "X"},
+ {9, "IX"},
+ {5, "V"},
+ {4, "IV"},
+ {1, "I"},
},
{
- {1000, "M"}, {990, "XM"}, {950, "LM"}, {900, "CM"}, {500, "D"}, {490, "XD"},
- {450, "LD"}, {400, "CD"}, {100, "C"}, {99, "IC"}, {90, "XC"}, {50, "L"},
- {45, "VL"}, {40, "XL"}, {10, "X"}, {9, "IX"}, {5, "V"}, {4, "IV"}, {1, "I"},
+ {1000, "M"},
+ {990, "XM"},
+ {950, "LM"},
+ {900, "CM"},
+ {500, "D"},
+ {490, "XD"},
+ {450, "LD"},
+ {400, "CD"},
+ {100, "C"},
+ {99, "IC"},
+ {90, "XC"},
+ {50, "L"},
+ {45, "VL"},
+ {40, "XL"},
+ {10, "X"},
+ {9, "IX"},
+ {5, "V"},
+ {4, "IV"},
+ {1, "I"},
},
{
- {1000, "M"}, {995, "VM"}, {990, "XM"}, {950, "LM"}, {900, "CM"}, {500, "D"},
- {495, "VD"}, {490, "XD"}, {450, "LD"}, {400, "CD"}, {100, "C"}, {99, "IC"},
- {90, "XC"}, {50, "L"}, {45, "VL"}, {40, "XL"}, {10, "X"}, {9, "IX"},
- {5, "V"}, {4, "IV"}, {1, "I"},
+ {1000, "M"},
+ {995, "VM"},
+ {990, "XM"},
+ {950, "LM"},
+ {900, "CM"},
+ {500, "D"},
+ {495, "VD"},
+ {490, "XD"},
+ {450, "LD"},
+ {400, "CD"},
+ {100, "C"},
+ {99, "IC"},
+ {90, "XC"},
+ {50, "L"},
+ {45, "VL"},
+ {40, "XL"},
+ {10, "X"},
+ {9, "IX"},
+ {5, "V"},
+ {4, "IV"},
+ {1, "I"},
},
{
- {1000, "M"}, {999, "IM"}, {995, "VM"}, {990, "XM"}, {950, "LM"}, {900, "CM"},
- {500, "D"}, {499, "ID"}, {495, "VD"}, {490, "XD"}, {450, "LD"}, {400, "CD"},
- {100, "C"}, {99, "IC"}, {90, "XC"}, {50, "L"}, {45, "VL"}, {40, "XL"},
- {10, "X"}, {9, "IX"}, {5, "V"}, {4, "IV"}, {1, "I"},
+ {1000, "M"},
+ {999, "IM"},
+ {995, "VM"},
+ {990, "XM"},
+ {950, "LM"},
+ {900, "CM"},
+ {500, "D"},
+ {499, "ID"},
+ {495, "VD"},
+ {490, "XD"},
+ {450, "LD"},
+ {400, "CD"},
+ {100, "C"},
+ {99, "IC"},
+ {90, "XC"},
+ {50, "L"},
+ {45, "VL"},
+ {40, "XL"},
+ {10, "X"},
+ {9, "IX"},
+ {5, "V"},
+ {4, "IV"},
+ {1, "I"},
},
}
@@ -4751,8 +4828,8 @@ func (fn *formulaFuncs) SUMIF(argsList *list.List) formulaArg {
if argsList.Len() < 2 {
return newErrorFormulaArg(formulaErrorVALUE, "SUMIF requires at least 2 arguments")
}
- var criteria = formulaCriteriaParser(argsList.Front().Next().Value.(formulaArg).String)
- var rangeMtx = argsList.Front().Value.(formulaArg).Matrix
+ criteria := formulaCriteriaParser(argsList.Front().Next().Value.(formulaArg).String)
+ rangeMtx := argsList.Front().Value.(formulaArg).Matrix
var sumRange [][]formulaArg
if argsList.Len() == 3 {
sumRange = argsList.Back().Value.(formulaArg).Matrix
@@ -5886,7 +5963,7 @@ func (fn *formulaFuncs) MEDIAN(argsList *list.List) formulaArg {
if argsList.Len() == 0 {
return newErrorFormulaArg(formulaErrorVALUE, "MEDIAN requires at least 1 argument")
}
- var values = []float64{}
+ values := []float64{}
var median, digits float64
var err error
for token := argsList.Front(); token != nil; token = token.Next() {
@@ -9047,7 +9124,6 @@ func compareFormulaArg(lhs, rhs, matchMode formulaArg, caseSensitive bool) byte
if matchPattern(rs, ls) {
return criteriaEq
}
-
}
return map[int]byte{1: criteriaG, -1: criteriaL, 0: criteriaEq}[strings.Compare(ls, rs)]
case ArgEmpty:
@@ -9931,9 +10007,8 @@ func (fn *formulaFuncs) ACCRINT(argsList *list.List) formulaArg {
return newErrorFormulaArg(formulaErrorNUM, formulaErrorNUM)
}
}
- cm := newBoolFormulaArg(true)
if argsList.Len() == 8 {
- if cm = argsList.Back().Value.(formulaArg).ToBool(); cm.Type != ArgNumber {
+ if cm := argsList.Back().Value.(formulaArg).ToBool(); cm.Type != ArgNumber {
return newErrorFormulaArg(formulaErrorVALUE, formulaErrorVALUE)
}
}
@@ -10206,10 +10281,8 @@ func coupdays(from, to time.Time, basis int) float64 {
date = date.AddDate(0, 13-int(date.Month()), 0)
}
days += getDaysInMonthRange(toY, int(date.Month()), int(toM)-1, basis)
- date = date.AddDate(0, int(toM)-int(date.Month()), 0)
}
- days += toDay - fromDay
- if days > 0 {
+ if days += toDay - fromDay; days > 0 {
return float64(days)
}
return 0
@@ -11375,8 +11448,7 @@ func (fn *formulaFuncs) ODDFPRICE(argsList *list.List) formulaArg {
if args.Type != ArgList {
return args
}
- settlement, maturity, issue, firstCoupon, rate, yld, redemption, frequency, basisArg :=
- args.List[0], args.List[1], args.List[2], args.List[3], args.List[4], args.List[5], args.List[6], args.List[7], args.List[8]
+ settlement, maturity, issue, firstCoupon, rate, yld, redemption, frequency, basisArg := args.List[0], args.List[1], args.List[2], args.List[3], args.List[4], args.List[5], args.List[6], args.List[7], args.List[8]
if basisArg.Number < 0 || basisArg.Number > 4 {
return newErrorFormulaArg(formulaErrorNUM, "invalid basis")
}