File tree Expand file tree Collapse file tree 1 file changed +14
-7
lines changed Expand file tree Collapse file tree 1 file changed +14
-7
lines changed Original file line number Diff line number Diff line change 312312 }
313313 for ( var k = 0 ; k < value . len ; ++ k ) arr [ k ] = dflt ;
314314
315- if ( value . v !== undefined ) {
316- var p = value . p || 0 ;
317- if ( typeof value !== 'object' )
318- arr [ p ] = value . v ;
319- else
320- for ( var k = 0 ; k < value . v . length ; ++ k )
321- arr [ p ++ ] = value . v [ k ] ;
315+ var nkey = 2 , p = 0 ;
316+ while ( nkey < len ) {
317+ if ( ks [ nkey ] [ 0 ] == "p" ) p = value [ ks [ nkey ++ ] ] ; // position
318+ if ( ks [ nkey ] [ 0 ] !== 'v' ) throw new Error ( 'Unexpected member ' + ks [ nkey ] + ' in array decoding' ) ;
319+ var v = value [ ks [ nkey ++ ] ] ; // value
320+ if ( typeof v === 'object' ) {
321+ for ( var k = 0 ; k < v . length ; ++ k ) arr [ p ++ ] = v [ k ] ;
322+ } else {
323+ arr [ p ] = v ;
324+ if ( ( nkey < len ) && ( ks [ nkey ] [ 0 ] == 'n' ) ) {
325+ var cnt = value [ ks [ nkey ++ ] ] ; // counter
326+ while ( -- cnt ) arr [ ++ p ] = v ;
327+ }
328+ }
322329 }
323330
324331 return arr ;
You can’t perform that action at this time.
0 commit comments