date 3.4.0 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 663deb4b7503aa59db5242f38e54b0e00072a41715555d584171f1b49423d898
4
- data.tar.gz: 7c59321afa979e6823fe7e5ee93dd4a558822a4b9fb2406d8c0c440a7db3d869
3
+ metadata.gz: 9b82de0c3b7d4685d8aa478af5ce4d919808d79d83b71012b0f61052c37a1506
4
+ data.tar.gz: 6a1adeb0b3d43f3afdc9edb06c1b2bfd081f726e3b91dff9d5d482e77cf87d11
5
5
  SHA512:
6
- metadata.gz: 28d17ce123b257d3b5983104040709f96d6c0abeb5e431678e83a3e41148630857d96e130451fd6ecf77a3d9a19bd7dac08479ca3d5350c0157adfc009b4b48d
7
- data.tar.gz: 6f1ae004dd42e1e566e59371009b128ada23a76fd2dafa0384cb50fffeb84be0791f1d1e06916eebd31c1708d9d4026bc987f94cc5bb5e895c9200bf7e7c1907
6
+ metadata.gz: 69bc90e06d9f020e5c391732c6b95c8fabe8abe705be5760b5f303980b90ffda96ae55c0ad837a23c8c6701b63783a0a7c16bd2e13f82f7903c1c47089312645
7
+ data.tar.gz: 7c0aff9c2c9a43f3ac6b1f53a9530805792c7941c45074f5bb58cb90b24890efc641b374cbee7fd36ac8124426a748da92a67d148bb07329b62a90f14bfb9194
data/ext/date/date_core.c CHANGED
@@ -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("-4712-01-01");
4433
+ str = rb_str_new2(JULIAN_EPOCH_DATE);
4429
4434
  case 1:
4430
4435
  fmt = rb_str_new2("%F");
4431
4436
  case 2:
@@ -4478,8 +4483,7 @@ date_s__parse_internal(int argc, VALUE *argv, VALUE klass)
4478
4483
  {
4479
4484
  VALUE vstr, vcomp, hash, opt;
4480
4485
 
4481
- rb_scan_args(argc, argv, "11:", &vstr, &vcomp, &opt);
4482
- if (!NIL_P(opt)) argc--;
4486
+ argc = rb_scan_args(argc, argv, "11:", &vstr, &vcomp, &opt);
4483
4487
  check_limit(vstr, opt);
4484
4488
  StringValue(vstr);
4485
4489
  if (!rb_enc_str_asciicompat_p(vstr))
@@ -4566,12 +4570,11 @@ date_s_parse(int argc, VALUE *argv, VALUE klass)
4566
4570
  {
4567
4571
  VALUE str, comp, sg, opt;
4568
4572
 
4569
- rb_scan_args(argc, argv, "03:", &str, &comp, &sg, &opt);
4570
- if (!NIL_P(opt)) argc--;
4573
+ argc = rb_scan_args(argc, argv, "03:", &str, &comp, &sg, &opt);
4571
4574
 
4572
4575
  switch (argc) {
4573
4576
  case 0:
4574
- str = rb_str_new2("-4712-01-01");
4577
+ str = rb_str_new2(JULIAN_EPOCH_DATE);
4575
4578
  case 1:
4576
4579
  comp = Qtrue;
4577
4580
  case 2:
@@ -4646,12 +4649,11 @@ date_s_iso8601(int argc, VALUE *argv, VALUE klass)
4646
4649
  {
4647
4650
  VALUE str, sg, opt;
4648
4651
 
4649
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
4650
- if (!NIL_P(opt)) argc--;
4652
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
4651
4653
 
4652
4654
  switch (argc) {
4653
4655
  case 0:
4654
- str = rb_str_new2("-4712-01-01");
4656
+ str = rb_str_new2(JULIAN_EPOCH_DATE);
4655
4657
  case 1:
4656
4658
  sg = INT2FIX(DEFAULT_SG);
4657
4659
  }
@@ -4717,12 +4719,11 @@ date_s_rfc3339(int argc, VALUE *argv, VALUE klass)
4717
4719
  {
4718
4720
  VALUE str, sg, opt;
4719
4721
 
4720
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
4721
- if (!NIL_P(opt)) argc--;
4722
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
4722
4723
 
4723
4724
  switch (argc) {
4724
4725
  case 0:
4725
- str = rb_str_new2("-4712-01-01T00:00:00+00:00");
4726
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME);
4726
4727
  case 1:
4727
4728
  sg = INT2FIX(DEFAULT_SG);
4728
4729
  }
@@ -4786,12 +4787,11 @@ date_s_xmlschema(int argc, VALUE *argv, VALUE klass)
4786
4787
  {
4787
4788
  VALUE str, sg, opt;
4788
4789
 
4789
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
4790
- if (!NIL_P(opt)) argc--;
4790
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
4791
4791
 
4792
4792
  switch (argc) {
4793
4793
  case 0:
4794
- str = rb_str_new2("-4712-01-01");
4794
+ str = rb_str_new2(JULIAN_EPOCH_DATE);
4795
4795
  case 1:
4796
4796
  sg = INT2FIX(DEFAULT_SG);
4797
4797
  }
@@ -4857,11 +4857,11 @@ date_s_rfc2822(int argc, VALUE *argv, VALUE klass)
4857
4857
  {
4858
4858
  VALUE str, sg, opt;
4859
4859
 
4860
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
4860
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
4861
4861
 
4862
4862
  switch (argc) {
4863
4863
  case 0:
4864
- str = rb_str_new2("Mon, 1 Jan -4712 00:00:00 +0000");
4864
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME_RFC3339);
4865
4865
  case 1:
4866
4866
  sg = INT2FIX(DEFAULT_SG);
4867
4867
  }
@@ -4925,11 +4925,11 @@ date_s_httpdate(int argc, VALUE *argv, VALUE klass)
4925
4925
  {
4926
4926
  VALUE str, sg, opt;
4927
4927
 
4928
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
4928
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
4929
4929
 
4930
4930
  switch (argc) {
4931
4931
  case 0:
4932
- str = rb_str_new2("Mon, 01 Jan -4712 00:00:00 GMT");
4932
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME_HTTPDATE);
4933
4933
  case 1:
4934
4934
  sg = INT2FIX(DEFAULT_SG);
4935
4935
  }
@@ -4997,12 +4997,11 @@ date_s_jisx0301(int argc, VALUE *argv, VALUE klass)
4997
4997
  {
4998
4998
  VALUE str, sg, opt;
4999
4999
 
5000
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
5001
- if (!NIL_P(opt)) argc--;
5000
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
5002
5001
 
5003
5002
  switch (argc) {
5004
5003
  case 0:
5005
- str = rb_str_new2("-4712-01-01");
5004
+ str = rb_str_new2(JULIAN_EPOCH_DATE);
5006
5005
  case 1:
5007
5006
  sg = INT2FIX(DEFAULT_SG);
5008
5007
  }
@@ -8375,7 +8374,7 @@ datetime_s_strptime(int argc, VALUE *argv, VALUE klass)
8375
8374
 
8376
8375
  switch (argc) {
8377
8376
  case 0:
8378
- str = rb_str_new2("-4712-01-01T00:00:00+00:00");
8377
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME);
8379
8378
  case 1:
8380
8379
  fmt = rb_str_new2("%FT%T%z");
8381
8380
  case 2:
@@ -8423,12 +8422,11 @@ datetime_s_parse(int argc, VALUE *argv, VALUE klass)
8423
8422
  {
8424
8423
  VALUE str, comp, sg, opt;
8425
8424
 
8426
- rb_scan_args(argc, argv, "03:", &str, &comp, &sg, &opt);
8427
- if (!NIL_P(opt)) argc--;
8425
+ argc = rb_scan_args(argc, argv, "03:", &str, &comp, &sg, &opt);
8428
8426
 
8429
8427
  switch (argc) {
8430
8428
  case 0:
8431
- str = rb_str_new2("-4712-01-01T00:00:00+00:00");
8429
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME);
8432
8430
  case 1:
8433
8431
  comp = Qtrue;
8434
8432
  case 2:
@@ -8470,12 +8468,11 @@ datetime_s_iso8601(int argc, VALUE *argv, VALUE klass)
8470
8468
  {
8471
8469
  VALUE str, sg, opt;
8472
8470
 
8473
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8474
- if (!NIL_P(opt)) argc--;
8471
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8475
8472
 
8476
8473
  switch (argc) {
8477
8474
  case 0:
8478
- str = rb_str_new2("-4712-01-01T00:00:00+00:00");
8475
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME);
8479
8476
  case 1:
8480
8477
  sg = INT2FIX(DEFAULT_SG);
8481
8478
  }
@@ -8485,7 +8482,7 @@ datetime_s_iso8601(int argc, VALUE *argv, VALUE klass)
8485
8482
  VALUE argv2[2], hash;
8486
8483
  argv2[0] = str;
8487
8484
  argv2[1] = opt;
8488
- if (!NIL_P(opt)) argc2--;
8485
+ if (!NIL_P(opt)) argc2++;
8489
8486
  hash = date_s__iso8601(argc2, argv2, klass);
8490
8487
  return dt_new_by_frags(klass, hash, sg);
8491
8488
  }
@@ -8510,12 +8507,11 @@ datetime_s_rfc3339(int argc, VALUE *argv, VALUE klass)
8510
8507
  {
8511
8508
  VALUE str, sg, opt;
8512
8509
 
8513
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8514
- if (!NIL_P(opt)) argc--;
8510
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8515
8511
 
8516
8512
  switch (argc) {
8517
8513
  case 0:
8518
- str = rb_str_new2("-4712-01-01T00:00:00+00:00");
8514
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME);
8519
8515
  case 1:
8520
8516
  sg = INT2FIX(DEFAULT_SG);
8521
8517
  }
@@ -8550,12 +8546,11 @@ datetime_s_xmlschema(int argc, VALUE *argv, VALUE klass)
8550
8546
  {
8551
8547
  VALUE str, sg, opt;
8552
8548
 
8553
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8554
- if (!NIL_P(opt)) argc--;
8549
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8555
8550
 
8556
8551
  switch (argc) {
8557
8552
  case 0:
8558
- str = rb_str_new2("-4712-01-01T00:00:00+00:00");
8553
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME);
8559
8554
  case 1:
8560
8555
  sg = INT2FIX(DEFAULT_SG);
8561
8556
  }
@@ -8591,12 +8586,11 @@ datetime_s_rfc2822(int argc, VALUE *argv, VALUE klass)
8591
8586
  {
8592
8587
  VALUE str, sg, opt;
8593
8588
 
8594
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8595
- if (!NIL_P(opt)) argc--;
8589
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8596
8590
 
8597
8591
  switch (argc) {
8598
8592
  case 0:
8599
- str = rb_str_new2("Mon, 1 Jan -4712 00:00:00 +0000");
8593
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME_RFC3339);
8600
8594
  case 1:
8601
8595
  sg = INT2FIX(DEFAULT_SG);
8602
8596
  }
@@ -8631,12 +8625,11 @@ datetime_s_httpdate(int argc, VALUE *argv, VALUE klass)
8631
8625
  {
8632
8626
  VALUE str, sg, opt;
8633
8627
 
8634
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8635
- if (!NIL_P(opt)) argc--;
8628
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8636
8629
 
8637
8630
  switch (argc) {
8638
8631
  case 0:
8639
- str = rb_str_new2("Mon, 01 Jan -4712 00:00:00 GMT");
8632
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME_HTTPDATE);
8640
8633
  case 1:
8641
8634
  sg = INT2FIX(DEFAULT_SG);
8642
8635
  }
@@ -8676,12 +8669,11 @@ datetime_s_jisx0301(int argc, VALUE *argv, VALUE klass)
8676
8669
  {
8677
8670
  VALUE str, sg, opt;
8678
8671
 
8679
- rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8680
- if (!NIL_P(opt)) argc--;
8672
+ argc = rb_scan_args(argc, argv, "02:", &str, &sg, &opt);
8681
8673
 
8682
8674
  switch (argc) {
8683
8675
  case 0:
8684
- str = rb_str_new2("-4712-01-01T00:00:00+00:00");
8676
+ str = rb_str_new2(JULIAN_EPOCH_DATETIME);
8685
8677
  case 1:
8686
8678
  sg = INT2FIX(DEFAULT_SG);
8687
8679
  }
@@ -8962,9 +8954,10 @@ date_to_time(VALUE self)
8962
8954
  get_d1a(self);
8963
8955
 
8964
8956
  if (m_julian_p(adat)) {
8965
- self = d_lite_gregorian(self);
8966
- get_d1b(self);
8957
+ VALUE g = d_lite_gregorian(self);
8958
+ get_d1b(g);
8967
8959
  adat = bdat;
8960
+ self = g;
8968
8961
  }
8969
8962
 
8970
8963
  t = f_local3(rb_cTime,
@@ -9042,9 +9035,10 @@ datetime_to_time(VALUE self)
9042
9035
  get_d1(self);
9043
9036
 
9044
9037
  if (m_julian_p(dat)) {
9045
- self = d_lite_gregorian(self);
9046
- get_d1a(self);
9038
+ VALUE g = d_lite_gregorian(self);
9039
+ get_d1a(g);
9047
9040
  dat = adat;
9041
+ self = g;
9048
9042
  }
9049
9043
 
9050
9044
  {
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)
data/lib/date.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  require 'date_core'
5
5
 
6
6
  class Date
7
- VERSION = "3.4.0" # :nodoc:
7
+ VERSION = "3.4.1" # :nodoc:
8
8
 
9
9
  # call-seq:
10
10
  # infinite? -> false
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: date
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tadayoshi Funaba
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-01 00:00:00.000000000 Z
11
+ date: 2024-12-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A subclass of Object includes Comparable module for handling dates.
14
14
  email: