@@ -683,62 +683,54 @@ var DIF = /*#__PURE__*/(function() {
683
683
return o ;
684
684
}
685
685
686
- var sheet_to_dif = /*#__PURE__*/ ( function ( ) {
687
- var push_field = function pf ( o /*:Array<string>*/ , topic /*:string*/ , v /*:number*/ , n /*:number*/ , s /*:string*/ ) {
688
- o . push ( topic ) ;
689
- o . push ( v + "," + n ) ;
690
- o . push ( '"' + s . replace ( / " / g, '""' ) + '"' ) ;
691
- } ;
692
- var push_value = function po ( o /*:Array<string>*/ , type /*:number*/ , v /*:any*/ , s /*:string*/ ) {
693
- o . push ( type + "," + v ) ;
694
- o . push ( type == 1 ? '"' + s . replace ( / " / g, '""' ) + '"' : s ) ;
695
- } ;
696
- return function sheet_to_dif ( ws /*:Worksheet*/ /*::, opts:?any*/ ) /*:string*/ {
697
- var o /*:Array<string>*/ = [ ] ;
698
- var r = safe_decode_range ( ws [ '!ref' ] ) , cell /*:Cell*/ ;
699
- var dense = Array . isArray ( ws ) ;
700
- push_field ( o , "TABLE" , 0 , 1 , "sheetjs" ) ;
701
- push_field ( o , "VECTORS" , 0 , r . e . r - r . s . r + 1 , "" ) ;
702
- push_field ( o , "TUPLES" , 0 , r . e . c - r . s . c + 1 , "" ) ;
703
- push_field ( o , "DATA" , 0 , 0 , "" ) ;
704
- for ( var R = r . s . r ; R <= r . e . r ; ++ R ) {
705
- push_value ( o , - 1 , 0 , "BOT" ) ;
706
- for ( var C = r . s . c ; C <= r . e . c ; ++ C ) {
707
- var coord = encode_cell ( { r :R , c :C } ) ;
708
- cell = dense ? ( ws [ R ] || [ ] ) [
8000
C ] : ws [ coord ] ;
709
- if ( ! cell ) { push_value ( o , 1 , 0 , "" ) ; continue ; }
710
- switch ( cell . t ) {
711
- case 'n' :
712
- var val = DIF_XL ? cell . w : cell . v ;
713
- if ( ! val && cell . v != null ) val = cell . v ;
714
- if ( val == null ) {
715
- if ( DIF_XL && cell . f && ! cell . F ) push_value ( o , 1 , 0 , "=" + cell . f ) ;
716
- else push_value ( o , 1 , 0 , "" ) ;
717
- }
718
- else push_value ( o , 0 , val , "V" ) ;
719
- break ;
720
- case 'b' :
721
- push_value ( o , 0 , cell . v ? 1 : 0 , cell . v ? "TRUE" : "FALSE" ) ;
722
- break ;
723
- case 's' :
724
- push_value ( o , 1 , 0 , ( ! DIF_XL || isNaN ( cell . v ) ) ? cell . v : '="' + cell . v + '"' ) ;
725
- break ;
726
- case 'd' :
727
- if ( ! cell . w ) cell . w = SSF_format ( cell . z || table_fmt [ 14 ] , datenum ( parseDate (cell . v ) ) ) ;
728
- if ( DIF_XL ) push_value ( o , 0 , cell . w , "V" ) ;
729
- else push_value ( o , 1 , 0 , cell . w ) ;
730
- break ;
731
- default : push_value ( o , 1 , 0 , "" ) ;
732
- }
686
+ function make_value ( v /*:number*/ , s /*:string*/ ) /*:string*/ { return "0," + String ( v ) + "\r\n" + s ; }
687
+ function make_value_str ( s /*:string*/ ) /*:string*/ { return "1,0\r\n\"" + s . replace ( / " / g, '""' ) + '"' ; }
688
+ function sheet_to_dif ( ws /*:Worksheet*/ /*::, opts:?any*/ ) /*:string*/ {
689
+ var _DIF_XL = DIF_XL ;
690
+ var r = safe_decode_range ( ws [ '!ref' ] ) ;
691
+ var dense = Array . isArray ( ws ) ;
692
+ var o /*:Array<string>*/ = [
693
+ "TABLE\r\n0,1\r\n\"sheetjs\"\r\n" ,
694
+ "VECTORS\r\n0," + ( r . e . r - r . s . r + 1 ) + "\r\n\"\"\r\n" ,
695
+ "TUPLES\r\n0," + ( r . e . c - r . s . c + 1 ) + "\r\n\"\"\r\n" ,
696
+ "DATA\r\n0,0\r\n\"\"\r\n"
697
+ ] ;
698
+ for ( var R = r . s . r ; R <= r . e . r ; ++ R ) {
699
+ var p = "-1,0\r\nBOT\r\n" ;
700
+ for ( var C = r . s . c ; C <= r . e . c ; ++ C ) {
701
+ var cell /*:Cell*/ = dense ? ( ws [ R ] && ws [ R ] [ C ] ) : ws [ encode_cell ( { r :R , c :C } ) ] ;
702
+ if ( cell == null ) { p += ( "1,0\r\n\"\"\r\n" ) ; continue ; }
703
+ switch ( cell . t ) {
704
+ case 'n' :
705
+ if ( _DIF_XL ) {
706
+ if ( cell . w != null ) p += ( "0," + cell . w + "\r\nV" ) ;
707
+ else if ( cell . v != null ) p += ( make_value ( cell . v , "V" ) ) ; // TODO: should this call SSF_format?
708
+ else if ( cell . f != null && ! cell . F ) p += ( make_value_str ( "=" + cell . f ) ) ;
709
+ else p += ( "1,0\r\n\"\"" ) ;
710
+ } else {
711
+ if ( cell . v == null ) p += ( "1,0\r\n\"\"" ) ;
712
+ else p += ( make_value ( cell . v , "V" ) ) ;
713
+ }
714
+ break ;
715
+ case 'b' :
716
+ p += ( cell . v ? make_value ( 1 , "TRUE" ) : make_value ( 0 , "FALSE" ) ) ;
717
+ break ;
718
+ case 's' :
719
+ p += ( make_value_str ( ( ! _DIF_XL || isNaN ( + cell . v ) ) ? cell . v : '="' + cell . v + '"' ) ) ;
720
+ break ;
721
+ case 'd' :
722
+ if ( ! cell . w ) cell . w = SSF_format ( cell . z || table_fmt [ 14 ] , datenum ( parseDate ( cell . v ) ) ) ;
723
+ if ( _DIF_XL ) p += ( make_value ( cell . w , "V" ) ) ;
724
+ else p += ( make_value_str ( cell . w ) ) ;
725
+ break ;
726
+ default : p += ( "1,0\r\n\"\"" ) ;
733
727
}
728
+ p += "\r\n" ;
734
729
}
735
- push_value ( o , - 1 , 0 , "EOD" ) ;
736
- var RS = "\r\n" ;
737
- var oo = o . join ( RS ) ;
738
- //while((oo.length & 0x7F) != 0) oo += "\0";
739
- return oo ;
740
- } ;
741
- } ) ( ) ;
730
+ o . push ( p ) ;
731
+ }
732
+ return o . join ( "" ) + "-1,0\r\nEOD" ;
733
+ }
742
734
return {
743
735
to_workbook : dif_to_workbook ,
744
736
to_sheet : dif_to_sheet ,
0 commit comments