@@ -236,17 +236,19 @@ function arrayEscape(x) {
236236 . replace ( escapeQuote , '\\"' )
237237}
238238
239- export const arraySerializer = function arraySerializer ( xs , serializer , options ) {
239+ export const arraySerializer = function arraySerializer ( xs , serializer , options , typarray ) {
240240 if ( Array . isArray ( xs ) === false )
241241 return xs
242242
243243 if ( ! xs . length )
244244 return '{}'
245245
246246 const first = xs [ 0 ]
247+ // Only _box (1020) has the ';' delimiter for arrays, all other types use the ',' delimiter
248+ const delimiter = typarray === 1020 ? ';' : ','
247249
248250 if ( Array . isArray ( first ) && ! first . type )
249- return '{' + xs . map ( x => arraySerializer ( x , serializer ) ) . join ( ',' ) + '}'
251+ return '{' + xs . map ( x => arraySerializer ( x , serializer , options , typarray ) ) . join ( delimiter ) + '}'
250252
251253 return '{' + xs . map ( x => {
252254 if ( x === undefined ) {
@@ -258,7 +260,7 @@ export const arraySerializer = function arraySerializer(xs, serializer, options)
258260 return x === null
259261 ? 'null'
260262 : '"' + arrayEscape ( serializer ? serializer ( x . type ? x . value : x ) : '' + x ) + '"'
261- } ) . join ( ',' ) + '}'
263+ } ) . join ( delimiter ) + '}'
262264}
263265
264266const arrayParserState = {
@@ -269,13 +271,15 @@ const arrayParserState = {
269271 last : 0
270272}
271273
272- export const arrayParser = function arrayParser ( x , parser ) {
274+ export const arrayParser = function arrayParser ( x , parser , typarray ) {
273275 arrayParserState . i = arrayParserState . last = 0
274- return arrayParserLoop ( arrayParserState , x , parser )
276+ return arrayParserLoop ( arrayParserState , x , parser , typarray )
275277}
276278
277- function arrayParserLoop ( s , x , parser ) {
279+ function arrayParserLoop ( s , x , parser , typarray ) {
278280 const xs = [ ]
281+ // Only _box (1020) has the ';' delimiter for arrays, all other types use the ',' delimiter
282+ const delimiter = typarray === 1020 ? ';' : ','
279283 for ( ; s . i < x . length ; s . i ++ ) {
280284 s . char = x [ s . i ]
281285 if ( s . quoted ) {
@@ -293,13 +297,13 @@ function arrayParserLoop(s, x, parser) {
293297 s . quoted = true
294298 } else if ( s . char === '{' ) {
295299 s . last = ++ s . i
296- xs . push ( arrayParserLoop ( s , x , parser ) )
300+ xs . push ( arrayParserLoop ( s , x , parser , typarray ) )
297301 } else if ( s . char === '}' ) {
298302 s . quoted = false
299303 s . last < s . i && xs . push ( parser ? parser ( x . slice ( s . last , s . i ) ) : x . slice ( s . last , s . i ) )
300304 s . last = s . i + 1
301305 break
302- } else if ( s . char === ',' && s . p !== '}' && s . p !== '"' ) {
306+ } else if ( s . char === delimiter && s . p !== '}' && s . p !== '"' ) {
303307 xs . push ( parser ? parser ( x . slice ( s . last , s . i ) ) : x . slice ( s . last , s . i ) )
304308 s . last = s . i + 1
305309 }
0 commit comments