@@ -754,6 +754,16 @@ it.describe("fast-csv", function (it) {
754
754
}
755
755
} ) , "A,B\na1,b1\na2,b2" ) ;
756
756
} ) ;
757
+
758
+ it . should ( "support specifying an alternate row delimiter" , function ( ) {
759
+ assert . equal ( csv . writeToString ( [
760
+ { a : "a1" , b : "b1" } ,
761
+ { a : "a2" , b : "b2" }
762
+ ] , {
763
+ headers : true ,
764
+ rowDelimiter : '\r\n'
765
+ } ) , "a,b\r\na1,b1\r\na2,b2" ) ;
766
+ } ) ;
757
767
} ) ;
758
768
759
769
it . describe ( ".write" , function ( it ) {
@@ -824,6 +834,18 @@ it.describe("fast-csv", function (it) {
824
834
}
825
835
} ) . on ( "error" , next ) . pipe ( ws ) ;
826
836
} ) ;
837
+
838
+ it . should ( "support specifying an alternate row delimiter" , function ( next ) {
839
+ var ws = new stream . Writable ( ) ;
840
+ ws . _write = function ( data ) {
841
+ assert . deepEqual ( data . toString ( ) , "a,b\r\na1,b1\r\na2,b2" ) ;
842
+ next ( ) ;
843
+ } ;
844
+ csv . write ( [
845
+ { a : "a1" , b : "b1" } ,
846
+ { a : "a2" , b : "b2" }
847
+ ] , { headers : true , rowDelimiter : '\r\n' } ) . on ( "error" , next ) . pipe ( ws ) ;
848
+ } ) ;
827
849
} ) ;
828
850
829
851
it . describe ( ".writeToPath" , function ( it ) {
@@ -902,6 +924,20 @@ it.describe("fast-csv", function (it) {
902
924
next ( ) ;
903
925
} ) ;
904
926
} ) ;
927
+
928
+ it . should ( "support specifying an alternate row delimiter" , function ( next ) {
929
+ csv
930
+ . writeToPath ( path . resolve ( __dirname , "assets/test.csv" ) , [
931
+ { a : "a1" , b : "b1" } ,
932
+ { a : "a2" , b : "b2" }
933
+ ] , { headers : true , rowDelimiter : '\r\n' } )
934
+ . on ( "error" , next )
935
+ . on ( "finish" , function ( ) {
936
+ assert . equal ( fs . readFileSync ( path . resolve ( __dirname , "assets/test.csv" ) ) . toString ( ) , "a,b\r\na1,b1\r\na2,b2" ) ;
937
+ fs . unlinkSync ( path . resolve ( __dirname , "assets/test.csv" ) ) ;
938
+ next ( ) ;
939
+ } ) ;
940
+ } ) ;
905
941
} ) ;
906
942
907
943
it . describe ( ".createWriteStream" , function ( it ) {
@@ -976,49 +1012,72 @@ it.describe("fast-csv", function (it) {
976
1012
} ) ;
977
1013
stream . write ( null ) ;
978
1014
} ) ;
979
- } ) ;
980
1015
981
- it . describe ( "piping from parser to formatter" , function ( it ) {
982
-
983
- it . should ( "allow piping from a parser to a formatter" , function ( next ) {
1016
+ it . should ( "support specifying an alternate row delimiter" , function ( next ) {
984
1017
var writable = fs . createWriteStream ( path . resolve ( __dirname , "assets/test.csv" ) , { encoding : "utf8" } ) ;
985
- csv
986
- . fromPath ( path . resolve ( __dirname , "./assets/test22.csv" ) , { headers : true , objectMode : true } )
987
- . on ( "error" , next )
988
- . pipe ( csv . createWriteStream ( { headers : true } ) )
989
- . on ( "error" , next )
990
- . pipe ( writable )
1018
+ var stream = csv
1019
+ . createWriteStream ( { headers : true , rowDelimiter : '\r\n' } )
991
1020
. on ( "error" , next ) ;
992
-
993
1021
writable
994
1022
. on ( "finish" , function ( ) {
995
- assert . equal ( fs . readFileSync ( path . resolve ( __dirname , "assets/test.csv" ) ) . toString ( ) , "a,b\na1,b1\na2,b2" ) ;
1023
+ assert . equal ( fs . readFileSync ( path . resolve ( __dirname , "assets/test.csv" ) ) . toString ( ) , "a,b\r\ na1,b1\r \na2,b2" ) ;
996
1024
fs . unlinkSync ( path . resolve ( __dirname , "assets/test.csv" ) ) ;
997
1025
next ( ) ;
998
1026
} ) ;
1027
+ stream . pipe ( writable ) ;
1028
+ var vals = [
1029
+ { a : "a1" , b : "b1" } ,
1030
+ { a : "a2" , b : "b2" }
1031
+ ] ;
1032
+ vals . forEach ( function ( item ) {
1033
+ stream . write ( item ) ;
1034
+ } ) ;
1035
+ stream . write ( null ) ;
999
1036
} ) ;
1000
1037
1001
- it . should ( "preserve transforms" , function ( next ) {
1002
- var writable = fs . createWriteStream ( path . resolve ( __dirname , "assets/test.csv" ) , { encoding : "utf8" } ) ;
1003
- csv
1004
- . fromPath ( path . resolve ( __dirname , "./assets/test22.csv" ) , { headers : true } )
1005
- . transform ( function ( obj ) {
1006
- obj . a = obj . a + "-parsed" ;
1007
- obj . b = obj . b + "-parsed" ;
1008
- return obj ;
1009
- } )
1010
- . on ( "error" , next )
1011
- . pipe ( csv . createWriteStream ( { headers : true } ) )
1012
- . on ( "error" , next )
1013
- . pipe ( writable )
1014
- . on ( "error" , next ) ;
1015
1038
1016
- writable
1017
- . on ( "finish" , function ( ) {
1018
- assert . equal ( fs . readFileSync ( path . resolve ( __dirname , "assets/test.csv" ) ) . toString ( ) , "a,b\na1-parsed,b1-parsed\na2-parsed,b2-parsed" ) ;
1019
- fs . unlinkSync ( path . resolve ( __dirname , "assets/test.csv" ) ) ;
1020
- next ( ) ;
1021
- } ) ;
1039
+ it . describe ( "piping from parser to formatter" , function ( it ) {
1040
+
1041
+ it . should ( "allow piping from a parser to a formatter" , function ( next ) {
1042
+ var writable = fs . createWriteStream ( path . resolve ( __dirname , "assets/test.csv" ) , { encoding : "utf8" } ) ;
1043
+ csv
1044
+ . fromPath ( path . resolve ( __dirname , "./assets/test22.csv" ) , { headers : true , objectMode : true } )
1045
+ . on ( "error" , next )
1046
+ . pipe ( csv . createWriteStream ( { headers : true } ) )
1047
+ . on ( "error" , next )
1048
+ . pipe ( writable )
1049
+ . on ( "error" , next ) ;
1050
+
1051
+ writable
1052
+ . on ( "finish" , function ( ) {
1053
+ assert . equal ( fs . readFileSync ( path . resolve ( __dirname , "assets/test.csv" ) ) . toString ( ) , "a,b\na1,b1\na2,b2" ) ;
1054
+ fs . unlinkSync ( path . resolve ( __dirname , "assets/test.csv" ) ) ;
1055
+ next ( ) ;
1056
+ } ) ;
1057
+ } ) ;
1058
+
1059
+ it . should ( "preserve transforms" , function ( next ) {
1060
+ var writable = fs . createWriteStream ( path . resolve ( __dirname , "assets/test.csv" ) , { encoding : "utf8" } ) ;
1061
+ csv
1062
+ . fromPath ( path . resolve ( __dirname , "./assets/test22.csv" ) , { headers : true } )
1063
+ . transform ( function ( obj ) {
1064
+ obj . a = obj . a + "-parsed" ;
1065
+ obj . b = obj . b + "-parsed" ;
1066
+ return obj ;
1067
+ } )
1068
+ . on ( "error" , next )
1069
+ . pipe ( csv . createWriteStream ( { headers : true } ) )
1070
+ . on ( "error" , next )
1071
+ . pipe ( writable )
1072
+ . on ( "error" , next ) ;
1073
+
1074
+ writable
1075
+ . on ( "finish" , function ( ) {
1076
+ assert . equal ( fs . readFileSync ( path . resolve ( __dirname , "assets/test.csv" ) ) . toString ( ) , "a,b\na1-parsed,b1-parsed\na2-parsed,b2-parsed" ) ;
1077
+ fs . unlinkSync ( path . resolve ( __dirname , "assets/test.csv" ) ) ;
1078
+ next ( ) ;
1079
+ } ) ;
1080
+ } ) ;
1022
1081
} ) ;
1023
1082
} ) ;
1024
- } ) ;
1083
+ } ) ;
0 commit comments