hyperformula
hyperformula copied to clipboard
ODFF 1.3 Small Group Evaluator requirements
Description
The first milestone should be to meet ODFF 1.3 Small Group Evaluator requirements. This gives us an MVP as defined by the OpenFormula standard.
Most of those requirements are already met. Some of the functions are already on our list #13
Requirements for Small Group Evaluator
From ODFF 1.3:
- [x] A) 3.7 It shall implement at least the limits defined in the βBasic Limitsβ section #59
- [ ] B) It shall implement the syntax defined in these sections on syntax:
- [x] 4.11.11 Criteria
- [x] 5.2 Basic Expressions #76
- [x] 5.3 Constant Numbers
- [x] 5.4 Constant Strings
- [x] 5.5 Operators
- [x] Prefix "-" has higher precedence than "^"
- [ ] Reference intersection has a higher precedence than reference union
- [x] Precedence can be overridden by using parentheses
- [x] "Unnecessary" parentheses and white space should be retained, people add them to improve readability.
- [x] 5.6 Functions and Function Parameters
- [x] Function names are case-insensitive (spec)
- [x] Functions can be called wit 0 parameters i.e.
=TRUE()
(spec) - [x] Parameters are separated using the semicolon
;
(spec) - [x] Supports naming as defined by XML letter, digit and combiningChar
- [x] 5.7 Nonstandard Function Names (spec)
- [x] Not supported function should compute as an Error other than
#N/A
- [x] Functions that are not part of the ODFF spec should be namespaced if possible
- [x] Not supported function should compute as an Error other than
- [ ] 5.8 References #64 #65 #66
- [x] 5.11 Simple Named Expressions
- [x] 5.12 Constant Errors #63
- [x] 5.14 Whitespace #68
- [x] Ignore the whitespace in calculations
- [x] Support four whitespace types: SPACE (U+0020), CHARACTER TABULATION (U+0009), LINE FEED (U+000A), CARRIAGE RETURN (U+000D)
- [x] Retain whitespace entered by the user for formatting purposes
- [x] C) It shall implement all implicit conversions for the types it implements, at least
- [x] 6.3.2 Conversion to Scalar
- [x] 6.3.5 Conversion to Number
- [x] Number, return as is
- [x] Logical, return 0 if FALSE, and 1 if TRUE
- [x] Text
- [x] Reference ... π±
- [x] 6.3.12 Conversion to Logical
- [x] Number is TRUE for
<>0
and FALSE for0
- [x] Depends on implementation
- [x] Return always FALSE
- [x] Return always Error
- [x] Convert "false" (ignore case) to FALSE, "true" to TRUE. Fallback to FALSE or return an Error if conversion failed. Locale specific, use "prawda" for pl-PL etc.
- [x] Logical as is
- [x] Reference, convert to scalar first. Empty cell is FALSE.
- [x] Number is TRUE for
- [x] 6.3.14 Conversion to Text
- [x] Number is transformed to Text with no whitespace
- [x] Text is returned as is
- [x] Logical returns "TRUE" and "FALSE" as uppercase strings
- [x] Reference: conversion to scalar. If empty, return empty string. (fails on range)
- [x] Reference
- [x] and when an expression returns an Error
- [ ] D) It shall implement the following operators (which are all the operators except reference union (~)):
- [x] 6.4.9 Infix Operator Ordered Comparison ("<", "<=", ">", ">=") (spec)
- [x] 6.4.10 Infix Operator "&β (spec)
- [x] 6.4.2 Infix Operator "+β (spec)
- [x] 6.4.3 Infix Operator "-β (spec)
- [x] 6.4.4 Infix Operator "*β (spec)
- [x] 6.4.5 Infix Operator "/β (spec)
- [x] 6.4.6 Infix Operator "^β (spec)
- [x] 6.4.7 Infix Operator "=β (spec)
- [x] 6.4.8 Infix Operator "<>β (spec)
- [x] 6.4.14 Postfix Operator β%β #44 (spec)
- [x] 6.4.15 Prefix Operator β+β #70 (~spec~)
- [x] 6.4.16 Prefix Operator β-β (spec)
- [ ] 6.4.12 Infix Operator Reference Intersection ("!") #15 (~spec~)
- [ ] 6.4.11 Infix Operator Range (":") #15 (~spec~)
- [ ] E) ~It shall implement at least the following functions as defined in this specification~ Extracted to separate issue, will be tracked here #274
- [x] F) It need not evaluate references that contain more than one area.
- [x] G) It need not implement
- [x] inline arrays 5.13
- [x] complex numbers 4.4
- [x] and the reference union operator 6.4.13
Reference
https://www.oasis-open.org/committees/documents.php?wg_abbrev=office