home_run 0.9.1-x86-mswin32-60 → 0.9.2-x86-mswin32-60
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.
- data/CHANGELOG +8 -0
 - data/README.rdoc +3 -7
 - data/ext/date_ext/date_ext.c +65 -61
 - data/ext/date_ext/date_ext.h +1 -2
 - data/ext/date_ext/date_parser.c +59 -55
 - data/ext/date_ext/date_parser.rl +12 -8
 - data/ext/date_ext/datetime.c +90 -74
 - data/ext/date_ext/extconf.rb +2 -0
 - data/lib/1.8/date_ext.so +0 -0
 - data/lib/1.9/date_ext.so +0 -0
 - data/spec/datetime/accessor_spec.rb +13 -4
 - data/spec/datetime/parse_spec.rb +10 -1
 - metadata +4 -4
 
    
        data/ext/date_ext/date_parser.c
    CHANGED
    
    | 
         @@ -2,6 +2,10 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            #line 1 "date_parser.rl"
         
     | 
| 
       3 
3 
     | 
    
         
             
            #include "date_ext.h"
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            #ifdef RHR_ENCODING
         
     | 
| 
      
 6 
     | 
    
         
            +
            extern int rhrd_encoding_index;
         
     | 
| 
      
 7 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
       5 
9 
     | 
    
         
             
            #define RHRR_ISO_PARSER 0x1
         
     | 
| 
       6 
10 
     | 
    
         
             
            #define RHRR_RFC_PARSER 0x2
         
     | 
| 
       7 
11 
     | 
    
         
             
            #define RHRR_CLF_PARSER 0x4
         
     | 
| 
         @@ -76,7 +80,7 @@ long rhrd__weekday_num(char * str) { 
     | 
|
| 
       76 
80 
     | 
    
         
             
            }
         
     | 
| 
       77 
81 
     | 
    
         | 
| 
       78 
82 
     | 
    
         | 
| 
       79 
     | 
    
         
            -
            #line  
     | 
| 
      
 83 
     | 
    
         
            +
            #line 84 "date_parser.c"
         
     | 
| 
       80 
84 
     | 
    
         
             
            static const char _date_parser_actions[] = {
         
     | 
| 
       81 
85 
     | 
    
         
             
            	0, 1, 0, 1, 1, 1, 2, 1, 
         
     | 
| 
       82 
86 
     | 
    
         
             
            	3, 1, 4, 1, 5, 1, 6, 1, 
         
     | 
| 
         @@ -392,7 +396,7 @@ static const int date_parser_error = 0; 
     | 
|
| 
       392 
396 
     | 
    
         
             
            static const int date_parser_en_main = 1;
         
     | 
| 
       393 
397 
     | 
    
         | 
| 
       394 
398 
     | 
    
         | 
| 
       395 
     | 
    
         
            -
            #line  
     | 
| 
      
 399 
     | 
    
         
            +
            #line 185 "date_parser.rl"
         
     | 
| 
       396 
400 
     | 
    
         | 
| 
       397 
401 
     | 
    
         | 
| 
       398 
402 
     | 
    
         
             
            VALUE rhrd__ragel_parse(char * p, long len) {
         
     | 
| 
         @@ -452,14 +456,14 @@ VALUE rhrd__ragel_parse(char * p, long len) { 
     | 
|
| 
       452 
456 
     | 
    
         
             
              eof = pe;
         
     | 
| 
       453 
457 
     | 
    
         | 
| 
       454 
458 
     | 
    
         | 
| 
       455 
     | 
    
         
            -
            #line  
     | 
| 
      
 459 
     | 
    
         
            +
            #line 460 "date_parser.c"
         
     | 
| 
       456 
460 
     | 
    
         
             
            	{
         
     | 
| 
       457 
461 
     | 
    
         
             
            	cs = date_parser_start;
         
     | 
| 
       458 
462 
     | 
    
         
             
            	}
         
     | 
| 
       459 
463 
     | 
    
         | 
| 
       460 
     | 
    
         
            -
            #line  
     | 
| 
      
 464 
     | 
    
         
            +
            #line 244 "date_parser.rl"
         
     | 
| 
       461 
465 
     | 
    
         | 
| 
       462 
     | 
    
         
            -
            #line  
     | 
| 
      
 466 
     | 
    
         
            +
            #line 467 "date_parser.c"
         
     | 
| 
       463 
467 
     | 
    
         
             
            	{
         
     | 
| 
       464 
468 
     | 
    
         
             
            	int _klen;
         
     | 
| 
       465 
469 
     | 
    
         
             
            	unsigned int _trans;
         
     | 
| 
         @@ -534,134 +538,134 @@ _match: 
     | 
|
| 
       534 
538 
     | 
    
         
             
            		switch ( *_acts++ )
         
     | 
| 
       535 
539 
     | 
    
         
             
            		{
         
     | 
| 
       536 
540 
     | 
    
         
             
            	case 0:
         
     | 
| 
       537 
     | 
    
         
            -
            #line  
     | 
| 
      
 541 
     | 
    
         
            +
            #line 89 "date_parser.rl"
         
     | 
| 
       538 
542 
     | 
    
         
             
            	{ t_iso_year = p; }
         
     | 
| 
       539 
543 
     | 
    
         
             
            	break;
         
     | 
| 
       540 
544 
     | 
    
         
             
            	case 1:
         
     | 
| 
       541 
     | 
    
         
            -
            #line  
     | 
| 
      
 545 
     | 
    
         
            +
            #line 90 "date_parser.rl"
         
     | 
| 
       542 
546 
     | 
    
         
             
            	{ t_iso_month = p; }
         
     | 
| 
       543 
547 
     | 
    
         
             
            	break;
         
     | 
| 
       544 
548 
     | 
    
         
             
            	case 2:
         
     | 
| 
       545 
     | 
    
         
            -
            #line  
     | 
| 
      
 549 
     | 
    
         
            +
            #line 91 "date_parser.rl"
         
     | 
| 
       546 
550 
     | 
    
         
             
            	{ t_iso_day = p; }
         
     | 
| 
       547 
551 
     | 
    
         
             
            	break;
         
     | 
| 
       548 
552 
     | 
    
         
             
            	case 3:
         
     | 
| 
       549 
     | 
    
         
            -
            #line  
     | 
| 
      
 553 
     | 
    
         
            +
            #line 92 "date_parser.rl"
         
     | 
| 
       550 
554 
     | 
    
         
             
            	{ t_iso_hour = p; }
         
     | 
| 
       551 
555 
     | 
    
         
             
            	break;
         
     | 
| 
       552 
556 
     | 
    
         
             
            	case 4:
         
     | 
| 
       553 
     | 
    
         
            -
            #line  
     | 
| 
      
 557 
     | 
    
         
            +
            #line 93 "date_parser.rl"
         
     | 
| 
       554 
558 
     | 
    
         
             
            	{ t_iso_minute = p; }
         
     | 
| 
       555 
559 
     | 
    
         
             
            	break;
         
     | 
| 
       556 
560 
     | 
    
         
             
            	case 5:
         
     | 
| 
       557 
     | 
    
         
            -
            #line  
     | 
| 
      
 561 
     | 
    
         
            +
            #line 94 "date_parser.rl"
         
     | 
| 
       558 
562 
     | 
    
         
             
            	{ t_iso_second = p; }
         
     | 
| 
       559 
563 
     | 
    
         
             
            	break;
         
     | 
| 
       560 
564 
     | 
    
         
             
            	case 6:
         
     | 
| 
       561 
     | 
    
         
            -
            #line  
     | 
| 
      
 565 
     | 
    
         
            +
            #line 95 "date_parser.rl"
         
     | 
| 
       562 
566 
     | 
    
         
             
            	{ t_iso_zone = p; }
         
     | 
| 
       563 
567 
     | 
    
         
             
            	break;
         
     | 
| 
       564 
568 
     | 
    
         
             
            	case 7:
         
     | 
| 
       565 
     | 
    
         
            -
            #line  
     | 
| 
      
 569 
     | 
    
         
            +
            #line 97 "date_parser.rl"
         
     | 
| 
       566 
570 
     | 
    
         
             
            	{ iso_state |= RHRR_ISO_TIME_SET; }
         
     | 
| 
       567 
571 
     | 
    
         
             
            	break;
         
     | 
| 
       568 
572 
     | 
    
         
             
            	case 8:
         
     | 
| 
       569 
     | 
    
         
            -
            #line  
     | 
| 
      
 573 
     | 
    
         
            +
            #line 98 "date_parser.rl"
         
     | 
| 
       570 
574 
     | 
    
         
             
            	{
         
     | 
| 
       571 
575 
     | 
    
         
             
                t_iso_zone_end = p;
         
     | 
| 
       572 
576 
     | 
    
         
             
                iso_state |= RHRR_ISO_ZONE_SET;
         
     | 
| 
       573 
577 
     | 
    
         
             
              }
         
     | 
| 
       574 
578 
     | 
    
         
             
            	break;
         
     | 
| 
       575 
579 
     | 
    
         
             
            	case 10:
         
     | 
| 
       576 
     | 
    
         
            -
            #line  
     | 
| 
      
 580 
     | 
    
         
            +
            #line 118 "date_parser.rl"
         
     | 
| 
       577 
581 
     | 
    
         
             
            	{ t_rfc_wday = p; }
         
     | 
| 
       578 
582 
     | 
    
         
             
            	break;
         
     | 
| 
       579 
583 
     | 
    
         
             
            	case 11:
         
     | 
| 
       580 
     | 
    
         
            -
            #line  
     | 
| 
      
 584 
     | 
    
         
            +
            #line 119 "date_parser.rl"
         
     | 
| 
       581 
585 
     | 
    
         
             
            	{ t_rfc_day = p; }
         
     | 
| 
       582 
586 
     | 
    
         
             
            	break;
         
     | 
| 
       583 
587 
     | 
    
         
             
            	case 12:
         
     | 
| 
       584 
     | 
    
         
            -
            #line  
     | 
| 
      
 588 
     | 
    
         
            +
            #line 120 "date_parser.rl"
         
     | 
| 
       585 
589 
     | 
    
         
             
            	{ t_rfc_month = p; }
         
     | 
| 
       586 
590 
     | 
    
         
             
            	break;
         
     | 
| 
       587 
591 
     | 
    
         
             
            	case 13:
         
     | 
| 
       588 
     | 
    
         
            -
            #line  
     | 
| 
      
 592 
     | 
    
         
            +
            #line 121 "date_parser.rl"
         
     | 
| 
       589 
593 
     | 
    
         
             
            	{ t_rfc_year = p; }
         
     | 
| 
       590 
594 
     | 
    
         
             
            	break;
         
     | 
| 
       591 
595 
     | 
    
         
             
            	case 14:
         
     | 
| 
       592 
     | 
    
         
            -
            #line  
     | 
| 
      
 596 
     | 
    
         
            +
            #line 122 "date_parser.rl"
         
     | 
| 
       593 
597 
     | 
    
         
             
            	{ t_rfc_hour = p; }
         
     | 
| 
       594 
598 
     | 
    
         
             
            	break;
         
     | 
| 
       595 
599 
     | 
    
         
             
            	case 15:
         
     | 
| 
       596 
     | 
    
         
            -
            #line  
     | 
| 
      
 600 
     | 
    
         
            +
            #line 123 "date_parser.rl"
         
     | 
| 
       597 
601 
     | 
    
         
             
            	{ t_rfc_minute = p; }
         
     | 
| 
       598 
602 
     | 
    
         
             
            	break;
         
     | 
| 
       599 
603 
     | 
    
         
             
            	case 16:
         
     | 
| 
       600 
     | 
    
         
            -
            #line  
     | 
| 
      
 604 
     | 
    
         
            +
            #line 124 "date_parser.rl"
         
     | 
| 
       601 
605 
     | 
    
         
             
            	{ t_rfc_second = p; }
         
     | 
| 
       602 
606 
     | 
    
         
             
            	break;
         
     | 
| 
       603 
607 
     | 
    
         
             
            	case 17:
         
     | 
| 
       604 
     | 
    
         
            -
            #line  
     | 
| 
      
 608 
     | 
    
         
            +
            #line 125 "date_parser.rl"
         
     | 
| 
       605 
609 
     | 
    
         
             
            	{ t_rfc_zone = p; }
         
     | 
| 
       606 
610 
     | 
    
         
             
            	break;
         
     | 
| 
       607 
611 
     | 
    
         
             
            	case 18:
         
     | 
| 
       608 
     | 
    
         
            -
            #line  
     | 
| 
      
 612 
     | 
    
         
            +
            #line 127 "date_parser.rl"
         
     | 
| 
       609 
613 
     | 
    
         
             
            	{ rfc_state |= RHRR_RFC_TIME_SET; }
         
     | 
| 
       610 
614 
     | 
    
         
             
            	break;
         
     | 
| 
       611 
615 
     | 
    
         
             
            	case 19:
         
     | 
| 
       612 
     | 
    
         
            -
            #line  
     | 
| 
      
 616 
     | 
    
         
            +
            #line 128 "date_parser.rl"
         
     | 
| 
       613 
617 
     | 
    
         
             
            	{
         
     | 
| 
       614 
618 
     | 
    
         
             
                t_rfc_zone_end = p;
         
     | 
| 
       615 
619 
     | 
    
         
             
                rfc_state |= RHRR_RFC_ZONE_SET | RHRR_RFC_ZONE_NUM_SET;
         
     | 
| 
       616 
620 
     | 
    
         
             
              }
         
     | 
| 
       617 
621 
     | 
    
         
             
            	break;
         
     | 
| 
       618 
622 
     | 
    
         
             
            	case 20:
         
     | 
| 
       619 
     | 
    
         
            -
            #line  
     | 
| 
      
 623 
     | 
    
         
            +
            #line 132 "date_parser.rl"
         
     | 
| 
       620 
624 
     | 
    
         
             
            	{
         
     | 
| 
       621 
625 
     | 
    
         
             
                t_rfc_zone_end = p;
         
     | 
| 
       622 
626 
     | 
    
         
             
                rfc_state |= RHRR_RFC_ZONE_SET | RHRR_RFC_ZONE_NAME_SET;
         
     | 
| 
       623 
627 
     | 
    
         
             
              }
         
     | 
| 
       624 
628 
     | 
    
         
             
            	break;
         
     | 
| 
       625 
629 
     | 
    
         
             
            	case 22:
         
     | 
| 
       626 
     | 
    
         
            -
            #line  
     | 
| 
      
 630 
     | 
    
         
            +
            #line 155 "date_parser.rl"
         
     | 
| 
       627 
631 
     | 
    
         
             
            	{ t_clf_day = p; }
         
     | 
| 
       628 
632 
     | 
    
         
             
            	break;
         
     | 
| 
       629 
633 
     | 
    
         
             
            	case 23:
         
     | 
| 
       630 
     | 
    
         
            -
            #line  
     | 
| 
      
 634 
     | 
    
         
            +
            #line 156 "date_parser.rl"
         
     | 
| 
       631 
635 
     | 
    
         
             
            	{ t_clf_month = p; }
         
     | 
| 
       632 
636 
     | 
    
         
             
            	break;
         
     | 
| 
       633 
637 
     | 
    
         
             
            	case 24:
         
     | 
| 
       634 
     | 
    
         
            -
            #line  
     | 
| 
      
 638 
     | 
    
         
            +
            #line 157 "date_parser.rl"
         
     | 
| 
       635 
639 
     | 
    
         
             
            	{ t_clf_year = p; }
         
     | 
| 
       636 
640 
     | 
    
         
             
            	break;
         
     | 
| 
       637 
641 
     | 
    
         
             
            	case 25:
         
     | 
| 
       638 
     | 
    
         
            -
            #line  
     | 
| 
      
 642 
     | 
    
         
            +
            #line 158 "date_parser.rl"
         
     | 
| 
       639 
643 
     | 
    
         
             
            	{ t_clf_hour = p; }
         
     | 
| 
       640 
644 
     | 
    
         
             
            	break;
         
     | 
| 
       641 
645 
     | 
    
         
             
            	case 26:
         
     | 
| 
       642 
     | 
    
         
            -
            #line  
     | 
| 
      
 646 
     | 
    
         
            +
            #line 159 "date_parser.rl"
         
     | 
| 
       643 
647 
     | 
    
         
             
            	{ t_clf_minute = p; }
         
     | 
| 
       644 
648 
     | 
    
         
             
            	break;
         
     | 
| 
       645 
649 
     | 
    
         
             
            	case 27:
         
     | 
| 
       646 
     | 
    
         
            -
            #line  
     | 
| 
      
 650 
     | 
    
         
            +
            #line 160 "date_parser.rl"
         
     | 
| 
       647 
651 
     | 
    
         
             
            	{ t_clf_second = p; }
         
     | 
| 
       648 
652 
     | 
    
         
             
            	break;
         
     | 
| 
       649 
653 
     | 
    
         
             
            	case 28:
         
     | 
| 
       650 
     | 
    
         
            -
            #line  
     | 
| 
      
 654 
     | 
    
         
            +
            #line 161 "date_parser.rl"
         
     | 
| 
       651 
655 
     | 
    
         
             
            	{ t_clf_zone = p; }
         
     | 
| 
       652 
656 
     | 
    
         
             
            	break;
         
     | 
| 
       653 
657 
     | 
    
         
             
            	case 29:
         
     | 
| 
       654 
     | 
    
         
            -
            #line  
     | 
| 
      
 658 
     | 
    
         
            +
            #line 163 "date_parser.rl"
         
     | 
| 
       655 
659 
     | 
    
         
             
            	{ clf_state |= RHRR_CLF_TIME_SET; }
         
     | 
| 
       656 
660 
     | 
    
         
             
            	break;
         
     | 
| 
       657 
661 
     | 
    
         
             
            	case 30:
         
     | 
| 
       658 
     | 
    
         
            -
            #line  
     | 
| 
      
 662 
     | 
    
         
            +
            #line 164 "date_parser.rl"
         
     | 
| 
       659 
663 
     | 
    
         
             
            	{
         
     | 
| 
       660 
664 
     | 
    
         
             
                t_clf_zone_end = p;
         
     | 
| 
       661 
665 
     | 
    
         
             
                clf_state |= RHRR_CLF_ZONE_SET;
         
     | 
| 
       662 
666 
     | 
    
         
             
              }
         
     | 
| 
       663 
667 
     | 
    
         
             
            	break;
         
     | 
| 
       664 
     | 
    
         
            -
            #line  
     | 
| 
      
 668 
     | 
    
         
            +
            #line 669 "date_parser.c"
         
     | 
| 
       665 
669 
     | 
    
         
             
            		}
         
     | 
| 
       666 
670 
     | 
    
         
             
            	}
         
     | 
| 
       667 
671 
     | 
    
         | 
| 
         @@ -678,58 +682,58 @@ _again: 
     | 
|
| 
       678 
682 
     | 
    
         
             
            	while ( __nacts-- > 0 ) {
         
     | 
| 
       679 
683 
     | 
    
         
             
            		switch ( *__acts++ ) {
         
     | 
| 
       680 
684 
     | 
    
         
             
            	case 7:
         
     | 
| 
       681 
     | 
    
         
            -
            #line  
     | 
| 
      
 685 
     | 
    
         
            +
            #line 97 "date_parser.rl"
         
     | 
| 
       682 
686 
     | 
    
         
             
            	{ iso_state |= RHRR_ISO_TIME_SET; }
         
     | 
| 
       683 
687 
     | 
    
         
             
            	break;
         
     | 
| 
       684 
688 
     | 
    
         
             
            	case 8:
         
     | 
| 
       685 
     | 
    
         
            -
            #line  
     | 
| 
      
 689 
     | 
    
         
            +
            #line 98 "date_parser.rl"
         
     | 
| 
       686 
690 
     | 
    
         
             
            	{
         
     | 
| 
       687 
691 
     | 
    
         
             
                t_iso_zone_end = p;
         
     | 
| 
       688 
692 
     | 
    
         
             
                iso_state |= RHRR_ISO_ZONE_SET;
         
     | 
| 
       689 
693 
     | 
    
         
             
              }
         
     | 
| 
       690 
694 
     | 
    
         
             
            	break;
         
     | 
| 
       691 
695 
     | 
    
         
             
            	case 9:
         
     | 
| 
       692 
     | 
    
         
            -
            #line  
     | 
| 
      
 696 
     | 
    
         
            +
            #line 102 "date_parser.rl"
         
     | 
| 
       693 
697 
     | 
    
         
             
            	{ parsers |= RHRR_ISO_PARSER; }
         
     | 
| 
       694 
698 
     | 
    
         
             
            	break;
         
     | 
| 
       695 
699 
     | 
    
         
             
            	case 18:
         
     | 
| 
       696 
     | 
    
         
            -
            #line  
     | 
| 
      
 700 
     | 
    
         
            +
            #line 127 "date_parser.rl"
         
     | 
| 
       697 
701 
     | 
    
         
             
            	{ rfc_state |= RHRR_RFC_TIME_SET; }
         
     | 
| 
       698 
702 
     | 
    
         
             
            	break;
         
     | 
| 
       699 
703 
     | 
    
         
             
            	case 19:
         
     | 
| 
       700 
     | 
    
         
            -
            #line  
     | 
| 
      
 704 
     | 
    
         
            +
            #line 128 "date_parser.rl"
         
     | 
| 
       701 
705 
     | 
    
         
             
            	{
         
     | 
| 
       702 
706 
     | 
    
         
             
                t_rfc_zone_end = p;
         
     | 
| 
       703 
707 
     | 
    
         
             
                rfc_state |= RHRR_RFC_ZONE_SET | RHRR_RFC_ZONE_NUM_SET;
         
     | 
| 
       704 
708 
     | 
    
         
             
              }
         
     | 
| 
       705 
709 
     | 
    
         
             
            	break;
         
     | 
| 
       706 
710 
     | 
    
         
             
            	case 20:
         
     | 
| 
       707 
     | 
    
         
            -
            #line  
     | 
| 
      
 711 
     | 
    
         
            +
            #line 132 "date_parser.rl"
         
     | 
| 
       708 
712 
     | 
    
         
             
            	{
         
     | 
| 
       709 
713 
     | 
    
         
             
                t_rfc_zone_end = p;
         
     | 
| 
       710 
714 
     | 
    
         
             
                rfc_state |= RHRR_RFC_ZONE_SET | RHRR_RFC_ZONE_NAME_SET;
         
     | 
| 
       711 
715 
     | 
    
         
             
              }
         
     | 
| 
       712 
716 
     | 
    
         
             
            	break;
         
     | 
| 
       713 
717 
     | 
    
         
             
            	case 21:
         
     | 
| 
       714 
     | 
    
         
            -
            #line  
     | 
| 
      
 718 
     | 
    
         
            +
            #line 136 "date_parser.rl"
         
     | 
| 
       715 
719 
     | 
    
         
             
            	{ parsers |= RHRR_RFC_PARSER; }
         
     | 
| 
       716 
720 
     | 
    
         
             
            	break;
         
     | 
| 
       717 
721 
     | 
    
         
             
            	case 29:
         
     | 
| 
       718 
     | 
    
         
            -
            #line  
     | 
| 
      
 722 
     | 
    
         
            +
            #line 163 "date_parser.rl"
         
     | 
| 
       719 
723 
     | 
    
         
             
            	{ clf_state |= RHRR_CLF_TIME_SET; }
         
     | 
| 
       720 
724 
     | 
    
         
             
            	break;
         
     | 
| 
       721 
725 
     | 
    
         
             
            	case 30:
         
     | 
| 
       722 
     | 
    
         
            -
            #line  
     | 
| 
      
 726 
     | 
    
         
            +
            #line 164 "date_parser.rl"
         
     | 
| 
       723 
727 
     | 
    
         
             
            	{
         
     | 
| 
       724 
728 
     | 
    
         
             
                t_clf_zone_end = p;
         
     | 
| 
       725 
729 
     | 
    
         
             
                clf_state |= RHRR_CLF_ZONE_SET;
         
     | 
| 
       726 
730 
     | 
    
         
             
              }
         
     | 
| 
       727 
731 
     | 
    
         
             
            	break;
         
     | 
| 
       728 
732 
     | 
    
         
             
            	case 31:
         
     | 
| 
       729 
     | 
    
         
            -
            #line  
     | 
| 
      
 733 
     | 
    
         
            +
            #line 168 "date_parser.rl"
         
     | 
| 
       730 
734 
     | 
    
         
             
            	{ parsers |= RHRR_CLF_PARSER; }
         
     | 
| 
       731 
735 
     | 
    
         
             
            	break;
         
     | 
| 
       732 
     | 
    
         
            -
            #line  
     | 
| 
      
 736 
     | 
    
         
            +
            #line 737 "date_parser.c"
         
     | 
| 
       733 
737 
     | 
    
         
             
            		}
         
     | 
| 
       734 
738 
     | 
    
         
             
            	}
         
     | 
| 
       735 
739 
     | 
    
         
             
            	}
         
     | 
| 
         @@ -737,7 +741,7 @@ _again: 
     | 
|
| 
       737 
741 
     | 
    
         
             
            	_out: {}
         
     | 
| 
       738 
742 
     | 
    
         
             
            	}
         
     | 
| 
       739 
743 
     | 
    
         | 
| 
       740 
     | 
    
         
            -
            #line  
     | 
| 
      
 744 
     | 
    
         
            +
            #line 245 "date_parser.rl"
         
     | 
| 
       741 
745 
     | 
    
         | 
| 
       742 
746 
     | 
    
         
             
              switch(parsers) {
         
     | 
| 
       743 
747 
     | 
    
         
             
                case RHRR_ISO_PARSER:
         
     | 
| 
         @@ -815,31 +819,31 @@ _again: 
     | 
|
| 
       815 
819 
     | 
    
         | 
| 
       816 
820 
     | 
    
         
             
              hash = rb_hash_new();
         
     | 
| 
       817 
821 
     | 
    
         
             
              if(state & RHRR_WDAY_SET) {
         
     | 
| 
       818 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_wday,  
     | 
| 
      
 822 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_wday, LONG2NUM(wday));
         
     | 
| 
       819 
823 
     | 
    
         
             
              } 
         
     | 
| 
       820 
824 
     | 
    
         
             
              if(state & RHRR_YEAR_SET) {
         
     | 
| 
       821 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_year,  
     | 
| 
      
 825 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_year, LONG2NUM(year));
         
     | 
| 
       822 
826 
     | 
    
         
             
              } 
         
     | 
| 
       823 
827 
     | 
    
         
             
              if(state & RHRR_MONTH_SET) {
         
     | 
| 
       824 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_mon,  
     | 
| 
      
 828 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_mon, LONG2NUM(month));
         
     | 
| 
       825 
829 
     | 
    
         
             
              } 
         
     | 
| 
       826 
830 
     | 
    
         
             
              if(state & RHRR_DAY_SET) {
         
     | 
| 
       827 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_mday,  
     | 
| 
      
 831 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_mday, LONG2NUM(day));
         
     | 
| 
       828 
832 
     | 
    
         
             
              } 
         
     | 
| 
       829 
833 
     | 
    
         
             
              if(state & RHRR_HOUR_SET) {
         
     | 
| 
       830 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_hour,  
     | 
| 
      
 834 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_hour, LONG2NUM(hour));
         
     | 
| 
       831 
835 
     | 
    
         
             
              } 
         
     | 
| 
       832 
836 
     | 
    
         
             
              if(state & RHRR_MINUTE_SET) {
         
     | 
| 
       833 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_min,  
     | 
| 
      
 837 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_min, LONG2NUM(minute));
         
     | 
| 
       834 
838 
     | 
    
         
             
              } 
         
     | 
| 
       835 
839 
     | 
    
         
             
              if(state & RHRR_SECOND_SET) {
         
     | 
| 
       836 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_sec,  
     | 
| 
      
 840 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_sec, LONG2NUM(second));
         
     | 
| 
       837 
841 
     | 
    
         
             
              } 
         
     | 
| 
       838 
842 
     | 
    
         
             
              if(state & RHRR_ZONE_SET) {
         
     | 
| 
       839 
843 
     | 
    
         
             
                rzone = rb_str_new(zone, zone_len);
         
     | 
| 
       840 
844 
     | 
    
         
             
                rb_hash_aset(hash, rhrd_sym_zone, rzone);
         
     | 
| 
       841 
845 
     | 
    
         
             
                if (state & RHRR_OFFSET_SET) {
         
     | 
| 
       842 
     | 
    
         
            -
                    rb_hash_aset(hash, rhrd_sym_offset,  
     | 
| 
      
 846 
     | 
    
         
            +
                    rb_hash_aset(hash, rhrd_sym_offset, LONG2NUM(offset));
         
     | 
| 
       843 
847 
     | 
    
         
             
                } else {
         
     | 
| 
       844 
848 
     | 
    
         
             
                  rzone = rhrd_s_zone_to_diff(rzone, rzone);
         
     | 
| 
       845 
849 
     | 
    
         
             
                  if(RTEST(rzone)) {
         
     | 
    
        data/ext/date_ext/date_parser.rl
    CHANGED
    
    | 
         @@ -1,5 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #include "date_ext.h"
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            #ifdef RHR_ENCODING
         
     | 
| 
      
 4 
     | 
    
         
            +
            extern int rhrd_encoding_index;
         
     | 
| 
      
 5 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       3 
7 
     | 
    
         
             
            #define RHRR_ISO_PARSER 0x1
         
     | 
| 
       4 
8 
     | 
    
         
             
            #define RHRR_RFC_PARSER 0x2
         
     | 
| 
       5 
9 
     | 
    
         
             
            #define RHRR_CLF_PARSER 0x4
         
     | 
| 
         @@ -315,31 +319,31 @@ VALUE rhrd__ragel_parse(char * p, long len) { 
     | 
|
| 
       315 
319 
     | 
    
         | 
| 
       316 
320 
     | 
    
         
             
              hash = rb_hash_new();
         
     | 
| 
       317 
321 
     | 
    
         
             
              if(state & RHRR_WDAY_SET) {
         
     | 
| 
       318 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_wday,  
     | 
| 
      
 322 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_wday, LONG2NUM(wday));
         
     | 
| 
       319 
323 
     | 
    
         
             
              } 
         
     | 
| 
       320 
324 
     | 
    
         
             
              if(state & RHRR_YEAR_SET) {
         
     | 
| 
       321 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_year,  
     | 
| 
      
 325 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_year, LONG2NUM(year));
         
     | 
| 
       322 
326 
     | 
    
         
             
              } 
         
     | 
| 
       323 
327 
     | 
    
         
             
              if(state & RHRR_MONTH_SET) {
         
     | 
| 
       324 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_mon,  
     | 
| 
      
 328 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_mon, LONG2NUM(month));
         
     | 
| 
       325 
329 
     | 
    
         
             
              } 
         
     | 
| 
       326 
330 
     | 
    
         
             
              if(state & RHRR_DAY_SET) {
         
     | 
| 
       327 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_mday,  
     | 
| 
      
 331 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_mday, LONG2NUM(day));
         
     | 
| 
       328 
332 
     | 
    
         
             
              } 
         
     | 
| 
       329 
333 
     | 
    
         
             
              if(state & RHRR_HOUR_SET) {
         
     | 
| 
       330 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_hour,  
     | 
| 
      
 334 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_hour, LONG2NUM(hour));
         
     | 
| 
       331 
335 
     | 
    
         
             
              } 
         
     | 
| 
       332 
336 
     | 
    
         
             
              if(state & RHRR_MINUTE_SET) {
         
     | 
| 
       333 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_min,  
     | 
| 
      
 337 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_min, LONG2NUM(minute));
         
     | 
| 
       334 
338 
     | 
    
         
             
              } 
         
     | 
| 
       335 
339 
     | 
    
         
             
              if(state & RHRR_SECOND_SET) {
         
     | 
| 
       336 
     | 
    
         
            -
                rb_hash_aset(hash, rhrd_sym_sec,  
     | 
| 
      
 340 
     | 
    
         
            +
                rb_hash_aset(hash, rhrd_sym_sec, LONG2NUM(second));
         
     | 
| 
       337 
341 
     | 
    
         
             
              } 
         
     | 
| 
       338 
342 
     | 
    
         
             
              if(state & RHRR_ZONE_SET) {
         
     | 
| 
       339 
343 
     | 
    
         
             
                rzone = rb_str_new(zone, zone_len);
         
     | 
| 
       340 
344 
     | 
    
         
             
                rb_hash_aset(hash, rhrd_sym_zone, rzone);
         
     | 
| 
       341 
345 
     | 
    
         
             
                if (state & RHRR_OFFSET_SET) {
         
     | 
| 
       342 
     | 
    
         
            -
                    rb_hash_aset(hash, rhrd_sym_offset,  
     | 
| 
      
 346 
     | 
    
         
            +
                    rb_hash_aset(hash, rhrd_sym_offset, LONG2NUM(offset));
         
     | 
| 
       343 
347 
     | 
    
         
             
                } else {
         
     | 
| 
       344 
348 
     | 
    
         
             
                  rzone = rhrd_s_zone_to_diff(rzone, rzone);
         
     | 
| 
       345 
349 
     | 
    
         
             
                  if(RTEST(rzone)) {
         
     |