fdo69552 backward compatibility with optional arguments in calc functions
erack at redhat.com
Thu Nov 28 13:40:31 PST 2013
On Thursday, 2013-11-28 12:23:56 +0100, Winfried Donkers wrote:
> >The problem I have here is that with CEILING() and FLOOR() the second argument (significance) is optional
> >and has its default value (1 or -1) depending on the sign of the first argument (value).
> >How do I obtain this value in formula/source/core/api/token.cxx FormulaMissingContext::AddMoreArgs()
> >and FormulaMissingContext::AddMissing()?
> >The same problem may apply in sc/source/filter/excel/xeformula.cxx XclExpFmlaCompImpl::AppendTrailingParam()
> I fear I have the answer: I can't make the change to ODF-compliance backwards-compatible.
Indeed, that was the problem with these functions :-(
> When the optional 2nd argument (significance) is not entered by the user it has a value depending on the value of
> the 1st argument. But this 1st argument can contain a reference, i.e. is not known at the time of writing the file...
> This looks like the WEEKNUM/ISOWEEKNUM problem: to make the formulas comply with ODF1.2, backwards
> compatibilty is broken... :(
> What is the best way to proceed?
What follows is just a brainstorm, there may be quirks..
Over a long term, spanned over several releases:
0) current release (4.2)
1) for the next release (4.3) implement a second function named a little
different in the UI (e.g. CEILING_ODF) with the correct handling of
parameters, do not offer it in the FunctionWizard yet (there's a flag
in scfuncs.src to suppress functions and their descriptions) and when
reading from an ODF document a function that does not have the
optional but so far expected parameter map it to the new function
(CEILING_ODF), else map it to the old function (CEILING). Both are
saved as CEILING again in ODF without intervention, not changing
anything. This enables a release to read and handle future versions
(or correct ODF files).
2) in the then next release (4.4) activate CEILING_ODF in the
FunctionWizard, deprecate CEILING saying CEILING_ODF should be used
and that functions will be renamed in future, but offer both this
3) in next release (4.5) in the UI rename CEILING to CEILING_OOO and
rename CEILING_ODF to CEILING. Function descriptions should state
4) next release (4.6) deactivate CEILING_OOO in the FunctionWizard.
Users will still see that function name when such a document was
loaded, but will use CEILING else.
5) next release (4.7) drop CEILING_OOO completely. Users hopefully will
not miss it ;-)
By the time 4.5 will be published hopefully most users will have
switched from 4.2 to at least 4.3 so will be able to read the new
CEILING of 4.5 as CEILING_ODF
LibreOffice Calc developer. Number formatter stricken i18n transpositionizer.
GPG key ID: 0x65632D3A - 2265 D7F3 A7B0 95CC 3918 630B 6A6C D5B7 6563 2D3A
Support the FSFE, care about Free Software! https://fsfe.org/support/?erack
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 836 bytes
Desc: not available
More information about the LibreOffice