fastcsv 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
}
|