handsontable / handsontable/hyperformula

ODFF 1.3 Small Group Evaluator requirements

Open
#61 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Epic ODFF Conformance ODFF SGE Verified
Dominant language
TypeScript
Stars
2.8k
Forks
171
Avg merge
1d 22h
Merged PRs (30d)
7

Description

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:

  • 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:
    • 4.11.11 Criteria
    • 5.2 Basic Expressions #76
    • 5.3 Constant Numbers
    • 5.4 Constant Strings
    • 5.5 Operators
      • Prefix "-" has higher precedence than "^"
      • Reference intersection has a higher precedence than reference union
      • Precedence can be overridden by using parentheses
      • "Unnecessary" parentheses and white space should be retained, people add them to improve readability.
    • 5.6 Functions and Function Parameters
    • 5.7 Nonstandard Function Names (spec)
      • Not supported function should compute as an Error other than #N/A
      • Functions that are not part of the ODFF spec should be namespaced if possible
    • 5.8 References #64 #65 #66
    • 5.11 Simple Named Expressions
    • 5.12 Constant Errors #63
    • 5.14 Whitespace #68
      • Ignore the whitespace in calculations
      • Support four whitespace types: SPACE (U+0020), CHARACTER TABULATION (U+0009), LINE FEED (U+000A), CARRIAGE RETURN (U+000D)
      • Retain whitespace entered by the user for formatting purposes
  • C) It shall implement all implicit conversions for the types it implements, at least
    • 6.3.2 Conversion to Scalar
    • 6.3.5 Conversion to Number
      • Number, return as is
      • Logical, return 0 if FALSE, and 1 if TRUE
      • Text
      • Reference ... 😱
    • 6.3.12 Conversion to Logical
      • Number is TRUE for <>0 and FALSE for 0
      • Depends on implementation
        • Return always FALSE
        • Return always Error
        • 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.
      • Logical as is
      • Reference, convert to scalar first. Empty cell is FALSE.
    • 6.3.14 Conversion to Text
      • Number is transformed to Text with no whitespace
      • Text is returned as is
      • Logical returns "TRUE" and "FALSE" as uppercase strings
      • Reference: conversion to scalar. If empty, return empty string. (fails on range)
    • Reference
    • and when an expression returns an Error
  • D) It shall implement the following operators (which are all the operators except reference union (~)):
  • E) It shall implement at least the following functions as defined in this specification Extracted to separate issue, will be tracked here #274
  • F) It need not evaluate references that contain more than one area.
  • G) It need not implement
    • inline arrays 5.13
    • complex numbers 4.4
    • and the reference union operator 6.4.13
Reference

https://www.oasis-open.org/committees/documents.php?wg_abbrev=office

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the unchecked ODFF requirements in this issue and the linked work in #64, #65, #66, and #15. Read the referenced parser specs and interpreter operator specs to understand the existing coverage, then trace the parser and evaluator entry points for the missing reference syntax and operators. Done means the applicable unchecked requirements are implemented and covered by tests, while the function work tracked in #274 remains separate.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.