fastcsv 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/ext/fastcsv/fastcsv.c +188 -169
- data/ext/fastcsv/fastcsv.rl +12 -2
- data/fastcsv.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 580efd5d55a6c7af840eb1b8a2d4a4b004744791
|
4
|
+
data.tar.gz: 4b35d9194465cda927956f1dcc4d19c8857c1ebf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70393b8705405bb70d2571aa63b7ac3925f2e194bfde800075a4ff370416c4d2835de0f6f4800925a9927cbed40d4a6f5773f099561242d5584e3e5341daef71
|
7
|
+
data.tar.gz: 8c3897c6523b5c602ea141e67eabff1336d1cf759ce15ae4fe0093e7a0aa72ffdc5a905179b13e04161730983e68a8c3061bc01ba6d1c1b6f31f2981e82977b3
|
data/README.md
CHANGED
@@ -40,9 +40,9 @@ end
|
|
40
40
|
|
41
41
|
FastCSV can be used as a drop-in replacement for [CSV](http://ruby-doc.org/stdlib-2.1.1/libdoc/csv/rdoc/CSV.html) (replace `CSV` with `FastCSV`) except:
|
42
42
|
|
43
|
-
* The `:row_sep` option is ignored. The default `:auto` is implemented
|
44
|
-
* The `:col_sep` option must be a single-byte string, like the default
|
45
|
-
* If FastCSV raises an error, you can't continue reading
|
43
|
+
* The `:row_sep` option is ignored. The default `:auto` is implemented [#9](https://github.com/jpmckinney/fastcsv/issues/9).
|
44
|
+
* The `:col_sep` option must be a single-byte string, like the default `,` [#8](https://github.com/jpmckinney/fastcsv/issues/8). [Python](https://docs.python.org/3/library/csv.html#dialects-and-formatting-parameters) and [PHP](http://php.net/fgetcsv) support single-byte delimiters only, as do the major libraries in [JavaScript](http://papaparse.com/docs), [Java](http://commons.apache.org/proper/commons-csv/apidocs/index.html), [C](https://github.com/robertpostill/libcsv/blob/master/FAQ), [Objective-C](https://github.com/davedelong/CHCSVParser#parsing) and [Perl](http://search.cpan.org/~makamaka/Text-CSV-1.32/lib/Text/CSV.pm). A major [Node](https://github.com/wdavidw/node-csv-parse/issues/26) library supports multi-byte delimiters.
|
45
|
+
* If FastCSV raises an error, you can't continue reading [#3](https://github.com/jpmckinney/fastcsv/issues/3). Its error messages don't perfectly match those of CSV.
|
46
46
|
|
47
47
|
A few minor caveats:
|
48
48
|
|
data/ext/fastcsv/fastcsv.c
CHANGED
@@ -38,7 +38,7 @@ typedef struct {
|
|
38
38
|
} Data;
|
39
39
|
|
40
40
|
|
41
|
-
#line
|
41
|
+
#line 172 "ext/fastcsv/fastcsv.rl"
|
42
42
|
|
43
43
|
|
44
44
|
|
@@ -50,7 +50,7 @@ static const int raw_parse_error = 0;
|
|
50
50
|
static const int raw_parse_en_main = 5;
|
51
51
|
|
52
52
|
|
53
|
-
#line
|
53
|
+
#line 175 "ext/fastcsv/fastcsv.rl"
|
54
54
|
|
55
55
|
// 16 kB
|
56
56
|
#define BUFSIZE 16384
|
@@ -270,7 +270,7 @@ static VALUE raw_parse(int argc, VALUE *argv, VALUE self) {
|
|
270
270
|
act = 0;
|
271
271
|
}
|
272
272
|
|
273
|
-
#line
|
273
|
+
#line 386 "ext/fastcsv/fastcsv.rl"
|
274
274
|
|
275
275
|
while (!done) {
|
276
276
|
VALUE str;
|
@@ -363,7 +363,7 @@ tr5:
|
|
363
363
|
ENCODE;
|
364
364
|
}
|
365
365
|
}
|
366
|
-
#line
|
366
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
367
367
|
{
|
368
368
|
if (d->start == 0 || p == d->start) { // same as new_row
|
369
369
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -380,7 +380,7 @@ tr5:
|
|
380
380
|
rb_yield(row);
|
381
381
|
}
|
382
382
|
}
|
383
|
-
#line
|
383
|
+
#line 170 "ext/fastcsv/fastcsv.rl"
|
384
384
|
{te = p+1;}
|
385
385
|
goto st5;
|
386
386
|
tr6:
|
@@ -400,7 +400,7 @@ tr6:
|
|
400
400
|
rb_ary_push(row, field);
|
401
401
|
field = Qnil;
|
402
402
|
}
|
403
|
-
#line
|
403
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
404
404
|
{te = p+1;}
|
405
405
|
goto st5;
|
406
406
|
tr7:
|
@@ -420,9 +420,9 @@ tr7:
|
|
420
420
|
rb_ary_push(row, field);
|
421
421
|
field = Qnil;
|
422
422
|
}
|
423
|
-
#line
|
423
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
424
424
|
{te = p+1;}
|
425
|
-
#line
|
425
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
426
426
|
{
|
427
427
|
if (d->start == 0 || p == d->start) { // same as new_row
|
428
428
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -441,7 +441,7 @@ tr7:
|
|
441
441
|
}
|
442
442
|
goto st5;
|
443
443
|
tr13:
|
444
|
-
#line
|
444
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
445
445
|
{
|
446
446
|
if (d->start == 0 || p == d->start) { // same as new_row
|
447
447
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -458,7 +458,7 @@ tr13:
|
|
458
458
|
rb_yield(row);
|
459
459
|
}
|
460
460
|
}
|
461
|
-
#line
|
461
|
+
#line 170 "ext/fastcsv/fastcsv.rl"
|
462
462
|
{te = p+1;}
|
463
463
|
goto st5;
|
464
464
|
tr19:
|
@@ -467,7 +467,7 @@ tr19:
|
|
467
467
|
rb_ary_push(row, field);
|
468
468
|
field = Qnil;
|
469
469
|
}
|
470
|
-
#line
|
470
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
471
471
|
{te = p+1;}
|
472
472
|
goto st5;
|
473
473
|
tr20:
|
@@ -476,9 +476,9 @@ tr20:
|
|
476
476
|
rb_ary_push(row, field);
|
477
477
|
field = Qnil;
|
478
478
|
}
|
479
|
-
#line
|
479
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
480
480
|
{te = p+1;}
|
481
|
-
#line
|
481
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
482
482
|
{
|
483
483
|
if (d->start == 0 || p == d->start) { // same as new_row
|
484
484
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -497,7 +497,7 @@ tr20:
|
|
497
497
|
}
|
498
498
|
goto st5;
|
499
499
|
tr42:
|
500
|
-
#line
|
500
|
+
#line 170 "ext/fastcsv/fastcsv.rl"
|
501
501
|
{te = p;p--;}
|
502
502
|
goto st5;
|
503
503
|
tr43:
|
@@ -509,7 +509,7 @@ tr43:
|
|
509
509
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
510
510
|
FREE;
|
511
511
|
|
512
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
512
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
513
513
|
}
|
514
514
|
}
|
515
515
|
else {
|
@@ -517,6 +517,8 @@ tr43:
|
|
517
517
|
row_sep = ALLOC_N(char, len_row_sep);
|
518
518
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
519
519
|
}
|
520
|
+
|
521
|
+
curline++;
|
520
522
|
}
|
521
523
|
#line 1 "NONE"
|
522
524
|
{ switch( act ) {
|
@@ -538,7 +540,7 @@ tr50:
|
|
538
540
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
539
541
|
FREE;
|
540
542
|
|
541
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
543
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
542
544
|
}
|
543
545
|
}
|
544
546
|
else {
|
@@ -546,8 +548,10 @@ tr50:
|
|
546
548
|
row_sep = ALLOC_N(char, len_row_sep);
|
547
549
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
548
550
|
}
|
551
|
+
|
552
|
+
curline++;
|
549
553
|
}
|
550
|
-
#line
|
554
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
551
555
|
{
|
552
556
|
if (d->start == 0 || p == d->start) { // same as new_row
|
553
557
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -564,7 +568,7 @@ tr50:
|
|
564
568
|
rb_yield(row);
|
565
569
|
}
|
566
570
|
}
|
567
|
-
#line
|
571
|
+
#line 170 "ext/fastcsv/fastcsv.rl"
|
568
572
|
{te = p+1;}
|
569
573
|
goto st5;
|
570
574
|
tr56:
|
@@ -573,7 +577,7 @@ tr56:
|
|
573
577
|
rb_ary_push(row, field);
|
574
578
|
field = Qnil;
|
575
579
|
}
|
576
|
-
#line
|
580
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
577
581
|
{te = p+1;}
|
578
582
|
#line 100 "ext/fastcsv/fastcsv.rl"
|
579
583
|
{
|
@@ -583,7 +587,7 @@ tr56:
|
|
583
587
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
584
588
|
FREE;
|
585
589
|
|
586
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
590
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
587
591
|
}
|
588
592
|
}
|
589
593
|
else {
|
@@ -591,8 +595,10 @@ tr56:
|
|
591
595
|
row_sep = ALLOC_N(char, len_row_sep);
|
592
596
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
593
597
|
}
|
598
|
+
|
599
|
+
curline++;
|
594
600
|
}
|
595
|
-
#line
|
601
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
596
602
|
{
|
597
603
|
if (d->start == 0 || p == d->start) { // same as new_row
|
598
604
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -620,14 +626,14 @@ st5:
|
|
620
626
|
case 5:
|
621
627
|
#line 1 "NONE"
|
622
628
|
{ts = p;}
|
623
|
-
#line
|
629
|
+
#line 630 "ext/fastcsv/fastcsv.c"
|
624
630
|
_widec = (*p);
|
625
631
|
_widec = (short)(1152 + ((*p) - -128));
|
626
632
|
if (
|
627
|
-
#line
|
633
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
628
634
|
(*p) == quote_char ) _widec += 256;
|
629
635
|
if (
|
630
|
-
#line
|
636
|
+
#line 157 "ext/fastcsv/fastcsv.rl"
|
631
637
|
(*p) == col_sep ) _widec += 512;
|
632
638
|
switch( _widec ) {
|
633
639
|
case 1280: goto tr33;
|
@@ -665,10 +671,10 @@ case 1:
|
|
665
671
|
_widec = (*p);
|
666
672
|
_widec = (short)(1152 + ((*p) - -128));
|
667
673
|
if (
|
668
|
-
#line
|
674
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
669
675
|
(*p) == quote_char ) _widec += 256;
|
670
676
|
if (
|
671
|
-
#line
|
677
|
+
#line 157 "ext/fastcsv/fastcsv.rl"
|
672
678
|
(*p) == col_sep ) _widec += 512;
|
673
679
|
switch( _widec ) {
|
674
680
|
case 1280: goto tr2;
|
@@ -704,7 +710,7 @@ tr2:
|
|
704
710
|
ENCODE;
|
705
711
|
}
|
706
712
|
}
|
707
|
-
#line
|
713
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
708
714
|
{
|
709
715
|
if (d->start == 0 || p == d->start) { // same as new_row
|
710
716
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -721,21 +727,21 @@ tr2:
|
|
721
727
|
rb_yield(row);
|
722
728
|
}
|
723
729
|
}
|
724
|
-
#line
|
730
|
+
#line 170 "ext/fastcsv/fastcsv.rl"
|
725
731
|
{act = 3;}
|
726
732
|
goto st6;
|
727
733
|
st6:
|
728
734
|
if ( ++p == pe )
|
729
735
|
goto _test_eof6;
|
730
736
|
case 6:
|
731
|
-
#line
|
737
|
+
#line 738 "ext/fastcsv/fastcsv.c"
|
732
738
|
_widec = (*p);
|
733
739
|
_widec = (short)(1152 + ((*p) - -128));
|
734
740
|
if (
|
735
|
-
#line
|
741
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
736
742
|
(*p) == quote_char ) _widec += 256;
|
737
743
|
if (
|
738
|
-
#line
|
744
|
+
#line 157 "ext/fastcsv/fastcsv.rl"
|
739
745
|
(*p) == col_sep ) _widec += 512;
|
740
746
|
switch( _widec ) {
|
741
747
|
case 1280: goto tr2;
|
@@ -771,10 +777,9 @@ tr3:
|
|
771
777
|
ENCODE;
|
772
778
|
}
|
773
779
|
}
|
774
|
-
#line
|
780
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
775
781
|
{
|
776
782
|
mark_row_sep = p;
|
777
|
-
curline++;
|
778
783
|
|
779
784
|
if (d->start == 0 || p == d->start) {
|
780
785
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -791,7 +796,7 @@ tr3:
|
|
791
796
|
rb_yield(row);
|
792
797
|
row = rb_ary_new();
|
793
798
|
}
|
794
|
-
#line
|
799
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
795
800
|
{act = 2;}
|
796
801
|
goto st7;
|
797
802
|
tr8:
|
@@ -813,12 +818,11 @@ tr8:
|
|
813
818
|
rb_ary_push(row, field);
|
814
819
|
field = Qnil;
|
815
820
|
}
|
816
|
-
#line
|
821
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
817
822
|
{act = 1;}
|
818
|
-
#line
|
823
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
819
824
|
{
|
820
825
|
mark_row_sep = p;
|
821
|
-
curline++;
|
822
826
|
|
823
827
|
if (d->start == 0 || p == d->start) {
|
824
828
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -839,10 +843,9 @@ tr8:
|
|
839
843
|
tr14:
|
840
844
|
#line 1 "NONE"
|
841
845
|
{te = p+1;}
|
842
|
-
#line
|
846
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
843
847
|
{
|
844
848
|
mark_row_sep = p;
|
845
|
-
curline++;
|
846
849
|
|
847
850
|
if (d->start == 0 || p == d->start) {
|
848
851
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -859,7 +862,7 @@ tr14:
|
|
859
862
|
rb_yield(row);
|
860
863
|
row = rb_ary_new();
|
861
864
|
}
|
862
|
-
#line
|
865
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
863
866
|
{act = 2;}
|
864
867
|
goto st7;
|
865
868
|
tr21:
|
@@ -870,12 +873,11 @@ tr21:
|
|
870
873
|
rb_ary_push(row, field);
|
871
874
|
field = Qnil;
|
872
875
|
}
|
873
|
-
#line
|
876
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
874
877
|
{act = 1;}
|
875
|
-
#line
|
878
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
876
879
|
{
|
877
880
|
mark_row_sep = p;
|
878
|
-
curline++;
|
879
881
|
|
880
882
|
if (d->start == 0 || p == d->start) {
|
881
883
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -896,14 +898,14 @@ tr21:
|
|
896
898
|
tr44:
|
897
899
|
#line 1 "NONE"
|
898
900
|
{te = p+1;}
|
899
|
-
#line
|
901
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
900
902
|
{act = 2;}
|
901
903
|
goto st7;
|
902
904
|
st7:
|
903
905
|
if ( ++p == pe )
|
904
906
|
goto _test_eof7;
|
905
907
|
case 7:
|
906
|
-
#line
|
908
|
+
#line 909 "ext/fastcsv/fastcsv.c"
|
907
909
|
goto tr43;
|
908
910
|
tr4:
|
909
911
|
#line 1 "NONE"
|
@@ -919,10 +921,9 @@ tr4:
|
|
919
921
|
ENCODE;
|
920
922
|
}
|
921
923
|
}
|
922
|
-
#line
|
924
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
923
925
|
{
|
924
926
|
mark_row_sep = p;
|
925
|
-
curline++;
|
926
927
|
|
927
928
|
if (d->start == 0 || p == d->start) {
|
928
929
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -939,7 +940,7 @@ tr4:
|
|
939
940
|
rb_yield(row);
|
940
941
|
row = rb_ary_new();
|
941
942
|
}
|
942
|
-
#line
|
943
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
943
944
|
{act = 2;}
|
944
945
|
goto st8;
|
945
946
|
tr9:
|
@@ -961,12 +962,11 @@ tr9:
|
|
961
962
|
rb_ary_push(row, field);
|
962
963
|
field = Qnil;
|
963
964
|
}
|
964
|
-
#line
|
965
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
965
966
|
{act = 1;}
|
966
|
-
#line
|
967
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
967
968
|
{
|
968
969
|
mark_row_sep = p;
|
969
|
-
curline++;
|
970
970
|
|
971
971
|
if (d->start == 0 || p == d->start) {
|
972
972
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -987,10 +987,9 @@ tr9:
|
|
987
987
|
tr15:
|
988
988
|
#line 1 "NONE"
|
989
989
|
{te = p+1;}
|
990
|
-
#line
|
990
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
991
991
|
{
|
992
992
|
mark_row_sep = p;
|
993
|
-
curline++;
|
994
993
|
|
995
994
|
if (d->start == 0 || p == d->start) {
|
996
995
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1007,7 +1006,7 @@ tr15:
|
|
1007
1006
|
rb_yield(row);
|
1008
1007
|
row = rb_ary_new();
|
1009
1008
|
}
|
1010
|
-
#line
|
1009
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
1011
1010
|
{act = 2;}
|
1012
1011
|
goto st8;
|
1013
1012
|
tr22:
|
@@ -1018,12 +1017,11 @@ tr22:
|
|
1018
1017
|
rb_ary_push(row, field);
|
1019
1018
|
field = Qnil;
|
1020
1019
|
}
|
1021
|
-
#line
|
1020
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
1022
1021
|
{act = 1;}
|
1023
|
-
#line
|
1022
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
1024
1023
|
{
|
1025
1024
|
mark_row_sep = p;
|
1026
|
-
curline++;
|
1027
1025
|
|
1028
1026
|
if (d->start == 0 || p == d->start) {
|
1029
1027
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1045,7 +1043,7 @@ st8:
|
|
1045
1043
|
if ( ++p == pe )
|
1046
1044
|
goto _test_eof8;
|
1047
1045
|
case 8:
|
1048
|
-
#line
|
1046
|
+
#line 1047 "ext/fastcsv/fastcsv.c"
|
1049
1047
|
if ( (*p) == 10 )
|
1050
1048
|
goto tr44;
|
1051
1049
|
goto tr43;
|
@@ -1063,7 +1061,7 @@ tr33:
|
|
1063
1061
|
ENCODE;
|
1064
1062
|
}
|
1065
1063
|
}
|
1066
|
-
#line
|
1064
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
1067
1065
|
{
|
1068
1066
|
if (d->start == 0 || p == d->start) { // same as new_row
|
1069
1067
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1080,21 +1078,21 @@ tr33:
|
|
1080
1078
|
rb_yield(row);
|
1081
1079
|
}
|
1082
1080
|
}
|
1083
|
-
#line
|
1081
|
+
#line 170 "ext/fastcsv/fastcsv.rl"
|
1084
1082
|
{act = 3;}
|
1085
1083
|
goto st9;
|
1086
1084
|
st9:
|
1087
1085
|
if ( ++p == pe )
|
1088
1086
|
goto _test_eof9;
|
1089
1087
|
case 9:
|
1090
|
-
#line
|
1088
|
+
#line 1089 "ext/fastcsv/fastcsv.c"
|
1091
1089
|
_widec = (*p);
|
1092
1090
|
_widec = (short)(1152 + ((*p) - -128));
|
1093
1091
|
if (
|
1094
|
-
#line
|
1092
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
1095
1093
|
(*p) == quote_char ) _widec += 256;
|
1096
1094
|
if (
|
1097
|
-
#line
|
1095
|
+
#line 157 "ext/fastcsv/fastcsv.rl"
|
1098
1096
|
(*p) == col_sep ) _widec += 512;
|
1099
1097
|
if ( _widec < 1291 ) {
|
1100
1098
|
if ( 1152 <= _widec && _widec <= 1289 )
|
@@ -1120,7 +1118,7 @@ tr45:
|
|
1120
1118
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
1121
1119
|
FREE;
|
1122
1120
|
|
1123
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
1121
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
1124
1122
|
}
|
1125
1123
|
}
|
1126
1124
|
else {
|
@@ -1128,6 +1126,8 @@ tr45:
|
|
1128
1126
|
row_sep = ALLOC_N(char, len_row_sep);
|
1129
1127
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
1130
1128
|
}
|
1129
|
+
|
1130
|
+
curline++;
|
1131
1131
|
}
|
1132
1132
|
goto st2;
|
1133
1133
|
st2:
|
@@ -1138,7 +1138,7 @@ case 2:
|
|
1138
1138
|
_widec = (*p);
|
1139
1139
|
_widec = (short)(128 + ((*p) - -128));
|
1140
1140
|
if (
|
1141
|
-
#line
|
1141
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
1142
1142
|
(*p) == quote_char ) _widec += 256;
|
1143
1143
|
switch( _widec ) {
|
1144
1144
|
case 522: goto tr12;
|
@@ -1242,7 +1242,7 @@ tr46:
|
|
1242
1242
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
1243
1243
|
FREE;
|
1244
1244
|
|
1245
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
1245
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
1246
1246
|
}
|
1247
1247
|
}
|
1248
1248
|
else {
|
@@ -1250,20 +1250,22 @@ tr46:
|
|
1250
1250
|
row_sep = ALLOC_N(char, len_row_sep);
|
1251
1251
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
1252
1252
|
}
|
1253
|
+
|
1254
|
+
curline++;
|
1253
1255
|
}
|
1254
1256
|
goto st3;
|
1255
1257
|
st3:
|
1256
1258
|
if ( ++p == pe )
|
1257
1259
|
goto _test_eof3;
|
1258
1260
|
case 3:
|
1259
|
-
#line
|
1261
|
+
#line 1262 "ext/fastcsv/fastcsv.c"
|
1260
1262
|
_widec = (*p);
|
1261
1263
|
_widec = (short)(1152 + ((*p) - -128));
|
1262
1264
|
if (
|
1263
|
-
#line
|
1265
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
1264
1266
|
(*p) == quote_char ) _widec += 256;
|
1265
1267
|
if (
|
1266
|
-
#line
|
1268
|
+
#line 157 "ext/fastcsv/fastcsv.rl"
|
1267
1269
|
(*p) == col_sep ) _widec += 512;
|
1268
1270
|
switch( _widec ) {
|
1269
1271
|
case 1280: goto tr13;
|
@@ -1291,7 +1293,7 @@ case 3:
|
|
1291
1293
|
tr16:
|
1292
1294
|
#line 1 "NONE"
|
1293
1295
|
{te = p+1;}
|
1294
|
-
#line
|
1296
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
1295
1297
|
{
|
1296
1298
|
if (d->start == 0 || p == d->start) { // same as new_row
|
1297
1299
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1308,7 +1310,7 @@ tr16:
|
|
1308
1310
|
rb_yield(row);
|
1309
1311
|
}
|
1310
1312
|
}
|
1311
|
-
#line
|
1313
|
+
#line 170 "ext/fastcsv/fastcsv.rl"
|
1312
1314
|
{act = 3;}
|
1313
1315
|
goto st10;
|
1314
1316
|
tr23:
|
@@ -1319,7 +1321,7 @@ tr23:
|
|
1319
1321
|
rb_ary_push(row, field);
|
1320
1322
|
field = Qnil;
|
1321
1323
|
}
|
1322
|
-
#line
|
1324
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
1323
1325
|
{act = 1;}
|
1324
1326
|
goto st10;
|
1325
1327
|
tr24:
|
@@ -1330,9 +1332,9 @@ tr24:
|
|
1330
1332
|
rb_ary_push(row, field);
|
1331
1333
|
field = Qnil;
|
1332
1334
|
}
|
1333
|
-
#line
|
1335
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
1334
1336
|
{act = 1;}
|
1335
|
-
#line
|
1337
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
1336
1338
|
{
|
1337
1339
|
if (d->start == 0 || p == d->start) { // same as new_row
|
1338
1340
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1368,7 +1370,7 @@ tr35:
|
|
1368
1370
|
ENCODE;
|
1369
1371
|
}
|
1370
1372
|
}
|
1371
|
-
#line
|
1373
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
1372
1374
|
{
|
1373
1375
|
if (d->start == 0 || p == d->start) { // same as new_row
|
1374
1376
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1385,7 +1387,7 @@ tr35:
|
|
1385
1387
|
rb_yield(row);
|
1386
1388
|
}
|
1387
1389
|
}
|
1388
|
-
#line
|
1390
|
+
#line 170 "ext/fastcsv/fastcsv.rl"
|
1389
1391
|
{act = 3;}
|
1390
1392
|
goto st10;
|
1391
1393
|
tr38:
|
@@ -1411,7 +1413,7 @@ tr38:
|
|
1411
1413
|
rb_ary_push(row, field);
|
1412
1414
|
field = Qnil;
|
1413
1415
|
}
|
1414
|
-
#line
|
1416
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
1415
1417
|
{act = 1;}
|
1416
1418
|
goto st10;
|
1417
1419
|
tr39:
|
@@ -1437,9 +1439,9 @@ tr39:
|
|
1437
1439
|
rb_ary_push(row, field);
|
1438
1440
|
field = Qnil;
|
1439
1441
|
}
|
1440
|
-
#line
|
1442
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
1441
1443
|
{act = 1;}
|
1442
|
-
#line
|
1444
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
1443
1445
|
{
|
1444
1446
|
if (d->start == 0 || p == d->start) { // same as new_row
|
1445
1447
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1465,7 +1467,7 @@ tr55:
|
|
1465
1467
|
rb_ary_push(row, field);
|
1466
1468
|
field = Qnil;
|
1467
1469
|
}
|
1468
|
-
#line
|
1470
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
1469
1471
|
{act = 1;}
|
1470
1472
|
#line 100 "ext/fastcsv/fastcsv.rl"
|
1471
1473
|
{
|
@@ -1475,7 +1477,7 @@ tr55:
|
|
1475
1477
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
1476
1478
|
FREE;
|
1477
1479
|
|
1478
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
1480
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
1479
1481
|
}
|
1480
1482
|
}
|
1481
1483
|
else {
|
@@ -1483,17 +1485,19 @@ tr55:
|
|
1483
1485
|
row_sep = ALLOC_N(char, len_row_sep);
|
1484
1486
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
1485
1487
|
}
|
1488
|
+
|
1489
|
+
curline++;
|
1486
1490
|
}
|
1487
1491
|
goto st10;
|
1488
1492
|
st10:
|
1489
1493
|
if ( ++p == pe )
|
1490
1494
|
goto _test_eof10;
|
1491
1495
|
case 10:
|
1492
|
-
#line
|
1496
|
+
#line 1497 "ext/fastcsv/fastcsv.c"
|
1493
1497
|
_widec = (*p);
|
1494
1498
|
_widec = (short)(128 + ((*p) - -128));
|
1495
1499
|
if (
|
1496
|
-
#line
|
1500
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
1497
1501
|
(*p) == quote_char ) _widec += 256;
|
1498
1502
|
switch( _widec ) {
|
1499
1503
|
case 522: goto tr12;
|
@@ -1597,7 +1601,7 @@ tr47:
|
|
1597
1601
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
1598
1602
|
FREE;
|
1599
1603
|
|
1600
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
1604
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
1601
1605
|
}
|
1602
1606
|
}
|
1603
1607
|
else {
|
@@ -1605,20 +1609,22 @@ tr47:
|
|
1605
1609
|
row_sep = ALLOC_N(char, len_row_sep);
|
1606
1610
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
1607
1611
|
}
|
1612
|
+
|
1613
|
+
curline++;
|
1608
1614
|
}
|
1609
1615
|
goto st4;
|
1610
1616
|
st4:
|
1611
1617
|
if ( ++p == pe )
|
1612
1618
|
goto _test_eof4;
|
1613
1619
|
case 4:
|
1614
|
-
#line
|
1620
|
+
#line 1621 "ext/fastcsv/fastcsv.c"
|
1615
1621
|
_widec = (*p);
|
1616
1622
|
_widec = (short)(1152 + ((*p) - -128));
|
1617
1623
|
if (
|
1618
|
-
#line
|
1624
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
1619
1625
|
(*p) == quote_char ) _widec += 256;
|
1620
1626
|
if (
|
1621
|
-
#line
|
1627
|
+
#line 157 "ext/fastcsv/fastcsv.rl"
|
1622
1628
|
(*p) == col_sep ) _widec += 512;
|
1623
1629
|
switch( _widec ) {
|
1624
1630
|
case 1280: goto tr13;
|
@@ -1649,10 +1655,9 @@ case 4:
|
|
1649
1655
|
tr17:
|
1650
1656
|
#line 1 "NONE"
|
1651
1657
|
{te = p+1;}
|
1652
|
-
#line
|
1658
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
1653
1659
|
{
|
1654
1660
|
mark_row_sep = p;
|
1655
|
-
curline++;
|
1656
1661
|
|
1657
1662
|
if (d->start == 0 || p == d->start) {
|
1658
1663
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1669,7 +1674,7 @@ tr17:
|
|
1669
1674
|
rb_yield(row);
|
1670
1675
|
row = rb_ary_new();
|
1671
1676
|
}
|
1672
|
-
#line
|
1677
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
1673
1678
|
{act = 2;}
|
1674
1679
|
goto st11;
|
1675
1680
|
tr25:
|
@@ -1680,12 +1685,11 @@ tr25:
|
|
1680
1685
|
rb_ary_push(row, field);
|
1681
1686
|
field = Qnil;
|
1682
1687
|
}
|
1683
|
-
#line
|
1688
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
1684
1689
|
{act = 1;}
|
1685
|
-
#line
|
1690
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
1686
1691
|
{
|
1687
1692
|
mark_row_sep = p;
|
1688
|
-
curline++;
|
1689
1693
|
|
1690
1694
|
if (d->start == 0 || p == d->start) {
|
1691
1695
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1721,10 +1725,9 @@ tr36:
|
|
1721
1725
|
ENCODE;
|
1722
1726
|
}
|
1723
1727
|
}
|
1724
|
-
#line
|
1728
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
1725
1729
|
{
|
1726
1730
|
mark_row_sep = p;
|
1727
|
-
curline++;
|
1728
1731
|
|
1729
1732
|
if (d->start == 0 || p == d->start) {
|
1730
1733
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1741,7 +1744,7 @@ tr36:
|
|
1741
1744
|
rb_yield(row);
|
1742
1745
|
row = rb_ary_new();
|
1743
1746
|
}
|
1744
|
-
#line
|
1747
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
1745
1748
|
{act = 2;}
|
1746
1749
|
goto st11;
|
1747
1750
|
tr40:
|
@@ -1767,12 +1770,11 @@ tr40:
|
|
1767
1770
|
rb_ary_push(row, field);
|
1768
1771
|
field = Qnil;
|
1769
1772
|
}
|
1770
|
-
#line
|
1773
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
1771
1774
|
{act = 1;}
|
1772
|
-
#line
|
1775
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
1773
1776
|
{
|
1774
1777
|
mark_row_sep = p;
|
1775
|
-
curline++;
|
1776
1778
|
|
1777
1779
|
if (d->start == 0 || p == d->start) {
|
1778
1780
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1801,7 +1803,7 @@ tr48:
|
|
1801
1803
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
1802
1804
|
FREE;
|
1803
1805
|
|
1804
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
1806
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
1805
1807
|
}
|
1806
1808
|
}
|
1807
1809
|
else {
|
@@ -1809,17 +1811,18 @@ tr48:
|
|
1809
1811
|
row_sep = ALLOC_N(char, len_row_sep);
|
1810
1812
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
1811
1813
|
}
|
1814
|
+
|
1815
|
+
curline++;
|
1812
1816
|
}
|
1813
|
-
#line
|
1817
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
1814
1818
|
{act = 2;}
|
1815
1819
|
goto st11;
|
1816
1820
|
tr51:
|
1817
1821
|
#line 1 "NONE"
|
1818
1822
|
{te = p+1;}
|
1819
|
-
#line
|
1823
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
1820
1824
|
{
|
1821
1825
|
mark_row_sep = p;
|
1822
|
-
curline++;
|
1823
1826
|
|
1824
1827
|
if (d->start == 0 || p == d->start) {
|
1825
1828
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1844,7 +1847,7 @@ tr51:
|
|
1844
1847
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
1845
1848
|
FREE;
|
1846
1849
|
|
1847
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
1850
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
1848
1851
|
}
|
1849
1852
|
}
|
1850
1853
|
else {
|
@@ -1852,8 +1855,10 @@ tr51:
|
|
1852
1855
|
row_sep = ALLOC_N(char, len_row_sep);
|
1853
1856
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
1854
1857
|
}
|
1858
|
+
|
1859
|
+
curline++;
|
1855
1860
|
}
|
1856
|
-
#line
|
1861
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
1857
1862
|
{act = 2;}
|
1858
1863
|
goto st11;
|
1859
1864
|
tr57:
|
@@ -1864,12 +1869,11 @@ tr57:
|
|
1864
1869
|
rb_ary_push(row, field);
|
1865
1870
|
field = Qnil;
|
1866
1871
|
}
|
1867
|
-
#line
|
1872
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
1868
1873
|
{act = 1;}
|
1869
|
-
#line
|
1874
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
1870
1875
|
{
|
1871
1876
|
mark_row_sep = p;
|
1872
|
-
curline++;
|
1873
1877
|
|
1874
1878
|
if (d->start == 0 || p == d->start) {
|
1875
1879
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1894,7 +1898,7 @@ tr57:
|
|
1894
1898
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
1895
1899
|
FREE;
|
1896
1900
|
|
1897
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
1901
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
1898
1902
|
}
|
1899
1903
|
}
|
1900
1904
|
else {
|
@@ -1902,17 +1906,19 @@ tr57:
|
|
1902
1906
|
row_sep = ALLOC_N(char, len_row_sep);
|
1903
1907
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
1904
1908
|
}
|
1909
|
+
|
1910
|
+
curline++;
|
1905
1911
|
}
|
1906
1912
|
goto st11;
|
1907
1913
|
st11:
|
1908
1914
|
if ( ++p == pe )
|
1909
1915
|
goto _test_eof11;
|
1910
1916
|
case 11:
|
1911
|
-
#line
|
1917
|
+
#line 1918 "ext/fastcsv/fastcsv.c"
|
1912
1918
|
_widec = (*p);
|
1913
1919
|
_widec = (short)(128 + ((*p) - -128));
|
1914
1920
|
if (
|
1915
|
-
#line
|
1921
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
1916
1922
|
(*p) == quote_char ) _widec += 256;
|
1917
1923
|
switch( _widec ) {
|
1918
1924
|
case 256: goto tr43;
|
@@ -1928,10 +1934,9 @@ case 11:
|
|
1928
1934
|
tr18:
|
1929
1935
|
#line 1 "NONE"
|
1930
1936
|
{te = p+1;}
|
1931
|
-
#line
|
1937
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
1932
1938
|
{
|
1933
1939
|
mark_row_sep = p;
|
1934
|
-
curline++;
|
1935
1940
|
|
1936
1941
|
if (d->start == 0 || p == d->start) {
|
1937
1942
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -1948,7 +1953,7 @@ tr18:
|
|
1948
1953
|
rb_yield(row);
|
1949
1954
|
row = rb_ary_new();
|
1950
1955
|
}
|
1951
|
-
#line
|
1956
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
1952
1957
|
{act = 2;}
|
1953
1958
|
goto st12;
|
1954
1959
|
tr26:
|
@@ -1959,12 +1964,11 @@ tr26:
|
|
1959
1964
|
rb_ary_push(row, field);
|
1960
1965
|
field = Qnil;
|
1961
1966
|
}
|
1962
|
-
#line
|
1967
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
1963
1968
|
{act = 1;}
|
1964
|
-
#line
|
1969
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
1965
1970
|
{
|
1966
1971
|
mark_row_sep = p;
|
1967
|
-
curline++;
|
1968
1972
|
|
1969
1973
|
if (d->start == 0 || p == d->start) {
|
1970
1974
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2000,10 +2004,9 @@ tr37:
|
|
2000
2004
|
ENCODE;
|
2001
2005
|
}
|
2002
2006
|
}
|
2003
|
-
#line
|
2007
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
2004
2008
|
{
|
2005
2009
|
mark_row_sep = p;
|
2006
|
-
curline++;
|
2007
2010
|
|
2008
2011
|
if (d->start == 0 || p == d->start) {
|
2009
2012
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2020,7 +2023,7 @@ tr37:
|
|
2020
2023
|
rb_yield(row);
|
2021
2024
|
row = rb_ary_new();
|
2022
2025
|
}
|
2023
|
-
#line
|
2026
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
2024
2027
|
{act = 2;}
|
2025
2028
|
goto st12;
|
2026
2029
|
tr41:
|
@@ -2046,12 +2049,11 @@ tr41:
|
|
2046
2049
|
rb_ary_push(row, field);
|
2047
2050
|
field = Qnil;
|
2048
2051
|
}
|
2049
|
-
#line
|
2052
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
2050
2053
|
{act = 1;}
|
2051
|
-
#line
|
2054
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
2052
2055
|
{
|
2053
2056
|
mark_row_sep = p;
|
2054
|
-
curline++;
|
2055
2057
|
|
2056
2058
|
if (d->start == 0 || p == d->start) {
|
2057
2059
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2072,10 +2074,9 @@ tr41:
|
|
2072
2074
|
tr52:
|
2073
2075
|
#line 1 "NONE"
|
2074
2076
|
{te = p+1;}
|
2075
|
-
#line
|
2077
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
2076
2078
|
{
|
2077
2079
|
mark_row_sep = p;
|
2078
|
-
curline++;
|
2079
2080
|
|
2080
2081
|
if (d->start == 0 || p == d->start) {
|
2081
2082
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2100,7 +2101,7 @@ tr52:
|
|
2100
2101
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
2101
2102
|
FREE;
|
2102
2103
|
|
2103
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
2104
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
2104
2105
|
}
|
2105
2106
|
}
|
2106
2107
|
else {
|
@@ -2108,8 +2109,10 @@ tr52:
|
|
2108
2109
|
row_sep = ALLOC_N(char, len_row_sep);
|
2109
2110
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
2110
2111
|
}
|
2112
|
+
|
2113
|
+
curline++;
|
2111
2114
|
}
|
2112
|
-
#line
|
2115
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
2113
2116
|
{act = 2;}
|
2114
2117
|
goto st12;
|
2115
2118
|
tr58:
|
@@ -2120,12 +2123,11 @@ tr58:
|
|
2120
2123
|
rb_ary_push(row, field);
|
2121
2124
|
field = Qnil;
|
2122
2125
|
}
|
2123
|
-
#line
|
2126
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
2124
2127
|
{act = 1;}
|
2125
|
-
#line
|
2128
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
2126
2129
|
{
|
2127
2130
|
mark_row_sep = p;
|
2128
|
-
curline++;
|
2129
2131
|
|
2130
2132
|
if (d->start == 0 || p == d->start) {
|
2131
2133
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2150,7 +2152,7 @@ tr58:
|
|
2150
2152
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
2151
2153
|
FREE;
|
2152
2154
|
|
2153
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
2155
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
2154
2156
|
}
|
2155
2157
|
}
|
2156
2158
|
else {
|
@@ -2158,17 +2160,19 @@ tr58:
|
|
2158
2160
|
row_sep = ALLOC_N(char, len_row_sep);
|
2159
2161
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
2160
2162
|
}
|
2163
|
+
|
2164
|
+
curline++;
|
2161
2165
|
}
|
2162
2166
|
goto st12;
|
2163
2167
|
st12:
|
2164
2168
|
if ( ++p == pe )
|
2165
2169
|
goto _test_eof12;
|
2166
2170
|
case 12:
|
2167
|
-
#line
|
2171
|
+
#line 2172 "ext/fastcsv/fastcsv.c"
|
2168
2172
|
_widec = (*p);
|
2169
2173
|
_widec = (short)(128 + ((*p) - -128));
|
2170
2174
|
if (
|
2171
|
-
#line
|
2175
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
2172
2176
|
(*p) == quote_char ) _widec += 256;
|
2173
2177
|
switch( _widec ) {
|
2174
2178
|
case 256: goto tr43;
|
@@ -2224,10 +2228,9 @@ tr28:
|
|
2224
2228
|
{
|
2225
2229
|
unclosed_line = 0;
|
2226
2230
|
}
|
2227
|
-
#line
|
2231
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
2228
2232
|
{
|
2229
2233
|
mark_row_sep = p;
|
2230
|
-
curline++;
|
2231
2234
|
|
2232
2235
|
if (d->start == 0 || p == d->start) {
|
2233
2236
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2244,7 +2247,7 @@ tr28:
|
|
2244
2247
|
rb_yield(row);
|
2245
2248
|
row = rb_ary_new();
|
2246
2249
|
}
|
2247
|
-
#line
|
2250
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
2248
2251
|
{act = 2;}
|
2249
2252
|
goto st13;
|
2250
2253
|
tr31:
|
@@ -2294,12 +2297,11 @@ tr31:
|
|
2294
2297
|
rb_ary_push(row, field);
|
2295
2298
|
field = Qnil;
|
2296
2299
|
}
|
2297
|
-
#line
|
2300
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
2298
2301
|
{act = 1;}
|
2299
|
-
#line
|
2302
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
2300
2303
|
{
|
2301
2304
|
mark_row_sep = p;
|
2302
|
-
curline++;
|
2303
2305
|
|
2304
2306
|
if (d->start == 0 || p == d->start) {
|
2305
2307
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2367,7 +2369,7 @@ tr49:
|
|
2367
2369
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
2368
2370
|
FREE;
|
2369
2371
|
|
2370
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
2372
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
2371
2373
|
}
|
2372
2374
|
}
|
2373
2375
|
else {
|
@@ -2375,8 +2377,10 @@ tr49:
|
|
2375
2377
|
row_sep = ALLOC_N(char, len_row_sep);
|
2376
2378
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
2377
2379
|
}
|
2380
|
+
|
2381
|
+
curline++;
|
2378
2382
|
}
|
2379
|
-
#line
|
2383
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
2380
2384
|
{act = 2;}
|
2381
2385
|
goto st13;
|
2382
2386
|
tr54:
|
@@ -2421,10 +2425,9 @@ tr54:
|
|
2421
2425
|
{
|
2422
2426
|
unclosed_line = 0;
|
2423
2427
|
}
|
2424
|
-
#line
|
2428
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
2425
2429
|
{
|
2426
2430
|
mark_row_sep = p;
|
2427
|
-
curline++;
|
2428
2431
|
|
2429
2432
|
if (d->start == 0 || p == d->start) {
|
2430
2433
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2449,7 +2452,7 @@ tr54:
|
|
2449
2452
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
2450
2453
|
FREE;
|
2451
2454
|
|
2452
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
2455
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
2453
2456
|
}
|
2454
2457
|
}
|
2455
2458
|
else {
|
@@ -2457,8 +2460,10 @@ tr54:
|
|
2457
2460
|
row_sep = ALLOC_N(char, len_row_sep);
|
2458
2461
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
2459
2462
|
}
|
2463
|
+
|
2464
|
+
curline++;
|
2460
2465
|
}
|
2461
|
-
#line
|
2466
|
+
#line 169 "ext/fastcsv/fastcsv.rl"
|
2462
2467
|
{act = 2;}
|
2463
2468
|
goto st13;
|
2464
2469
|
tr61:
|
@@ -2508,12 +2513,11 @@ tr61:
|
|
2508
2513
|
rb_ary_push(row, field);
|
2509
2514
|
field = Qnil;
|
2510
2515
|
}
|
2511
|
-
#line
|
2516
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
2512
2517
|
{act = 1;}
|
2513
|
-
#line
|
2518
|
+
#line 119 "ext/fastcsv/fastcsv.rl"
|
2514
2519
|
{
|
2515
2520
|
mark_row_sep = p;
|
2516
|
-
curline++;
|
2517
2521
|
|
2518
2522
|
if (d->start == 0 || p == d->start) {
|
2519
2523
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2538,7 +2542,7 @@ tr61:
|
|
2538
2542
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
2539
2543
|
FREE;
|
2540
2544
|
|
2541
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
2545
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
2542
2546
|
}
|
2543
2547
|
}
|
2544
2548
|
else {
|
@@ -2546,20 +2550,22 @@ tr61:
|
|
2546
2550
|
row_sep = ALLOC_N(char, len_row_sep);
|
2547
2551
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
2548
2552
|
}
|
2553
|
+
|
2554
|
+
curline++;
|
2549
2555
|
}
|
2550
2556
|
goto st13;
|
2551
2557
|
st13:
|
2552
2558
|
if ( ++p == pe )
|
2553
2559
|
goto _test_eof13;
|
2554
2560
|
case 13:
|
2555
|
-
#line
|
2561
|
+
#line 2562 "ext/fastcsv/fastcsv.c"
|
2556
2562
|
_widec = (*p);
|
2557
2563
|
_widec = (short)(1152 + ((*p) - -128));
|
2558
2564
|
if (
|
2559
|
-
#line
|
2565
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
2560
2566
|
(*p) == quote_char ) _widec += 256;
|
2561
2567
|
if (
|
2562
|
-
#line
|
2568
|
+
#line 157 "ext/fastcsv/fastcsv.rl"
|
2563
2569
|
(*p) == col_sep ) _widec += 512;
|
2564
2570
|
switch( _widec ) {
|
2565
2571
|
case 1280: goto tr50;
|
@@ -2629,7 +2635,7 @@ tr27:
|
|
2629
2635
|
{
|
2630
2636
|
unclosed_line = 0;
|
2631
2637
|
}
|
2632
|
-
#line
|
2638
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
2633
2639
|
{
|
2634
2640
|
if (d->start == 0 || p == d->start) { // same as new_row
|
2635
2641
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2646,7 +2652,7 @@ tr27:
|
|
2646
2652
|
rb_yield(row);
|
2647
2653
|
}
|
2648
2654
|
}
|
2649
|
-
#line
|
2655
|
+
#line 170 "ext/fastcsv/fastcsv.rl"
|
2650
2656
|
{act = 3;}
|
2651
2657
|
goto st14;
|
2652
2658
|
tr29:
|
@@ -2696,7 +2702,7 @@ tr29:
|
|
2696
2702
|
rb_ary_push(row, field);
|
2697
2703
|
field = Qnil;
|
2698
2704
|
}
|
2699
|
-
#line
|
2705
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
2700
2706
|
{act = 1;}
|
2701
2707
|
goto st14;
|
2702
2708
|
tr30:
|
@@ -2746,9 +2752,9 @@ tr30:
|
|
2746
2752
|
rb_ary_push(row, field);
|
2747
2753
|
field = Qnil;
|
2748
2754
|
}
|
2749
|
-
#line
|
2755
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
2750
2756
|
{act = 1;}
|
2751
|
-
#line
|
2757
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
2752
2758
|
{
|
2753
2759
|
if (d->start == 0 || p == d->start) { // same as new_row
|
2754
2760
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2816,7 +2822,7 @@ tr53:
|
|
2816
2822
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
2817
2823
|
FREE;
|
2818
2824
|
|
2819
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
2825
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
2820
2826
|
}
|
2821
2827
|
}
|
2822
2828
|
else {
|
@@ -2824,8 +2830,10 @@ tr53:
|
|
2824
2830
|
row_sep = ALLOC_N(char, len_row_sep);
|
2825
2831
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
2826
2832
|
}
|
2833
|
+
|
2834
|
+
curline++;
|
2827
2835
|
}
|
2828
|
-
#line
|
2836
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
2829
2837
|
{
|
2830
2838
|
if (d->start == 0 || p == d->start) { // same as new_row
|
2831
2839
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -2842,7 +2850,7 @@ tr53:
|
|
2842
2850
|
rb_yield(row);
|
2843
2851
|
}
|
2844
2852
|
}
|
2845
|
-
#line
|
2853
|
+
#line 170 "ext/fastcsv/fastcsv.rl"
|
2846
2854
|
{act = 3;}
|
2847
2855
|
goto st14;
|
2848
2856
|
tr59:
|
@@ -2892,7 +2900,7 @@ tr59:
|
|
2892
2900
|
rb_ary_push(row, field);
|
2893
2901
|
field = Qnil;
|
2894
2902
|
}
|
2895
|
-
#line
|
2903
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
2896
2904
|
{act = 1;}
|
2897
2905
|
#line 100 "ext/fastcsv/fastcsv.rl"
|
2898
2906
|
{
|
@@ -2902,7 +2910,7 @@ tr59:
|
|
2902
2910
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
2903
2911
|
FREE;
|
2904
2912
|
|
2905
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
2913
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
2906
2914
|
}
|
2907
2915
|
}
|
2908
2916
|
else {
|
@@ -2910,6 +2918,8 @@ tr59:
|
|
2910
2918
|
row_sep = ALLOC_N(char, len_row_sep);
|
2911
2919
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
2912
2920
|
}
|
2921
|
+
|
2922
|
+
curline++;
|
2913
2923
|
}
|
2914
2924
|
goto st14;
|
2915
2925
|
tr60:
|
@@ -2959,7 +2969,7 @@ tr60:
|
|
2959
2969
|
rb_ary_push(row, field);
|
2960
2970
|
field = Qnil;
|
2961
2971
|
}
|
2962
|
-
#line
|
2972
|
+
#line 168 "ext/fastcsv/fastcsv.rl"
|
2963
2973
|
{act = 1;}
|
2964
2974
|
#line 100 "ext/fastcsv/fastcsv.rl"
|
2965
2975
|
{
|
@@ -2969,7 +2979,7 @@ tr60:
|
|
2969
2979
|
if (p - mark_row_sep != len_row_sep || row_sep[0] != *mark_row_sep || (len_row_sep == 2 && row_sep[1] != *(mark_row_sep + 1))) {
|
2970
2980
|
FREE;
|
2971
2981
|
|
2972
|
-
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline
|
2982
|
+
rb_raise(eError, "Unquoted fields do not allow \\r or \\n (line %d).", curline);
|
2973
2983
|
}
|
2974
2984
|
}
|
2975
2985
|
else {
|
@@ -2977,8 +2987,10 @@ tr60:
|
|
2977
2987
|
row_sep = ALLOC_N(char, len_row_sep);
|
2978
2988
|
memcpy(row_sep, mark_row_sep, len_row_sep);
|
2979
2989
|
}
|
2990
|
+
|
2991
|
+
curline++;
|
2980
2992
|
}
|
2981
|
-
#line
|
2993
|
+
#line 138 "ext/fastcsv/fastcsv.rl"
|
2982
2994
|
{
|
2983
2995
|
if (d->start == 0 || p == d->start) { // same as new_row
|
2984
2996
|
rb_ivar_set(self, s_row, rb_str_new2(""));
|
@@ -3000,14 +3012,14 @@ st14:
|
|
3000
3012
|
if ( ++p == pe )
|
3001
3013
|
goto _test_eof14;
|
3002
3014
|
case 14:
|
3003
|
-
#line
|
3015
|
+
#line 3016 "ext/fastcsv/fastcsv.c"
|
3004
3016
|
_widec = (*p);
|
3005
3017
|
_widec = (short)(1152 + ((*p) - -128));
|
3006
3018
|
if (
|
3007
|
-
#line
|
3019
|
+
#line 156 "ext/fastcsv/fastcsv.rl"
|
3008
3020
|
(*p) == quote_char ) _widec += 256;
|
3009
3021
|
if (
|
3010
|
-
#line
|
3022
|
+
#line 157 "ext/fastcsv/fastcsv.rl"
|
3011
3023
|
(*p) == col_sep ) _widec += 512;
|
3012
3024
|
switch( _widec ) {
|
3013
3025
|
case 1280: goto tr13;
|
@@ -3074,7 +3086,7 @@ case 14:
|
|
3074
3086
|
_out: {}
|
3075
3087
|
}
|
3076
3088
|
|
3077
|
-
#line
|
3089
|
+
#line 447 "ext/fastcsv/fastcsv.rl"
|
3078
3090
|
|
3079
3091
|
if (done && cs < raw_parse_first_final) {
|
3080
3092
|
if (d->start == 0 || p == d->start) { // same as new_row
|
@@ -3100,6 +3112,13 @@ case 14:
|
|
3100
3112
|
else if (io) {
|
3101
3113
|
have = pe - ts;
|
3102
3114
|
memmove(buf, ts, have);
|
3115
|
+
// @see https://github.com/hpricot/hpricot/blob/master/ext/hpricot_scan/hpricot_scan.rl#L92
|
3116
|
+
if (d->start > ts) {
|
3117
|
+
d->start = buf + (d->start - ts);
|
3118
|
+
}
|
3119
|
+
if (mark_row_sep > ts) {
|
3120
|
+
mark_row_sep = buf + (mark_row_sep - ts);
|
3121
|
+
}
|
3103
3122
|
te = buf + (te - ts);
|
3104
3123
|
ts = buf;
|
3105
3124
|
}
|