Dramatic overhaul of the parser and interface inspired by #42, the need to expose types (#38), and locale issues (#23).
Changes from 2.0:
Formatters are no longer constructed. Formatting is just a simple call.
Fixes: #42
Types are now exposed for the entire interface.
Closes #38
nbsp option is now off by default. A non-breaking space is till used as the grouping separator in the default locale, so "13 203" should not linebreak.
formatColor() now returns null if pattern does not define a color. Previously it would default to "black".
Fixes #40
locale has been fixed so that a pattern may correctly override a locale. The expected behaviour is to be able to provide a default locale and that formatters override it by modifiers.
Both _enUS and en-US styles are now supported for locale tags.
Group sizing is now controlled by an option, { grouping: [ 3, 3 ] }
The formatter had remnants of behaviour from its ancestor which allowed defining group sizing in the format. In Excel, #,##,##0 and #,##0 are equivalent but sizing is controlled via locale settings.
Fixes #48
dateToSerial() no longer passes non-dates through. If it gets incompatible input (such as a number), a null will be returned.
nativeDate option has been removed. This affects two things:
dateFromSerial() now always returns a date parts array ([ y, m, d, ... ]).
parseValue()/parseDate() can no longer return dates.
If you need the old behaviour then here is a utility function that safely converts the output to a Date.
function toNativeDate (dateArrray) {
const [ y, m, d, hh, mm, ss ] = dateArrray;
const dt = new Date(0);
dt.setUTCFullYear(y, m - 1, d);
dt.setUTCHours(hh, mm, ss);
return dt;
}
Dramatic overhaul of the parser and interface inspired by #42, the need to expose types (#38), and locale issues (#23).
Changes from 2.0:
Formatters are no longer constructed. Formatting is just a simple call. Fixes: #42
Types are now exposed for the entire interface. Closes #38
nbsp option is now off by default. A non-breaking space is till used as the grouping separator in the default locale, so "13 203" should not linebreak.
formatColor()
now returnsnull
if pattern does not define a color. Previously it would default to "black". Fixes #40locale has been fixed so that a pattern may correctly override a locale. The expected behaviour is to be able to provide a default locale and that formatters override it by modifiers.
Both _enUS and en-US styles are now supported for locale tags.
Group sizing is now controlled by an option,
{ grouping: [ 3, 3 ] }
The formatter had remnants of behaviour from its ancestor which allowed defining group sizing in the format. In Excel,#,##,##0
and#,##0
are equivalent but sizing is controlled via locale settings. Fixes #48dateToSerial()
no longer passes non-dates through. If it gets incompatible input (such as a number), anull
will be returned.nativeDate option has been removed. This affects two things:
dateFromSerial()
now always returns a date parts array ([ y, m, d, ... ]
).parseValue()
/parseDate()
can no longer return dates.If you need the old behaviour then here is a utility function that safely converts the output to a
Date
.