date 3.3.4 → 3.4.1
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/ext/date/date_core.c +56 -61
- data/ext/date/date_parse.c +3 -0
- data/ext/date/date_strptime.c +3 -0
- data/ext/date/extconf.rb +1 -0
- data/ext/date/prereq.mk +1 -1
- data/ext/date/zonetab.h +627 -625
- data/ext/date/zonetab.list +5 -2
- data/lib/date.rb +1 -1
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b82de0c3b7d4685d8aa478af5ce4d919808d79d83b71012b0f61052c37a1506
|
4
|
+
data.tar.gz: 6a1adeb0b3d43f3afdc9edb06c1b2bfd081f726e3b91dff9d5d482e77cf87d11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69bc90e06d9f020e5c391732c6b95c8fabe8abe705be5760b5f303980b90ffda96ae55c0ad837a23c8c6701b63783a0a7c16bd2e13f82f7903c1c47089312645
|
7
|
+
data.tar.gz: 7c0aff9c2c9a43f3ac6b1f53a9530805792c7941c45074f5bb58cb90b24890efc641b374cbee7fd36ac8124426a748da92a67d148bb07329b62a90f14bfb9194
|
data/ext/date/date_core.c
CHANGED
@@ -57,7 +57,7 @@ static VALUE sym_hour, sym_min, sym_sec, sym_sec_fraction, sym_zone;
|
|
57
57
|
#define f_add3(x,y,z) f_add(f_add(x, y), z)
|
58
58
|
#define f_sub3(x,y,z) f_sub(f_sub(x, y), z)
|
59
59
|
|
60
|
-
#define f_frozen_ary(...)
|
60
|
+
#define f_frozen_ary(...) rb_ary_freeze(rb_ary_new3(__VA_ARGS__))
|
61
61
|
|
62
62
|
static VALUE date_initialize(int argc, VALUE *argv, VALUE self);
|
63
63
|
static VALUE datetime_initialize(int argc, VALUE *argv, VALUE self);
|
@@ -248,6 +248,11 @@ f_negative_p(VALUE x)
|
|
248
248
|
#define date_sg_t double
|
249
249
|
#endif
|
250
250
|
|
251
|
+
#define JULIAN_EPOCH_DATE "-4712-01-01"
|
252
|
+
#define JULIAN_EPOCH_DATETIME JULIAN_EPOCH_DATE "T00:00:00+00:00"
|
253
|
+
#define JULIAN_EPOCH_DATETIME_RFC3339 "Mon, 1 Jan -4712 00:00:00 +0000"
|
254
|
+
#define JULIAN_EPOCH_DATETIME_HTTPDATE "Mon, 01 Jan -4712 00:00:00 GMT"
|
255
|
+
|
251
256
|
/* A set of nth, jd, df and sf denote ajd + 1/2. Each ajd begin at
|
252
257
|
* noon of GMT (assume equal to UTC). However, this begins at
|
253
258
|
* midnight.
|
@@ -4425,7 +4430,7 @@ date_s_strptime(int argc, VALUE *argv, VALUE klass)
|
|
4425
4430
|
|
4426
4431
|
switch (argc) {
|
4427
4432
|
case 0:
|
4428
|
-
str = rb_str_new2(
|
4433
|
+
str = rb_str_new2(JULIAN_EPOCH_DATE);
|
4429
4434
|
case 1:
|
4430
4435
|
fmt = rb_str_new2("%F");
|
4431
4436
|
case 2:
|
@@ -4464,12 +4469,6 @@ check_limit(VALUE str, VALUE opt)
|
|
4464
4469
|
{
|
4465
4470
|
size_t slen, limit;
|
4466
4471
|
if (NIL_P(str)) return;
|
4467
|
-
if (SYMBOL_P(str)) {
|
4468
|
-
rb_category_warn(RB_WARN_CATEGORY_DEPRECATED,
|
4469
|
-
"The ability to parse Symbol is an unintentional bug and is deprecated");
|
4470
|
-
str = rb_sym2str(str);
|
4471
|
-
}
|
4472
|
-
|
4473
4472
|
StringValue(str);
|
4474
4473
|
slen = RSTRING_LEN(str);
|
4475
4474
|
limit = get_limit(opt);
|
@@ -4484,8 +4483,7 @@ date_s__parse_internal(int argc, VALUE *argv, VALUE klass)
|
|
4484
4483
|
{
|
4485
4484
|
VALUE vstr, vcomp, hash, opt;
|
4486
4485
|
|
4487
|
-
rb_scan_args(argc, argv, "11:", &vstr, &vcomp, &opt);
|
4488
|
-
if (!NIL_P(opt)) argc--;
|
4486
|
+
argc = rb_scan_args(argc, argv, "11:", &vstr, &vcomp, &opt);
|
4489
4487
|
check_limit(vstr, opt);
|
4490
4488
|
StringValue(vstr);
|
4491
4489
|
if (!rb_enc_str_asciicompat_p(vstr))
|
@@ -4572,12 +4570,11 @@ date_s_parse(int argc, VALUE *argv, VALUE klass)
|
|
4572
4570
|
{
|
4573
4571
|
VALUE str, comp, sg, opt;
|
4574
4572
|
|
4575
|
-
rb_scan_args(argc, argv, "03:", &str, &comp, &sg, &opt);
|
4576
|
-
if (!NIL_P(opt)) argc--;
|
4573
|
+
argc = rb_scan_args(argc, argv, "03:", &str, &comp, &sg, &opt);
|
4577
4574
|
|
4578
4575
|
switch (argc) {
|
4579
4576
|
case 0:
|
4580
|
-
str = rb_str_new2(
|
4577
|
+
str = rb_str_new2(JULIAN_EPOCH_DATE);
|
4581
4578
|
case 1:
|
4582
4579
|
comp = Qtrue;
|
4583
4580
|
case 2:
|
@@ -4652,12 +4649,11 @@ date_s_iso8601(int argc, VALUE *argv, VALUE klass)
|
|
4652
4649
|
{
|
4653
4650
|
VALUE str, sg, opt;
|
4654
4651
|
|
4655
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
4656
|
-
if (!NIL_P(opt)) argc--;
|
4652
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
4657
4653
|
|
4658
4654
|
switch (argc) {
|
4659
4655
|
case 0:
|
4660
|
-
str = rb_str_new2(
|
4656
|
+
str = rb_str_new2(JULIAN_EPOCH_DATE);
|
4661
4657
|
case 1:
|
4662
4658
|
sg = INT2FIX(DEFAULT_SG);
|
4663
4659
|
}
|
@@ -4723,12 +4719,11 @@ date_s_rfc3339(int argc, VALUE *argv, VALUE klass)
|
|
4723
4719
|
{
|
4724
4720
|
VALUE str, sg, opt;
|
4725
4721
|
|
4726
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
4727
|
-
if (!NIL_P(opt)) argc--;
|
4722
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
4728
4723
|
|
4729
4724
|
switch (argc) {
|
4730
4725
|
case 0:
|
4731
|
-
str = rb_str_new2(
|
4726
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME);
|
4732
4727
|
case 1:
|
4733
4728
|
sg = INT2FIX(DEFAULT_SG);
|
4734
4729
|
}
|
@@ -4792,12 +4787,11 @@ date_s_xmlschema(int argc, VALUE *argv, VALUE klass)
|
|
4792
4787
|
{
|
4793
4788
|
VALUE str, sg, opt;
|
4794
4789
|
|
4795
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
4796
|
-
if (!NIL_P(opt)) argc--;
|
4790
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
4797
4791
|
|
4798
4792
|
switch (argc) {
|
4799
4793
|
case 0:
|
4800
|
-
str = rb_str_new2(
|
4794
|
+
str = rb_str_new2(JULIAN_EPOCH_DATE);
|
4801
4795
|
case 1:
|
4802
4796
|
sg = INT2FIX(DEFAULT_SG);
|
4803
4797
|
}
|
@@ -4863,11 +4857,11 @@ date_s_rfc2822(int argc, VALUE *argv, VALUE klass)
|
|
4863
4857
|
{
|
4864
4858
|
VALUE str, sg, opt;
|
4865
4859
|
|
4866
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
4860
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
4867
4861
|
|
4868
4862
|
switch (argc) {
|
4869
4863
|
case 0:
|
4870
|
-
str = rb_str_new2(
|
4864
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME_RFC3339);
|
4871
4865
|
case 1:
|
4872
4866
|
sg = INT2FIX(DEFAULT_SG);
|
4873
4867
|
}
|
@@ -4931,11 +4925,11 @@ date_s_httpdate(int argc, VALUE *argv, VALUE klass)
|
|
4931
4925
|
{
|
4932
4926
|
VALUE str, sg, opt;
|
4933
4927
|
|
4934
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
4928
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
4935
4929
|
|
4936
4930
|
switch (argc) {
|
4937
4931
|
case 0:
|
4938
|
-
str = rb_str_new2(
|
4932
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME_HTTPDATE);
|
4939
4933
|
case 1:
|
4940
4934
|
sg = INT2FIX(DEFAULT_SG);
|
4941
4935
|
}
|
@@ -5003,12 +4997,11 @@ date_s_jisx0301(int argc, VALUE *argv, VALUE klass)
|
|
5003
4997
|
{
|
5004
4998
|
VALUE str, sg, opt;
|
5005
4999
|
|
5006
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
5007
|
-
if (!NIL_P(opt)) argc--;
|
5000
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
5008
5001
|
|
5009
5002
|
switch (argc) {
|
5010
5003
|
case 0:
|
5011
|
-
str = rb_str_new2(
|
5004
|
+
str = rb_str_new2(JULIAN_EPOCH_DATE);
|
5012
5005
|
case 1:
|
5013
5006
|
sg = INT2FIX(DEFAULT_SG);
|
5014
5007
|
}
|
@@ -6332,9 +6325,11 @@ minus_dd(VALUE self, VALUE other)
|
|
6332
6325
|
* call-seq:
|
6333
6326
|
* d - other -> date or rational
|
6334
6327
|
*
|
6335
|
-
*
|
6336
|
-
*
|
6337
|
-
*
|
6328
|
+
* If the other is a date object, returns a Rational
|
6329
|
+
* whose value is the difference between the two dates in days.
|
6330
|
+
* If the other is a numeric value, returns a date object
|
6331
|
+
* pointing +other+ days before self.
|
6332
|
+
* If the other is a fractional number,
|
6338
6333
|
* assumes its precision is at most nanosecond.
|
6339
6334
|
*
|
6340
6335
|
* Date.new(2001,2,3) - 1 #=> #<Date: 2001-02-02 ...>
|
@@ -8379,7 +8374,7 @@ datetime_s_strptime(int argc, VALUE *argv, VALUE klass)
|
|
8379
8374
|
|
8380
8375
|
switch (argc) {
|
8381
8376
|
case 0:
|
8382
|
-
str = rb_str_new2(
|
8377
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME);
|
8383
8378
|
case 1:
|
8384
8379
|
fmt = rb_str_new2("%FT%T%z");
|
8385
8380
|
case 2:
|
@@ -8427,12 +8422,11 @@ datetime_s_parse(int argc, VALUE *argv, VALUE klass)
|
|
8427
8422
|
{
|
8428
8423
|
VALUE str, comp, sg, opt;
|
8429
8424
|
|
8430
|
-
rb_scan_args(argc, argv, "03:", &str, &comp, &sg, &opt);
|
8431
|
-
if (!NIL_P(opt)) argc--;
|
8425
|
+
argc = rb_scan_args(argc, argv, "03:", &str, &comp, &sg, &opt);
|
8432
8426
|
|
8433
8427
|
switch (argc) {
|
8434
8428
|
case 0:
|
8435
|
-
str = rb_str_new2(
|
8429
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME);
|
8436
8430
|
case 1:
|
8437
8431
|
comp = Qtrue;
|
8438
8432
|
case 2:
|
@@ -8474,12 +8468,11 @@ datetime_s_iso8601(int argc, VALUE *argv, VALUE klass)
|
|
8474
8468
|
{
|
8475
8469
|
VALUE str, sg, opt;
|
8476
8470
|
|
8477
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8478
|
-
if (!NIL_P(opt)) argc--;
|
8471
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8479
8472
|
|
8480
8473
|
switch (argc) {
|
8481
8474
|
case 0:
|
8482
|
-
str = rb_str_new2(
|
8475
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME);
|
8483
8476
|
case 1:
|
8484
8477
|
sg = INT2FIX(DEFAULT_SG);
|
8485
8478
|
}
|
@@ -8489,7 +8482,7 @@ datetime_s_iso8601(int argc, VALUE *argv, VALUE klass)
|
|
8489
8482
|
VALUE argv2[2], hash;
|
8490
8483
|
argv2[0] = str;
|
8491
8484
|
argv2[1] = opt;
|
8492
|
-
if (!NIL_P(opt)) argc2
|
8485
|
+
if (!NIL_P(opt)) argc2++;
|
8493
8486
|
hash = date_s__iso8601(argc2, argv2, klass);
|
8494
8487
|
return dt_new_by_frags(klass, hash, sg);
|
8495
8488
|
}
|
@@ -8514,12 +8507,11 @@ datetime_s_rfc3339(int argc, VALUE *argv, VALUE klass)
|
|
8514
8507
|
{
|
8515
8508
|
VALUE str, sg, opt;
|
8516
8509
|
|
8517
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8518
|
-
if (!NIL_P(opt)) argc--;
|
8510
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8519
8511
|
|
8520
8512
|
switch (argc) {
|
8521
8513
|
case 0:
|
8522
|
-
str = rb_str_new2(
|
8514
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME);
|
8523
8515
|
case 1:
|
8524
8516
|
sg = INT2FIX(DEFAULT_SG);
|
8525
8517
|
}
|
@@ -8554,12 +8546,11 @@ datetime_s_xmlschema(int argc, VALUE *argv, VALUE klass)
|
|
8554
8546
|
{
|
8555
8547
|
VALUE str, sg, opt;
|
8556
8548
|
|
8557
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8558
|
-
if (!NIL_P(opt)) argc--;
|
8549
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8559
8550
|
|
8560
8551
|
switch (argc) {
|
8561
8552
|
case 0:
|
8562
|
-
str = rb_str_new2(
|
8553
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME);
|
8563
8554
|
case 1:
|
8564
8555
|
sg = INT2FIX(DEFAULT_SG);
|
8565
8556
|
}
|
@@ -8595,12 +8586,11 @@ datetime_s_rfc2822(int argc, VALUE *argv, VALUE klass)
|
|
8595
8586
|
{
|
8596
8587
|
VALUE str, sg, opt;
|
8597
8588
|
|
8598
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8599
|
-
if (!NIL_P(opt)) argc--;
|
8589
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8600
8590
|
|
8601
8591
|
switch (argc) {
|
8602
8592
|
case 0:
|
8603
|
-
str = rb_str_new2(
|
8593
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME_RFC3339);
|
8604
8594
|
case 1:
|
8605
8595
|
sg = INT2FIX(DEFAULT_SG);
|
8606
8596
|
}
|
@@ -8635,12 +8625,11 @@ datetime_s_httpdate(int argc, VALUE *argv, VALUE klass)
|
|
8635
8625
|
{
|
8636
8626
|
VALUE str, sg, opt;
|
8637
8627
|
|
8638
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8639
|
-
if (!NIL_P(opt)) argc--;
|
8628
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8640
8629
|
|
8641
8630
|
switch (argc) {
|
8642
8631
|
case 0:
|
8643
|
-
str = rb_str_new2(
|
8632
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME_HTTPDATE);
|
8644
8633
|
case 1:
|
8645
8634
|
sg = INT2FIX(DEFAULT_SG);
|
8646
8635
|
}
|
@@ -8680,12 +8669,11 @@ datetime_s_jisx0301(int argc, VALUE *argv, VALUE klass)
|
|
8680
8669
|
{
|
8681
8670
|
VALUE str, sg, opt;
|
8682
8671
|
|
8683
|
-
rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8684
|
-
if (!NIL_P(opt)) argc--;
|
8672
|
+
argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
|
8685
8673
|
|
8686
8674
|
switch (argc) {
|
8687
8675
|
case 0:
|
8688
|
-
str = rb_str_new2(
|
8676
|
+
str = rb_str_new2(JULIAN_EPOCH_DATETIME);
|
8689
8677
|
case 1:
|
8690
8678
|
sg = INT2FIX(DEFAULT_SG);
|
8691
8679
|
}
|
@@ -8961,18 +8949,23 @@ time_to_datetime(VALUE self)
|
|
8961
8949
|
static VALUE
|
8962
8950
|
date_to_time(VALUE self)
|
8963
8951
|
{
|
8952
|
+
VALUE t;
|
8953
|
+
|
8964
8954
|
get_d1a(self);
|
8965
8955
|
|
8966
8956
|
if (m_julian_p(adat)) {
|
8967
|
-
VALUE
|
8968
|
-
get_d1b(
|
8957
|
+
VALUE g = d_lite_gregorian(self);
|
8958
|
+
get_d1b(g);
|
8969
8959
|
adat = bdat;
|
8960
|
+
self = g;
|
8970
8961
|
}
|
8971
8962
|
|
8972
|
-
|
8963
|
+
t = f_local3(rb_cTime,
|
8973
8964
|
m_real_year(adat),
|
8974
8965
|
INT2FIX(m_mon(adat)),
|
8975
8966
|
INT2FIX(m_mday(adat)));
|
8967
|
+
RB_GC_GUARD(self); /* may be the converted gregorian */
|
8968
|
+
return t;
|
8976
8969
|
}
|
8977
8970
|
|
8978
8971
|
/*
|
@@ -9042,9 +9035,10 @@ datetime_to_time(VALUE self)
|
|
9042
9035
|
get_d1(self);
|
9043
9036
|
|
9044
9037
|
if (m_julian_p(dat)) {
|
9045
|
-
|
9046
|
-
get_d1a(
|
9038
|
+
VALUE g = d_lite_gregorian(self);
|
9039
|
+
get_d1a(g);
|
9047
9040
|
dat = adat;
|
9041
|
+
self = g;
|
9048
9042
|
}
|
9049
9043
|
|
9050
9044
|
{
|
@@ -9061,6 +9055,7 @@ datetime_to_time(VALUE self)
|
|
9061
9055
|
f_add(INT2FIX(m_sec(dat)),
|
9062
9056
|
m_sf_in_sec(dat)),
|
9063
9057
|
INT2FIX(m_of(dat)));
|
9058
|
+
RB_GC_GUARD(self); /* may be the converted gregorian */
|
9064
9059
|
return t;
|
9065
9060
|
}
|
9066
9061
|
}
|
@@ -9465,7 +9460,7 @@ mk_ary_of_str(long len, const char *a[])
|
|
9465
9460
|
}
|
9466
9461
|
rb_ary_push(o, e);
|
9467
9462
|
}
|
9468
|
-
|
9463
|
+
rb_ary_freeze(o);
|
9469
9464
|
return o;
|
9470
9465
|
}
|
9471
9466
|
|
data/ext/date/date_parse.c
CHANGED
@@ -7,6 +7,9 @@
|
|
7
7
|
#include "ruby/re.h"
|
8
8
|
#include <ctype.h>
|
9
9
|
|
10
|
+
#undef strncasecmp
|
11
|
+
#define strncasecmp STRNCASECMP
|
12
|
+
|
10
13
|
RUBY_EXTERN VALUE rb_int_positive_pow(long x, unsigned long y);
|
11
14
|
RUBY_EXTERN unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow);
|
12
15
|
|
data/ext/date/date_strptime.c
CHANGED
data/ext/date/extconf.rb
CHANGED
@@ -3,6 +3,7 @@ require 'mkmf'
|
|
3
3
|
|
4
4
|
config_string("strict_warnflags") {|w| $warnflags += " #{w}"}
|
5
5
|
|
6
|
+
append_cflags("-Wno-compound-token-split-by-macro") if RUBY_VERSION < "2.7."
|
6
7
|
have_func("rb_category_warn")
|
7
8
|
with_werror("", {:werror => true}) do |opt, |
|
8
9
|
have_var("timezone", "time.h", opt)
|