home_run 1.0.7-x86-mswin32-60 → 1.0.9-x86-mswin32-60
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +8 -0
- data/README.rdoc +8 -0
- data/bench/cpu_bench.rb +2 -2
- data/ext/date_ext/date_ext.c +78 -78
- data/ext/date_ext/date_ext.h +2 -2
- data/ext/date_ext/datetime.c +41 -41
- data/lib/1.8/date_ext.so +0 -0
- data/lib/1.9/date_ext.so +0 -0
- data/lib/date.rb +55 -0
- metadata +4 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
=== 1.0.9 (2013-03-19)
|
2
|
+
|
3
|
+
* Add Date::Infinity implementation (jeremyevans) (#50)
|
4
|
+
|
5
|
+
=== 1.0.8 (2013-02-28)
|
6
|
+
|
7
|
+
* Switch %i to %d in format strings to work on ruby 2.0 (jeremyevans)
|
8
|
+
|
1
9
|
=== 1.0.7 (2012-08-08)
|
2
10
|
|
3
11
|
* Make DateTime constructors handle fractional seconds in seconds argument (jeremyevans)
|
data/README.rdoc
CHANGED
@@ -4,6 +4,14 @@ home_run is an implementation of ruby's Date/DateTime classes in C,
|
|
4
4
|
with much better performance (20-200x) than the version in the
|
5
5
|
standard library, while being almost completely compatible.
|
6
6
|
|
7
|
+
== Not necessary in 1.9.3+
|
8
|
+
|
9
|
+
Ruby 1.9.3+ replaced the old date library with one written in C,
|
10
|
+
based partially on the design of home_run (but implemented
|
11
|
+
differently). In most cases, if you are using Ruby 1.9.3+, you
|
12
|
+
will not need to use home_run.
|
13
|
+
|
14
|
+
|
7
15
|
== Performance increase (microbenchmarks)
|
8
16
|
|
9
17
|
The speedup you'll get depends mostly on your version of ruby, but
|
data/bench/cpu_bench.rb
CHANGED
@@ -7,7 +7,7 @@ compare(".commercial"){|dc| n.times{dc.commercial(2010, 1, 1)}}
|
|
7
7
|
compare(".gregorian_leap?"){|dc| n.times{dc.gregorian_leap?(2000)}}
|
8
8
|
compare(".jd"){|dc| n.times{dc.jd(2010)}}
|
9
9
|
compare(".julian_leap?"){|dc| n.times{dc.julian_leap?(2000)}}
|
10
|
-
compare(".new!"){|dc| n.times{dc.new!(2012)}}
|
10
|
+
compare(".new!"){|dc| n.times{dc.new!(2012)}} if RUBY_VERSION < '1.9.3'
|
11
11
|
compare(".ordinal"){|dc| n.times{dc.ordinal(2012, 100)}}
|
12
12
|
compare(".parse"){|dc| n.times{dc.parse('2010-12-13')}}
|
13
13
|
compare(".strptime"){|dc| n.times{dc.strptime('fri jan 5 00:00:00 2007', '%c')}}
|
@@ -22,7 +22,7 @@ dt_compare("._strptime"){|dc| n.times{dc._strptime('fri jan 5 13:43:37 2007', '%
|
|
22
22
|
dt_compare(".civil"){|dc| n.times{dc.civil(2010, 1, 1, 13, 43, 57)}}
|
23
23
|
dt_compare(".commercial"){|dc| n.times{dc.commercial(2010, 1, 1, 13, 43, 57)}}
|
24
24
|
dt_compare(".jd"){|dc| n.times{dc.jd(2010, 13, 43, 57)}}
|
25
|
-
dt_compare(".new!"){|dc| n.times{dc.new!(201013.3, -8/24.0)}}
|
25
|
+
dt_compare(".new!"){|dc| n.times{dc.new!(201013.3, -8/24.0)}} if RUBY_VERSION < '1.9.3'
|
26
26
|
dt_compare(".now"){|dc| n.times{dc.now}}
|
27
27
|
dt_compare(".ordinal"){|dc| n.times{dc.ordinal(2010, 1, 13, 43, 57)}}
|
28
28
|
dt_compare(".parse"){|dc| n.times{dc.parse('2010-12-13T13:43:57+08:00')}}
|
data/ext/date_ext/date_ext.c
CHANGED
@@ -257,7 +257,7 @@ int rhrd__valid_civil(rhrd_t *d, long year, long month, long day, int overlimit_
|
|
257
257
|
|
258
258
|
if(!rhrd__valid_civil_limits(year, month, day)) {
|
259
259
|
if (overlimit_raise == RHR_OVERLIMIT_RAISE) {
|
260
|
-
rb_raise(rb_eRangeError, "date out of range: year = %
|
260
|
+
rb_raise(rb_eRangeError, "date out of range: year = %ld, month = %ld, day = %ld", year, month, day);
|
261
261
|
}
|
262
262
|
return 0;
|
263
263
|
}
|
@@ -779,49 +779,49 @@ VALUE rhrd__strftime(rhrdt_t *d, const char * fmt, int fmt_len) {
|
|
779
779
|
cp += sprintf(str + cp, "%s", rhrd__month_names[d->month]);
|
780
780
|
break;
|
781
781
|
case 'c':
|
782
|
-
cp += sprintf(str + cp, "%s %s %
|
782
|
+
cp += sprintf(str + cp, "%s %s %2d %02d:%02d:%02d %04ld", rhrd__abbr_day_names[rhrd__jd_to_wday(d->jd)], rhrd__abbr_month_names[d->month], (int)d->day, (int)d->hour, (int)d->minute, (int)d->second, d->year);
|
783
783
|
break;
|
784
784
|
case 'C':
|
785
|
-
cp += sprintf(str + cp, "%
|
785
|
+
cp += sprintf(str + cp, "%02ld", d->year / 100);
|
786
786
|
break;
|
787
787
|
case 'd':
|
788
|
-
cp += sprintf(str + cp, "%
|
788
|
+
cp += sprintf(str + cp, "%02d", (int)d->day);
|
789
789
|
break;
|
790
790
|
case 'e':
|
791
|
-
cp += sprintf(str + cp, "%
|
791
|
+
cp += sprintf(str + cp, "%2d", (int)d->day);
|
792
792
|
break;
|
793
793
|
case 'F':
|
794
|
-
cp += sprintf(str + cp, "%
|
794
|
+
cp += sprintf(str + cp, "%04ld-%02d-%02d", d->year, (int)d->month, (int)d->day);
|
795
795
|
break;
|
796
796
|
case 'g':
|
797
|
-
cp += sprintf(str + cp, "%
|
797
|
+
cp += sprintf(str + cp, "%02ld", cd.year % 100);
|
798
798
|
break;
|
799
799
|
case 'G':
|
800
|
-
cp += sprintf(str + cp, "%
|
800
|
+
cp += sprintf(str + cp, "%04ld", cd.year);
|
801
801
|
break;
|
802
802
|
case 'H':
|
803
|
-
cp += sprintf(str + cp, "%
|
803
|
+
cp += sprintf(str + cp, "%02d", (int)d->hour);
|
804
804
|
break;
|
805
805
|
case 'I':
|
806
|
-
cp += sprintf(str + cp, "%
|
806
|
+
cp += sprintf(str + cp, "%02d", (int)((d->hour == 12 || d->hour == 0) ? 12 : d->hour % 12));
|
807
807
|
break;
|
808
808
|
case 'j':
|
809
|
-
cp += sprintf(str + cp, "%
|
809
|
+
cp += sprintf(str + cp, "%03ld", rhrd__ordinal_day(d->year, d->month, d->day));
|
810
810
|
break;
|
811
811
|
case 'k':
|
812
|
-
cp += sprintf(str + cp, "%
|
812
|
+
cp += sprintf(str + cp, "%2d", (int)(d->hour));
|
813
813
|
break;
|
814
814
|
case 'l':
|
815
|
-
cp += sprintf(str + cp, "%
|
815
|
+
cp += sprintf(str + cp, "%2d", (int)((d->hour == 12 || d->hour == 0) ? 12 : d->hour % 12));
|
816
816
|
break;
|
817
817
|
case 'L':
|
818
818
|
cp += sprintf(str + cp, "%03" PRId64, (d->nanos % RHR_NANOS_PER_SECOND)/1000000);
|
819
819
|
break;
|
820
820
|
case 'm':
|
821
|
-
cp += sprintf(str + cp, "%
|
821
|
+
cp += sprintf(str + cp, "%02d", (int)(d->month));
|
822
822
|
break;
|
823
823
|
case 'M':
|
824
|
-
cp += sprintf(str + cp, "%
|
824
|
+
cp += sprintf(str + cp, "%02d", (int)(d->minute));
|
825
825
|
break;
|
826
826
|
case 'N':
|
827
827
|
cp += sprintf(str + cp, "%09" PRId64, (d->nanos % RHR_NANOS_PER_SECOND));
|
@@ -839,60 +839,60 @@ VALUE rhrd__strftime(rhrdt_t *d, const char * fmt, int fmt_len) {
|
|
839
839
|
cp += sprintf(str + cp, "%" PRId64, rhrd__jd_to_unix((long long)d->jd) * 1000 + d->nanos/RHR_NANOS_PER_MILLISECOND - d->offset * 60000);
|
840
840
|
break;
|
841
841
|
case 'r':
|
842
|
-
cp += sprintf(str + cp, "%
|
842
|
+
cp += sprintf(str + cp, "%2d:%02d:%02d %s", (int)((d->hour == 12 || d->hour == 0) ? 12 : d->hour % 12), (int)d->minute, (int)d->second, d->hour >= 12 ? "PM" : "AM");
|
843
843
|
break;
|
844
844
|
case 'R':
|
845
|
-
cp += sprintf(str + cp, "%
|
845
|
+
cp += sprintf(str + cp, "%02d:%02d", (int)d->hour, (int)d->minute);
|
846
846
|
break;
|
847
847
|
case 's':
|
848
848
|
cp += sprintf(str + cp, "%" PRId64, rhrd__jd_to_unix((long long)d->jd) + d->nanos/RHR_NANOS_PER_SECOND - d->offset * 60);
|
849
849
|
break;
|
850
850
|
case 'S':
|
851
|
-
cp += sprintf(str + cp, "%
|
851
|
+
cp += sprintf(str + cp, "%02d", (int)d->second);
|
852
852
|
break;
|
853
853
|
case 't':
|
854
854
|
cp += sprintf(str + cp, "\t");
|
855
855
|
break;
|
856
856
|
case 'X':
|
857
857
|
case 'T':
|
858
|
-
cp += sprintf(str + cp, "%
|
858
|
+
cp += sprintf(str + cp, "%02d:%02d:%02d", (int)d->hour, (int)d->minute, (int)d->second);
|
859
859
|
break;
|
860
860
|
case 'u':
|
861
|
-
cp += sprintf(str + cp, "%
|
861
|
+
cp += sprintf(str + cp, "%d", (int)cd.day);
|
862
862
|
break;
|
863
863
|
case 'U':
|
864
|
-
cp += sprintf(str + cp, "%
|
864
|
+
cp += sprintf(str + cp, "%ld", rhrd__jd_to_weeknum(d->jd, 0));
|
865
865
|
break;
|
866
866
|
case 'v':
|
867
|
-
cp += sprintf(str + cp, "%
|
867
|
+
cp += sprintf(str + cp, "%2d-%s-%04ld", (int)d->day, rhrd__abbr_month_names[d->month], d->year);
|
868
868
|
break;
|
869
869
|
case 'V':
|
870
|
-
cp += sprintf(str + cp, "%
|
870
|
+
cp += sprintf(str + cp, "%02d", (int)cd.month);
|
871
871
|
break;
|
872
872
|
case 'w':
|
873
|
-
cp += sprintf(str + cp, "%
|
873
|
+
cp += sprintf(str + cp, "%ld", rhrd__jd_to_wday(d->jd));
|
874
874
|
break;
|
875
875
|
case 'W':
|
876
|
-
cp += sprintf(str + cp, "%
|
876
|
+
cp += sprintf(str + cp, "%ld", rhrd__jd_to_weeknum(d->jd, 1));
|
877
877
|
break;
|
878
878
|
case 'D':
|
879
879
|
case 'x':
|
880
|
-
cp += sprintf(str + cp, "%
|
880
|
+
cp += sprintf(str + cp, "%02d/%02d/%02ld", (int)d->month, (int)d->day, d->year % 100);
|
881
881
|
break;
|
882
882
|
case 'y':
|
883
|
-
cp += sprintf(str + cp, "%
|
883
|
+
cp += sprintf(str + cp, "%02ld", d->year % 100);
|
884
884
|
break;
|
885
885
|
case 'Y':
|
886
|
-
cp += sprintf(str + cp, "%
|
886
|
+
cp += sprintf(str + cp, "%04ld", d->year);
|
887
887
|
break;
|
888
888
|
case 'z':
|
889
|
-
cp += sprintf(str + cp, "%+
|
889
|
+
cp += sprintf(str + cp, "%+03d%02d", d->offset/60, abs(d->offset % 60));
|
890
890
|
break;
|
891
891
|
case 'Z':
|
892
|
-
cp += sprintf(str + cp, "%+
|
892
|
+
cp += sprintf(str + cp, "%+03d:%02d", d->offset/60, abs(d->offset % 60));
|
893
893
|
break;
|
894
894
|
case '+':
|
895
|
-
cp += sprintf(str + cp, "%s %s %
|
895
|
+
cp += sprintf(str + cp, "%s %s %2d %02d:%02d:%02d %+03d:%02d %04ld", rhrd__abbr_day_names[rhrd__jd_to_wday(d->jd)], rhrd__abbr_month_names[d->month], (int)d->day, (int)d->hour, (int)d->minute, (int)d->second, d->offset/60, abs(d->offset % 60), d->year);
|
896
896
|
break;
|
897
897
|
default:
|
898
898
|
str[cp] = c;
|
@@ -1509,7 +1509,7 @@ static VALUE rhrd_s__strptime(int argc, VALUE *argv, VALUE klass) {
|
|
1509
1509
|
case 1:
|
1510
1510
|
break;
|
1511
1511
|
default:
|
1512
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
1512
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
1513
1513
|
break;
|
1514
1514
|
}
|
1515
1515
|
|
@@ -1557,12 +1557,12 @@ static VALUE rhrd_s_civil(int argc, VALUE *argv, VALUE klass) {
|
|
1557
1557
|
d->flags = RHR_HAVE_JD;
|
1558
1558
|
return rd;
|
1559
1559
|
default:
|
1560
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1560
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 4", argc);
|
1561
1561
|
break;
|
1562
1562
|
}
|
1563
1563
|
|
1564
1564
|
if (!rhrd__valid_civil(d, year, month, day, RHR_OVERLIMIT_RAISE)) {
|
1565
|
-
rb_raise(rb_eArgError, "invalid date (year: %
|
1565
|
+
rb_raise(rb_eArgError, "invalid date (year: %ld, month: %ld, day: %ld)", year, month, day);
|
1566
1566
|
}
|
1567
1567
|
return rd;
|
1568
1568
|
}
|
@@ -1606,12 +1606,12 @@ static VALUE rhrd_s_commercial(int argc, VALUE *argv, VALUE klass) {
|
|
1606
1606
|
break;
|
1607
1607
|
#endif
|
1608
1608
|
default:
|
1609
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1609
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 4", argc);
|
1610
1610
|
break;
|
1611
1611
|
}
|
1612
1612
|
|
1613
1613
|
if(!rhrd__valid_commercial(d, cwyear, cweek, cwday, RHR_OVERLIMIT_RAISE)) {
|
1614
|
-
rb_raise(rb_eArgError, "invalid date (cwyear: %
|
1614
|
+
rb_raise(rb_eArgError, "invalid date (cwyear: %ld, cweek: %ld, cwday: %ld)", cwyear, cweek, cwday);
|
1615
1615
|
}
|
1616
1616
|
return rd;
|
1617
1617
|
}
|
@@ -1645,7 +1645,7 @@ static VALUE rhrd_s_jd (int argc, VALUE *argv, VALUE klass) {
|
|
1645
1645
|
d->jd = NUM2LONG(argv[0]);
|
1646
1646
|
break;
|
1647
1647
|
default:
|
1648
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1648
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 2", argc);
|
1649
1649
|
break;
|
1650
1650
|
}
|
1651
1651
|
RHR_CHECK_JD(d)
|
@@ -1683,7 +1683,7 @@ static VALUE rhrd_s_new_b(int argc, VALUE *argv, VALUE klass) {
|
|
1683
1683
|
d->jd = NUM2LONG(argv[0]);
|
1684
1684
|
break;
|
1685
1685
|
default:
|
1686
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1686
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 3", argc);
|
1687
1687
|
break;
|
1688
1688
|
}
|
1689
1689
|
RHR_CHECK_JD(d)
|
@@ -1713,14 +1713,14 @@ static VALUE rhrd_s_ordinal(int argc, VALUE *argv, VALUE klass) {
|
|
1713
1713
|
case 1:
|
1714
1714
|
year = NUM2LONG(argv[0]);
|
1715
1715
|
if(!rhrd__valid_ordinal(d, year, day, RHR_OVERLIMIT_RAISE)) {
|
1716
|
-
rb_raise(rb_eArgError, "invalid date (year: %
|
1716
|
+
rb_raise(rb_eArgError, "invalid date (year: %ld, yday: %ld)", year, day);
|
1717
1717
|
}
|
1718
1718
|
break;
|
1719
1719
|
case 0:
|
1720
1720
|
d->flags = RHR_HAVE_JD;
|
1721
1721
|
return rd;
|
1722
1722
|
default:
|
1723
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1723
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 3", argc);
|
1724
1724
|
break;
|
1725
1725
|
}
|
1726
1726
|
|
@@ -1754,7 +1754,7 @@ static VALUE rhrd_s_parse(int argc, VALUE *argv, VALUE klass) {
|
|
1754
1754
|
case 3:
|
1755
1755
|
return rhrd__from_hash(klass, rb_funcall(klass, rhrd_id__parse, 2, argv[0], argv[1]));
|
1756
1756
|
default:
|
1757
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
1757
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
1758
1758
|
break;
|
1759
1759
|
}
|
1760
1760
|
}
|
@@ -1786,7 +1786,7 @@ static VALUE rhrd_s_strptime(int argc, VALUE *argv, VALUE klass) {
|
|
1786
1786
|
argc = 2;
|
1787
1787
|
break;
|
1788
1788
|
default:
|
1789
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
1789
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
1790
1790
|
break;
|
1791
1791
|
}
|
1792
1792
|
|
@@ -1812,7 +1812,7 @@ static VALUE rhrd_s_today(int argc, VALUE *argv, VALUE klass) {
|
|
1812
1812
|
case 1:
|
1813
1813
|
break;
|
1814
1814
|
default:
|
1815
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1815
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
1816
1816
|
break;
|
1817
1817
|
}
|
1818
1818
|
|
@@ -1848,7 +1848,7 @@ static VALUE rhrd_s_valid_civil_q(int argc, VALUE *argv, VALUE klass) {
|
|
1848
1848
|
}
|
1849
1849
|
break;
|
1850
1850
|
default:
|
1851
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1851
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 4", argc);
|
1852
1852
|
break;
|
1853
1853
|
}
|
1854
1854
|
|
@@ -1888,7 +1888,7 @@ static VALUE rhrd_s_valid_commercial_q(int argc, VALUE *argv, VALUE klass) {
|
|
1888
1888
|
}
|
1889
1889
|
break;
|
1890
1890
|
default:
|
1891
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1891
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 4", argc);
|
1892
1892
|
break;
|
1893
1893
|
}
|
1894
1894
|
|
@@ -1913,7 +1913,7 @@ static VALUE rhrd_s_valid_jd_q(int argc, VALUE *argv, VALUE klass) {
|
|
1913
1913
|
case 2:
|
1914
1914
|
break;
|
1915
1915
|
default:
|
1916
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1916
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 2", argc);
|
1917
1917
|
break;
|
1918
1918
|
}
|
1919
1919
|
|
@@ -1952,7 +1952,7 @@ static VALUE rhrd_s_valid_ordinal_q(int argc, VALUE *argv, VALUE klass) {
|
|
1952
1952
|
}
|
1953
1953
|
break;
|
1954
1954
|
default:
|
1955
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1955
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 3", argc);
|
1956
1956
|
break;
|
1957
1957
|
}
|
1958
1958
|
|
@@ -2088,7 +2088,7 @@ static VALUE rhrd_asctime(VALUE self) {
|
|
2088
2088
|
RHR_FILL_JD(d)
|
2089
2089
|
|
2090
2090
|
s = rb_str_buf_new(128);
|
2091
|
-
len = snprintf(RSTRING_PTR(s), 128, "%s %s %
|
2091
|
+
len = snprintf(RSTRING_PTR(s), 128, "%s %s %2d 00:00:00 %04ld",
|
2092
2092
|
rhrd__abbr_day_names[rhrd__jd_to_wday(d->jd)],
|
2093
2093
|
rhrd__abbr_month_names[d->month],
|
2094
2094
|
(int)d->day,
|
@@ -2336,7 +2336,7 @@ static VALUE rhrd_inspect(VALUE self) {
|
|
2336
2336
|
RHR_FILL_CIVIL(d)
|
2337
2337
|
|
2338
2338
|
s = rb_str_buf_new(128);
|
2339
|
-
len = snprintf(RSTRING_PTR(s), 128, "#<Date %
|
2339
|
+
len = snprintf(RSTRING_PTR(s), 128, "#<Date %04ld-%02d-%02d>",
|
2340
2340
|
d->year, (int)d->month, (int)d->day);
|
2341
2341
|
if (len == -1 || len > 127) {
|
2342
2342
|
rb_raise(rb_eNoMemError, "in Date#inspect (in snprintf)");
|
@@ -2457,7 +2457,7 @@ static VALUE rhrd_new_start(int argc, VALUE *argv, VALUE self) {
|
|
2457
2457
|
case 1:
|
2458
2458
|
break;
|
2459
2459
|
default:
|
2460
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2460
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
2461
2461
|
break;
|
2462
2462
|
}
|
2463
2463
|
|
@@ -2518,7 +2518,7 @@ static VALUE rhrd_step(int argc, VALUE *argv, VALUE self) {
|
|
2518
2518
|
}
|
2519
2519
|
break;
|
2520
2520
|
default:
|
2521
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2521
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 2", argc);
|
2522
2522
|
break;
|
2523
2523
|
}
|
2524
2524
|
rlimit = argv[0];
|
@@ -2642,7 +2642,7 @@ static VALUE rhrd_strftime(int argc, VALUE *argv, VALUE self) {
|
|
2642
2642
|
r = rb_str_to_str(argv[0]);
|
2643
2643
|
break;
|
2644
2644
|
default:
|
2645
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2645
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
2646
2646
|
break;
|
2647
2647
|
}
|
2648
2648
|
|
@@ -2674,7 +2674,7 @@ static VALUE rhrd_to_s(VALUE self) {
|
|
2674
2674
|
RHR_FILL_CIVIL(d)
|
2675
2675
|
|
2676
2676
|
s = rb_str_buf_new(128);
|
2677
|
-
len = snprintf(RSTRING_PTR(s), 128, "%
|
2677
|
+
len = snprintf(RSTRING_PTR(s), 128, "%04ld-%02d-%02d",
|
2678
2678
|
d->year, (int)d->month, (int)d->day);
|
2679
2679
|
if (len == -1 || len > 127) {
|
2680
2680
|
rb_raise(rb_eNoMemError, "in Date#to_s (in snprintf)");
|
@@ -3040,7 +3040,7 @@ static VALUE rhrd_s_httpdate(int argc, VALUE *argv, VALUE klass) {
|
|
3040
3040
|
case 2:
|
3041
3041
|
return rhrd__from_hash(klass, rb_funcall(klass, rhrd_id__httpdate, 1, argv[0]));
|
3042
3042
|
default:
|
3043
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
3043
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
3044
3044
|
break;
|
3045
3045
|
}
|
3046
3046
|
}
|
@@ -3074,7 +3074,7 @@ static VALUE rhrd_s_iso8601(int argc, VALUE *argv, VALUE klass) {
|
|
3074
3074
|
case 2:
|
3075
3075
|
return rhrd__from_hash(klass, rb_funcall(klass, rhrd_id__iso8601, 1, argv[0]));
|
3076
3076
|
default:
|
3077
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
3077
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
3078
3078
|
break;
|
3079
3079
|
}
|
3080
3080
|
}
|
@@ -3108,7 +3108,7 @@ static VALUE rhrd_s_jisx0301(int argc, VALUE *argv, VALUE klass) {
|
|
3108
3108
|
case 2:
|
3109
3109
|
return rhrd__from_hash(klass, rb_funcall(klass, rhrd_id__jisx0301, 1, argv[0]));
|
3110
3110
|
default:
|
3111
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
3111
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
3112
3112
|
break;
|
3113
3113
|
}
|
3114
3114
|
}
|
@@ -3142,7 +3142,7 @@ static VALUE rhrd_s_rfc2822(int argc, VALUE *argv, VALUE klass) {
|
|
3142
3142
|
case 2:
|
3143
3143
|
return rhrd__from_hash(klass, rb_funcall(klass, rhrd_id__rfc2822, 1, argv[0]));
|
3144
3144
|
default:
|
3145
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
3145
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
3146
3146
|
break;
|
3147
3147
|
}
|
3148
3148
|
}
|
@@ -3176,7 +3176,7 @@ static VALUE rhrd_s_rfc3339(int argc, VALUE *argv, VALUE klass) {
|
|
3176
3176
|
case 2:
|
3177
3177
|
return rhrd__from_hash(klass, rb_funcall(klass, rhrd_id__rfc3339, 1, argv[0]));
|
3178
3178
|
default:
|
3179
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
3179
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
3180
3180
|
break;
|
3181
3181
|
}
|
3182
3182
|
}
|
@@ -3210,7 +3210,7 @@ static VALUE rhrd_s_xmlschema(int argc, VALUE *argv, VALUE klass) {
|
|
3210
3210
|
case 2:
|
3211
3211
|
return rhrd__from_hash(klass, rb_funcall(klass, rhrd_id__xmlschema, 1, argv[0]));
|
3212
3212
|
default:
|
3213
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
3213
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
3214
3214
|
break;
|
3215
3215
|
}
|
3216
3216
|
}
|
@@ -3235,7 +3235,7 @@ static VALUE rhrd_httpdate(VALUE self) {
|
|
3235
3235
|
RHR_FILL_JD(d)
|
3236
3236
|
|
3237
3237
|
s = rb_str_buf_new(128);
|
3238
|
-
len = snprintf(RSTRING_PTR(s), 128, "%s, %
|
3238
|
+
len = snprintf(RSTRING_PTR(s), 128, "%s, %02d %s %04ld 00:00:00 GMT",
|
3239
3239
|
rhrd__abbr_day_names[rhrd__jd_to_wday(d->jd)],
|
3240
3240
|
(int)d->day,
|
3241
3241
|
rhrd__abbr_month_names[d->month],
|
@@ -3268,7 +3268,7 @@ static VALUE rhrd_jisx0301(VALUE self) {
|
|
3268
3268
|
|
3269
3269
|
s = rb_str_buf_new(128);
|
3270
3270
|
if (d->jd < 2405160) {
|
3271
|
-
len = snprintf(RSTRING_PTR(s), 128, "%
|
3271
|
+
len = snprintf(RSTRING_PTR(s), 128, "%04ld-%02d-%02d", d->year, (int)d->month, (int)d->day);
|
3272
3272
|
} else {
|
3273
3273
|
if (d->jd >= 2447535) {
|
3274
3274
|
c = 'H';
|
@@ -3283,7 +3283,7 @@ static VALUE rhrd_jisx0301(VALUE self) {
|
|
3283
3283
|
c = 'M';
|
3284
3284
|
year = d->year - 1867;
|
3285
3285
|
}
|
3286
|
-
len = snprintf(RSTRING_PTR(s), 128, "%c%
|
3286
|
+
len = snprintf(RSTRING_PTR(s), 128, "%c%02ld.%02d.%02d", c, year, (int)d->month, (int)d->day);
|
3287
3287
|
}
|
3288
3288
|
if (len == -1 || len > 127) {
|
3289
3289
|
rb_raise(rb_eNoMemError, "in Date#jisx0301 (in snprintf)");
|
@@ -3315,7 +3315,7 @@ static VALUE rhrd_next_day(int argc, VALUE *argv, VALUE self) {
|
|
3315
3315
|
i = NUM2LONG(argv[0]);
|
3316
3316
|
break;
|
3317
3317
|
default:
|
3318
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3318
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
3319
3319
|
break;
|
3320
3320
|
}
|
3321
3321
|
|
@@ -3345,7 +3345,7 @@ static VALUE rhrd_next_month(int argc, VALUE *argv, VALUE self) {
|
|
3345
3345
|
i = NUM2LONG(argv[0]);
|
3346
3346
|
break;
|
3347
3347
|
default:
|
3348
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3348
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
3349
3349
|
break;
|
3350
3350
|
}
|
3351
3351
|
|
@@ -3375,7 +3375,7 @@ static VALUE rhrd_next_year(int argc, VALUE *argv, VALUE self) {
|
|
3375
3375
|
i = NUM2LONG(argv[0]);
|
3376
3376
|
break;
|
3377
3377
|
default:
|
3378
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3378
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
3379
3379
|
break;
|
3380
3380
|
}
|
3381
3381
|
|
@@ -3405,7 +3405,7 @@ static VALUE rhrd_prev_day(int argc, VALUE *argv, VALUE self) {
|
|
3405
3405
|
i = -NUM2LONG(argv[0]);
|
3406
3406
|
break;
|
3407
3407
|
default:
|
3408
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3408
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
3409
3409
|
break;
|
3410
3410
|
}
|
3411
3411
|
|
@@ -3435,7 +3435,7 @@ static VALUE rhrd_prev_month(int argc, VALUE *argv, VALUE self) {
|
|
3435
3435
|
i = -NUM2LONG(argv[0]);
|
3436
3436
|
break;
|
3437
3437
|
default:
|
3438
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3438
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
3439
3439
|
break;
|
3440
3440
|
}
|
3441
3441
|
|
@@ -3465,7 +3465,7 @@ static VALUE rhrd_prev_year(int argc, VALUE *argv, VALUE self) {
|
|
3465
3465
|
i = -NUM2LONG(argv[0]);
|
3466
3466
|
break;
|
3467
3467
|
default:
|
3468
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3468
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
3469
3469
|
break;
|
3470
3470
|
}
|
3471
3471
|
|
@@ -3490,7 +3490,7 @@ static VALUE rhrd_rfc2822(VALUE self) {
|
|
3490
3490
|
RHR_FILL_JD(d)
|
3491
3491
|
|
3492
3492
|
s = rb_str_buf_new(128);
|
3493
|
-
len = snprintf(RSTRING_PTR(s), 128, "%s, %
|
3493
|
+
len = snprintf(RSTRING_PTR(s), 128, "%s, %d %s %04ld 00:00:00 +0000",
|
3494
3494
|
rhrd__abbr_day_names[rhrd__jd_to_wday(d->jd)],
|
3495
3495
|
(int)d->day,
|
3496
3496
|
rhrd__abbr_month_names[d->month],
|
@@ -3519,7 +3519,7 @@ static VALUE rhrd_rfc3339(VALUE self) {
|
|
3519
3519
|
RHR_FILL_CIVIL(d)
|
3520
3520
|
|
3521
3521
|
s = rb_str_buf_new(128);
|
3522
|
-
len = snprintf(RSTRING_PTR(s), 128, "%
|
3522
|
+
len = snprintf(RSTRING_PTR(s), 128, "%04ld-%02d-%02dT00:00:00+00:00", d->year, (int)d->month, (int)d->day);
|
3523
3523
|
if (len == -1 || len > 127) {
|
3524
3524
|
rb_raise(rb_eNoMemError, "in Date#rfc3339 (in snprintf)");
|
3525
3525
|
}
|
@@ -3709,7 +3709,7 @@ static VALUE rhrd_s_ajd_to_jd(int argc, VALUE *argv, VALUE klass) {
|
|
3709
3709
|
case 2:
|
3710
3710
|
break;
|
3711
3711
|
default:
|
3712
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3712
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 2", argc);
|
3713
3713
|
break;
|
3714
3714
|
}
|
3715
3715
|
|
@@ -3746,7 +3746,7 @@ static VALUE rhrd_s_civil_to_jd(int argc, VALUE *argv, VALUE klass) {
|
|
3746
3746
|
d.day = (unsigned char)NUM2LONG(argv[2]);
|
3747
3747
|
break;
|
3748
3748
|
default:
|
3749
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3749
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 4", argc);
|
3750
3750
|
break;
|
3751
3751
|
}
|
3752
3752
|
d.flags = RHR_HAVE_CIVIL;
|
@@ -3771,7 +3771,7 @@ static VALUE rhrd_s_commercial_to_jd(int argc, VALUE *argv, VALUE klass) {
|
|
3771
3771
|
jd = rhrd__commercial_to_jd(NUM2LONG(argv[0]), NUM2LONG(argv[1]), NUM2LONG(argv[2]));
|
3772
3772
|
break;
|
3773
3773
|
default:
|
3774
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3774
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 4", argc);
|
3775
3775
|
break;
|
3776
3776
|
}
|
3777
3777
|
|
@@ -3830,7 +3830,7 @@ static VALUE rhrd_s_jd_to_ajd(int argc, VALUE *argv, VALUE klass) {
|
|
3830
3830
|
case 3:
|
3831
3831
|
break;
|
3832
3832
|
default:
|
3833
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3833
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 3", argc);
|
3834
3834
|
break;
|
3835
3835
|
}
|
3836
3836
|
return argv[0];
|
@@ -3853,7 +3853,7 @@ static VALUE rhrd_s_jd_to_civil(int argc, VALUE *argv, VALUE klass) {
|
|
3853
3853
|
d.jd = NUM2LONG(argv[0]);
|
3854
3854
|
break;
|
3855
3855
|
default:
|
3856
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3856
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 3", argc);
|
3857
3857
|
break;
|
3858
3858
|
}
|
3859
3859
|
RHR_FILL_CIVIL(&d)
|
@@ -3877,7 +3877,7 @@ static VALUE rhrd_s_jd_to_commercial(int argc, VALUE *argv, VALUE klass) {
|
|
3877
3877
|
d.jd = NUM2LONG(argv[0]);
|
3878
3878
|
break;
|
3879
3879
|
default:
|
3880
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3880
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 3", argc);
|
3881
3881
|
break;
|
3882
3882
|
}
|
3883
3883
|
rhrd__fill_commercial(&d);
|
@@ -3922,7 +3922,7 @@ static VALUE rhrd_s_jd_to_ordinal(int argc, VALUE *argv, VALUE klass) {
|
|
3922
3922
|
d.jd = NUM2LONG(argv[0]);
|
3923
3923
|
break;
|
3924
3924
|
default:
|
3925
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3925
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 3", argc);
|
3926
3926
|
break;
|
3927
3927
|
}
|
3928
3928
|
RHR_FILL_CIVIL(&d)
|
@@ -3991,7 +3991,7 @@ static VALUE rhrd_s_ordinal_to_jd(int argc, VALUE *argv, VALUE klass) {
|
|
3991
3991
|
return LONG2NUM(rhrd__ymd_to_jd(NUM2LONG(argv[0]), 1, NUM2LONG(argv[1])));
|
3992
3992
|
break;
|
3993
3993
|
default:
|
3994
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
3994
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 3", argc);
|
3995
3995
|
break;
|
3996
3996
|
}
|
3997
3997
|
}
|
data/ext/date_ext/date_ext.h
CHANGED
@@ -133,8 +133,8 @@ so that no calculations can overflow.
|
|
133
133
|
|
134
134
|
#define RHR_SPACE_SHIP(x, l, r) if (l < r) { x = -1; } else if (l == r) { x = 0; } else { x = 1; }
|
135
135
|
|
136
|
-
#define RHR_CHECK_JD(d) if ((d->jd > RHR_JD_MAX) || (d->jd < RHR_JD_MIN)) { rb_raise(rb_eRangeError, "date out of range: jd = %
|
137
|
-
#define RHR_CHECK_CIVIL(d) if (!rhrd__valid_civil_limits(d->year, d->month, d->day)) { rb_raise(rb_eRangeError, "date out of range: year = %
|
136
|
+
#define RHR_CHECK_JD(d) if ((d->jd > RHR_JD_MAX) || (d->jd < RHR_JD_MIN)) { rb_raise(rb_eRangeError, "date out of range: jd = %ld", d->jd);}
|
137
|
+
#define RHR_CHECK_CIVIL(d) if (!rhrd__valid_civil_limits(d->year, d->month, d->day)) { rb_raise(rb_eRangeError, "date out of range: year = %ld, month = %d, day = %d", d->year, (int)d->month, (int)d->day);}
|
138
138
|
|
139
139
|
#define RHR_CACHED_IV(self, iv) VALUE v = rb_ivar_get(self, iv); if (RTEST(v)) {return v;}
|
140
140
|
|
data/ext/date_ext/datetime.c
CHANGED
@@ -102,7 +102,7 @@ int rhrdt__valid_civil(rhrdt_t *dt, long year, long month, long day) {
|
|
102
102
|
}
|
103
103
|
|
104
104
|
if(!rhrd__valid_civil_limits(year, month, day)) {
|
105
|
-
rb_raise(rb_eRangeError, "datetime out of range: year = %
|
105
|
+
rb_raise(rb_eRangeError, "datetime out of range: year = %ld, month = %ld, day = %ld", year, month, day);
|
106
106
|
}
|
107
107
|
|
108
108
|
dt->year = year;
|
@@ -607,7 +607,7 @@ static VALUE rhrdt_s__strptime(int argc, VALUE *argv, VALUE klass) {
|
|
607
607
|
case 1:
|
608
608
|
break;
|
609
609
|
default:
|
610
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
610
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
611
611
|
break;
|
612
612
|
}
|
613
613
|
|
@@ -670,12 +670,12 @@ static VALUE rhrdt_s_civil(int argc, VALUE *argv, VALUE klass) {
|
|
670
670
|
year = NUM2LONG(argv[0]);
|
671
671
|
break;
|
672
672
|
default:
|
673
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
673
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 8", argc);
|
674
674
|
break;
|
675
675
|
}
|
676
676
|
|
677
677
|
if (!rhrdt__valid_civil(dt, year, month, day)) {
|
678
|
-
rb_raise(rb_eArgError, "invalid date (year: %
|
678
|
+
rb_raise(rb_eArgError, "invalid date (year: %ld, month: %ld, day: %ld)", year, month, day);
|
679
679
|
}
|
680
680
|
rhrdt__set_time_nanos(dt, hour, minute, second, nanos, offset);
|
681
681
|
return rdt;
|
@@ -734,11 +734,11 @@ static VALUE rhrdt_s_commercial(int argc, VALUE *argv, VALUE klass) {
|
|
734
734
|
break;
|
735
735
|
#endif
|
736
736
|
default:
|
737
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
737
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 8", argc);
|
738
738
|
break;
|
739
739
|
}
|
740
740
|
if(!rhrdt__valid_commercial(dt, cwyear, cweek, cwday)) {
|
741
|
-
rb_raise(rb_eArgError, "invalid date (cwyear: %
|
741
|
+
rb_raise(rb_eArgError, "invalid date (cwyear: %ld, cweek: %ld, cwday: %ld)", cwyear, cweek, cwday);
|
742
742
|
}
|
743
743
|
rhrdt__set_time_nanos(dt, hour, minute, second, nanos, offset);
|
744
744
|
return rdt;
|
@@ -782,7 +782,7 @@ static VALUE rhrdt_s_jd(int argc, VALUE *argv, VALUE klass) {
|
|
782
782
|
dt->jd = NUM2LONG(argv[0]);
|
783
783
|
break;
|
784
784
|
default:
|
785
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
785
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 6", argc);
|
786
786
|
break;
|
787
787
|
}
|
788
788
|
|
@@ -835,7 +835,7 @@ static VALUE rhrdt_s_new_b(int argc, VALUE *argv, VALUE klass) {
|
|
835
835
|
dt->flags = RHR_HAVE_JD | RHR_HAVE_NANOS;
|
836
836
|
break;
|
837
837
|
default:
|
838
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
838
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 3", argc);
|
839
839
|
break;
|
840
840
|
}
|
841
841
|
|
@@ -859,7 +859,7 @@ static VALUE rhrdt_s_now(int argc, VALUE *argv, VALUE klass) {
|
|
859
859
|
case 1:
|
860
860
|
break;
|
861
861
|
default:
|
862
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
862
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
863
863
|
break;
|
864
864
|
}
|
865
865
|
|
@@ -908,13 +908,13 @@ static VALUE rhrdt_s_ordinal(int argc, VALUE *argv, VALUE klass) {
|
|
908
908
|
dt->flags = RHR_HAVE_JD | RHR_HAVE_NANOS | RHR_HAVE_HMS;
|
909
909
|
return rdt;
|
910
910
|
default:
|
911
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
911
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 7", argc);
|
912
912
|
break;
|
913
913
|
}
|
914
914
|
|
915
915
|
if(!rhrdt__valid_ordinal(dt, year, day)) {
|
916
916
|
RHR_CHECK_JD(dt)
|
917
|
-
rb_raise(rb_eArgError, "invalid date (year: %
|
917
|
+
rb_raise(rb_eArgError, "invalid date (year: %ld, yday: %ld)", year, day);
|
918
918
|
}
|
919
919
|
rhrdt__set_time_nanos(dt, hour, minute, second, nanos, offset);
|
920
920
|
return rdt;
|
@@ -948,7 +948,7 @@ static VALUE rhrdt_s_parse(int argc, VALUE *argv, VALUE klass) {
|
|
948
948
|
rhrdt__fill_from_hash(dt, rb_funcall(klass, rhrd_id__parse, 2, argv[0], argv[1]));
|
949
949
|
break;
|
950
950
|
default:
|
951
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
951
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
952
952
|
break;
|
953
953
|
}
|
954
954
|
|
@@ -980,7 +980,7 @@ static VALUE rhrdt_s_strptime(int argc, VALUE *argv, VALUE klass) {
|
|
980
980
|
case 2:
|
981
981
|
break;
|
982
982
|
default:
|
983
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
983
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
984
984
|
break;
|
985
985
|
}
|
986
986
|
|
@@ -1050,7 +1050,7 @@ static VALUE rhrdt_asctime(VALUE self) {
|
|
1050
1050
|
RHRDT_FILL_HMS(d)
|
1051
1051
|
|
1052
1052
|
s = rb_str_buf_new(128);
|
1053
|
-
len = snprintf(RSTRING_PTR(s), 128, "%s %s %
|
1053
|
+
len = snprintf(RSTRING_PTR(s), 128, "%s %s %2d %02d:%02d:%02d %04ld",
|
1054
1054
|
rhrd__abbr_day_names[rhrd__jd_to_wday(d->jd)],
|
1055
1055
|
rhrd__abbr_month_names[d->month],
|
1056
1056
|
(int)d->day, (int)d->hour, (int)d->minute, (int)d->second,
|
@@ -1303,7 +1303,7 @@ static VALUE rhrdt_inspect(VALUE self) {
|
|
1303
1303
|
RHRDT_FILL_HMS(dt)
|
1304
1304
|
|
1305
1305
|
s = rb_str_buf_new(128);
|
1306
|
-
len = snprintf(RSTRING_PTR(s), 128, "#<DateTime %
|
1306
|
+
len = snprintf(RSTRING_PTR(s), 128, "#<DateTime %04ld-%02d-%02dT%02d:%02d:%02d%+03d:%02d>",
|
1307
1307
|
dt->year, (int)dt->month, (int)dt->day, (int)dt->hour, (int)dt->minute, (int)dt->second, dt->offset/60, abs(dt->offset % 60));
|
1308
1308
|
if (len == -1 || len > 127) {
|
1309
1309
|
rb_raise(rb_eNoMemError, "in DateTime#inspect (in snprintf)");
|
@@ -1431,7 +1431,7 @@ static VALUE rhrdt_new_offset(int argc, VALUE *argv, VALUE self) {
|
|
1431
1431
|
offset= rhrdt__constructor_offset(rb_obj_class(self), argv[0]);
|
1432
1432
|
break;
|
1433
1433
|
default:
|
1434
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1434
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
1435
1435
|
break;
|
1436
1436
|
}
|
1437
1437
|
return rhrdt__new_offset(self, offset);
|
@@ -1560,7 +1560,7 @@ static VALUE rhrdt_step(int argc, VALUE *argv, VALUE self) {
|
|
1560
1560
|
}
|
1561
1561
|
break;
|
1562
1562
|
default:
|
1563
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1563
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 2", argc);
|
1564
1564
|
break;
|
1565
1565
|
}
|
1566
1566
|
rlimit = argv[0];
|
@@ -1648,7 +1648,7 @@ static VALUE rhrdt_strftime(int argc, VALUE *argv, VALUE self) {
|
|
1648
1648
|
r = rb_str_to_str(argv[0]);
|
1649
1649
|
break;
|
1650
1650
|
default:
|
1651
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
1651
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
1652
1652
|
break;
|
1653
1653
|
}
|
1654
1654
|
|
@@ -1677,7 +1677,7 @@ static VALUE rhrdt_to_s(VALUE self) {
|
|
1677
1677
|
RHRDT_FILL_HMS(dt)
|
1678
1678
|
|
1679
1679
|
s = rb_str_buf_new(128);
|
1680
|
-
len = snprintf(RSTRING_PTR(s), 128, "%
|
1680
|
+
len = snprintf(RSTRING_PTR(s), 128, "%04ld-%02d-%02dT%02d:%02d:%02d%+03d:%02d",
|
1681
1681
|
dt->year, (int)dt->month, (int)dt->day, (int)dt->hour, (int)dt->minute, (int)dt->second, dt->offset/60, abs(dt->offset % 60));
|
1682
1682
|
if (len == -1 || len > 127) {
|
1683
1683
|
rb_raise(rb_eNoMemError, "in DateTime#to_s (in snprintf)");
|
@@ -1769,7 +1769,7 @@ static VALUE rhrdt_zone(VALUE self) {
|
|
1769
1769
|
Data_Get_Struct(self, rhrdt_t, dt);
|
1770
1770
|
|
1771
1771
|
s = rb_str_buf_new(128);
|
1772
|
-
len = snprintf(RSTRING_PTR(s), 128, "%+
|
1772
|
+
len = snprintf(RSTRING_PTR(s), 128, "%+03d:%02d", dt->offset/60, abs(dt->offset % 60));
|
1773
1773
|
if (len == -1 || len > 127) {
|
1774
1774
|
rb_raise(rb_eNoMemError, "in DateTime#zone (in snprintf)");
|
1775
1775
|
}
|
@@ -1988,7 +1988,7 @@ long rhrdt__add_iso_time_format(rhrdt_t *dt, char *str, long len, long i) {
|
|
1988
1988
|
i = 9;
|
1989
1989
|
}
|
1990
1990
|
|
1991
|
-
l = snprintf(str + len, (size_t)(128 - len), "T%
|
1991
|
+
l = snprintf(str + len, (size_t)(128 - len), "T%02d:%02d:%02d", (int)dt->hour, (int)dt->minute, (int)dt->second);
|
1992
1992
|
if (l == -1 || l > 127) {
|
1993
1993
|
rb_raise(rb_eNoMemError, "in DateTime formatting method (in snprintf)");
|
1994
1994
|
}
|
@@ -2003,7 +2003,7 @@ long rhrdt__add_iso_time_format(rhrdt_t *dt, char *str, long len, long i) {
|
|
2003
2003
|
len += i + 1;
|
2004
2004
|
}
|
2005
2005
|
|
2006
|
-
l = snprintf(str + len, (size_t)(128 - len), "%+
|
2006
|
+
l = snprintf(str + len, (size_t)(128 - len), "%+03d:%02d", dt->offset/60, abs(dt->offset % 60));
|
2007
2007
|
if (l == -1 || l > 127) {
|
2008
2008
|
rb_raise(rb_eNoMemError, "in DateTime formatting method (in snprintf)");
|
2009
2009
|
}
|
@@ -2043,7 +2043,7 @@ static VALUE rhrdt_s_httpdate(int argc, VALUE *argv, VALUE klass) {
|
|
2043
2043
|
rhrdt__fill_from_hash(d, rb_funcall(klass, rhrd_id__httpdate, 1, argv[0]));
|
2044
2044
|
return rd;
|
2045
2045
|
default:
|
2046
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
2046
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
2047
2047
|
break;
|
2048
2048
|
}
|
2049
2049
|
}
|
@@ -2078,7 +2078,7 @@ static VALUE rhrdt_s_iso8601(int argc, VALUE *argv, VALUE klass) {
|
|
2078
2078
|
rhrdt__fill_from_hash(d, rb_funcall(klass, rhrd_id__iso8601, 1, argv[0]));
|
2079
2079
|
return rd;
|
2080
2080
|
default:
|
2081
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
2081
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
2082
2082
|
break;
|
2083
2083
|
}
|
2084
2084
|
}
|
@@ -2113,7 +2113,7 @@ static VALUE rhrdt_s_jisx0301(int argc, VALUE *argv, VALUE klass) {
|
|
2113
2113
|
rhrdt__fill_from_hash(d, rb_funcall(klass, rhrd_id__jisx0301, 1, argv[0]));
|
2114
2114
|
return rd;
|
2115
2115
|
default:
|
2116
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
2116
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
2117
2117
|
break;
|
2118
2118
|
}
|
2119
2119
|
}
|
@@ -2148,7 +2148,7 @@ static VALUE rhrdt_s_rfc2822(int argc, VALUE *argv, VALUE klass) {
|
|
2148
2148
|
rhrdt__fill_from_hash(d, rb_funcall(klass, rhrd_id__rfc2822, 1, argv[0]));
|
2149
2149
|
return rd;
|
2150
2150
|
default:
|
2151
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
2151
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
2152
2152
|
break;
|
2153
2153
|
}
|
2154
2154
|
}
|
@@ -2183,7 +2183,7 @@ static VALUE rhrdt_s_rfc3339(int argc, VALUE *argv, VALUE klass) {
|
|
2183
2183
|
rhrdt__fill_from_hash(d, rb_funcall(klass, rhrd_id__rfc3339, 1, argv[0]));
|
2184
2184
|
return rd;
|
2185
2185
|
default:
|
2186
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
2186
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
2187
2187
|
break;
|
2188
2188
|
}
|
2189
2189
|
}
|
@@ -2218,7 +2218,7 @@ static VALUE rhrdt_s_xmlschema(int argc, VALUE *argv, VALUE klass) {
|
|
2218
2218
|
rhrdt__fill_from_hash(d, rb_funcall(klass, rhrd_id__xmlschema, 1, argv[0]));
|
2219
2219
|
return rd;
|
2220
2220
|
default:
|
2221
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%
|
2221
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
2222
2222
|
break;
|
2223
2223
|
}
|
2224
2224
|
}
|
@@ -2245,7 +2245,7 @@ static VALUE rhrdt_httpdate(VALUE self) {
|
|
2245
2245
|
RHRDT_FILL_HMS(d)
|
2246
2246
|
|
2247
2247
|
s = rb_str_buf_new(128);
|
2248
|
-
len = snprintf(RSTRING_PTR(s), 128, "%s, %
|
2248
|
+
len = snprintf(RSTRING_PTR(s), 128, "%s, %02d %s %04ld %02d:%02d:%02d GMT",
|
2249
2249
|
rhrd__abbr_day_names[rhrd__jd_to_wday(d->jd)],
|
2250
2250
|
(int)d->day,
|
2251
2251
|
rhrd__abbr_month_names[d->month],
|
@@ -2288,14 +2288,14 @@ static VALUE rhrdt_iso8601(int argc, VALUE *argv, VALUE self) {
|
|
2288
2288
|
i = 0;
|
2289
2289
|
break;
|
2290
2290
|
default:
|
2291
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2291
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
2292
2292
|
break;
|
2293
2293
|
}
|
2294
2294
|
|
2295
2295
|
s = rb_str_buf_new(128);
|
2296
2296
|
str = RSTRING_PTR(s);
|
2297
2297
|
|
2298
|
-
len = snprintf(str, 128, "%
|
2298
|
+
len = snprintf(str, 128, "%04ld-%02d-%02d", dt->year, (int)dt->month, (int)dt->day);
|
2299
2299
|
if (len == -1 || len > 127) {
|
2300
2300
|
rb_raise(rb_eNoMemError, "in DateTime#to_s (in snprintf)");
|
2301
2301
|
}
|
@@ -2338,7 +2338,7 @@ static VALUE rhrdt_jisx0301(int argc, VALUE *argv, VALUE self) {
|
|
2338
2338
|
i = 0;
|
2339
2339
|
break;
|
2340
2340
|
default:
|
2341
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2341
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
2342
2342
|
break;
|
2343
2343
|
}
|
2344
2344
|
|
@@ -2346,7 +2346,7 @@ static VALUE rhrdt_jisx0301(int argc, VALUE *argv, VALUE self) {
|
|
2346
2346
|
str = RSTRING_PTR(s);
|
2347
2347
|
|
2348
2348
|
if (d->jd < 2405160) {
|
2349
|
-
len = snprintf(str, 128, "%
|
2349
|
+
len = snprintf(str, 128, "%04ld-%02d-%02d", d->year, (int)d->month, (int)d->day);
|
2350
2350
|
} else {
|
2351
2351
|
if (d->jd >= 2447535) {
|
2352
2352
|
c = 'H';
|
@@ -2361,7 +2361,7 @@ static VALUE rhrdt_jisx0301(int argc, VALUE *argv, VALUE self) {
|
|
2361
2361
|
c = 'M';
|
2362
2362
|
year = d->year - 1867;
|
2363
2363
|
}
|
2364
|
-
len = snprintf(RSTRING_PTR(s), 128, "%c%
|
2364
|
+
len = snprintf(RSTRING_PTR(s), 128, "%c%02ld.%02d.%02d", c, year, (int)d->month, (int)d->day);
|
2365
2365
|
}
|
2366
2366
|
if (len == -1 || len > 127) {
|
2367
2367
|
rb_raise(rb_eNoMemError, "in DateTime#jisx0301 (in snprintf)");
|
@@ -2395,7 +2395,7 @@ static VALUE rhrdt_next_day(int argc, VALUE *argv, VALUE self) {
|
|
2395
2395
|
i = NUM2LONG(argv[0]);
|
2396
2396
|
break;
|
2397
2397
|
default:
|
2398
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2398
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
2399
2399
|
break;
|
2400
2400
|
}
|
2401
2401
|
|
@@ -2426,7 +2426,7 @@ static VALUE rhrdt_next_month(int argc, VALUE *argv, VALUE self) {
|
|
2426
2426
|
i = NUM2LONG(argv[0]);
|
2427
2427
|
break;
|
2428
2428
|
default:
|
2429
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2429
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
2430
2430
|
break;
|
2431
2431
|
}
|
2432
2432
|
|
@@ -2457,7 +2457,7 @@ static VALUE rhrdt_next_year(int argc, VALUE *argv, VALUE self) {
|
|
2457
2457
|
i = NUM2LONG(argv[0]);
|
2458
2458
|
break;
|
2459
2459
|
default:
|
2460
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2460
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
2461
2461
|
break;
|
2462
2462
|
}
|
2463
2463
|
|
@@ -2488,7 +2488,7 @@ static VALUE rhrdt_prev_day(int argc, VALUE *argv, VALUE self) {
|
|
2488
2488
|
i = -NUM2LONG(argv[0]);
|
2489
2489
|
break;
|
2490
2490
|
default:
|
2491
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2491
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
2492
2492
|
break;
|
2493
2493
|
}
|
2494
2494
|
|
@@ -2519,7 +2519,7 @@ static VALUE rhrdt_prev_month(int argc, VALUE *argv, VALUE self) {
|
|
2519
2519
|
i = -NUM2LONG(argv[0]);
|
2520
2520
|
break;
|
2521
2521
|
default:
|
2522
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2522
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
2523
2523
|
break;
|
2524
2524
|
}
|
2525
2525
|
|
@@ -2550,7 +2550,7 @@ static VALUE rhrdt_prev_year(int argc, VALUE *argv, VALUE self) {
|
|
2550
2550
|
i = -NUM2LONG(argv[0]);
|
2551
2551
|
break;
|
2552
2552
|
default:
|
2553
|
-
rb_raise(rb_eArgError, "wrong number of arguments: %
|
2553
|
+
rb_raise(rb_eArgError, "wrong number of arguments: %d for 1", argc);
|
2554
2554
|
break;
|
2555
2555
|
}
|
2556
2556
|
|
@@ -2576,7 +2576,7 @@ static VALUE rhrdt_rfc2822(VALUE self) {
|
|
2576
2576
|
RHRDT_FILL_HMS(d)
|
2577
2577
|
|
2578
2578
|
s = rb_str_buf_new(128);
|
2579
|
-
len = snprintf(RSTRING_PTR(s), 128, "%s, %
|
2579
|
+
len = snprintf(RSTRING_PTR(s), 128, "%s, %d %s %04ld %02d:%02d:%02d %+03d%02d",
|
2580
2580
|
rhrd__abbr_day_names[rhrd__jd_to_wday(d->jd)],
|
2581
2581
|
(int)d->day,
|
2582
2582
|
rhrd__abbr_month_names[d->month],
|
data/lib/1.8/date_ext.so
CHANGED
Binary file
|
data/lib/1.9/date_ext.so
CHANGED
Binary file
|
data/lib/date.rb
CHANGED
@@ -4,4 +4,59 @@ rescue LoadError
|
|
4
4
|
raise unless RUBY_PLATFORM =~ /mswin|mingw/
|
5
5
|
require "#{RUBY_VERSION[0...3]}/date_ext"
|
6
6
|
end
|
7
|
+
|
8
|
+
class Date
|
9
|
+
class Infinity < Numeric # :nodoc:
|
10
|
+
|
11
|
+
include Comparable
|
12
|
+
|
13
|
+
def initialize(d=1) @d = d <=> 0 end
|
14
|
+
|
15
|
+
def d() @d end
|
16
|
+
|
17
|
+
protected :d
|
18
|
+
|
19
|
+
def zero? () false end
|
20
|
+
def finite? () false end
|
21
|
+
def infinite? () d.nonzero? end
|
22
|
+
def nan? () d.zero? end
|
23
|
+
|
24
|
+
def abs() self.class.new end
|
25
|
+
|
26
|
+
def -@ () self.class.new(-d) end
|
27
|
+
def +@ () self.class.new(+d) end
|
28
|
+
|
29
|
+
def <=> (other)
|
30
|
+
case other
|
31
|
+
when Infinity; return d <=> other.d
|
32
|
+
when Numeric; return d
|
33
|
+
else
|
34
|
+
begin
|
35
|
+
l, r = other.coerce(self)
|
36
|
+
return l <=> r
|
37
|
+
rescue NoMethodError
|
38
|
+
end
|
39
|
+
end
|
40
|
+
nil
|
41
|
+
end
|
42
|
+
|
43
|
+
def coerce(other)
|
44
|
+
case other
|
45
|
+
when Numeric; return -d, d
|
46
|
+
else
|
47
|
+
super
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def to_f
|
52
|
+
return 0 if @d == 0
|
53
|
+
if @d > 0
|
54
|
+
Float::INFINITY
|
55
|
+
else
|
56
|
+
-Float::INFINITY
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
7
62
|
require "date/format" unless defined?(Date::Format::ZONES)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: home_run
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 9
|
10
|
+
version: 1.0.9
|
11
11
|
platform: x86-mswin32-60
|
12
12
|
authors:
|
13
13
|
- Jeremy Evans
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-03-19 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: |
|