From b2aa0032c0008cc3ade6de4e92931f2d98966414 Mon Sep 17 00:00:00 2001 From: Thierry Deo Date: Wed, 13 Nov 2024 09:07:06 +0100 Subject: [PATCH] Eagerly require `date`. --- lib/psych.rb | 2 ++ lib/psych/scalar_scanner.rb | 2 -- lib/psych/visitors/to_ruby.rb | 1 - psych.gemspec | 2 ++ test/psych/helper.rb | 1 - test/psych/test_date_time.rb | 1 - test/psych/test_scalar_scanner.rb | 1 - test/psych/test_string.rb | 10 ++++++++++ 8 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/psych.rb b/lib/psych.rb index d227b1f2..05a3f9c9 100644 --- a/lib/psych.rb +++ b/lib/psych.rb @@ -1,4 +1,6 @@ # frozen_string_literal: true +require 'date' + require_relative 'psych/versions' case RUBY_ENGINE when 'jruby' diff --git a/lib/psych/scalar_scanner.rb b/lib/psych/scalar_scanner.rb index de214423..8cf868f8 100644 --- a/lib/psych/scalar_scanner.rb +++ b/lib/psych/scalar_scanner.rb @@ -4,8 +4,6 @@ module Psych ### # Scan scalars for built in types class ScalarScanner - autoload :Date, "date" - # Taken from http://yaml.org/type/timestamp.html TIME = /^-?\d{4}-\d{1,2}-\d{1,2}(?:[Tt]|\s+)\d{1,2}:\d\d:\d\d(?:\.\d*)?(?:\s*(?:Z|[-+]\d{1,2}:?(?:\d\d)?))?$/ diff --git a/lib/psych/visitors/to_ruby.rb b/lib/psych/visitors/to_ruby.rb index 9e4da5ef..f0b4a94e 100644 --- a/lib/psych/visitors/to_ruby.rb +++ b/lib/psych/visitors/to_ruby.rb @@ -79,7 +79,6 @@ def deserialize o class_loader.big_decimal._load o.value when "!ruby/object:DateTime" class_loader.date_time - require 'date' unless defined? DateTime t = @ss.parse_time(o.value) DateTime.civil(*t.to_a[0, 6].reverse, Rational(t.utc_offset, 86400)) + (t.subsec/86400) diff --git a/psych.gemspec b/psych.gemspec index a3fc53a8..a32f79bc 100644 --- a/psych.gemspec +++ b/psych.gemspec @@ -75,6 +75,8 @@ DESCRIPTION s.add_dependency 'stringio' end + s.add_dependency 'date' + s.metadata['msys2_mingw_dependencies'] = 'libyaml' s.metadata['changelog_uri'] = s.homepage + '/releases' end diff --git a/test/psych/helper.rb b/test/psych/helper.rb index 4e82887c..639f6055 100644 --- a/test/psych/helper.rb +++ b/test/psych/helper.rb @@ -2,7 +2,6 @@ require 'test/unit' require 'stringio' require 'tempfile' -require 'date' require 'psych' diff --git a/test/psych/test_date_time.rb b/test/psych/test_date_time.rb index 3379bd24..4565b8e7 100644 --- a/test/psych/test_date_time.rb +++ b/test/psych/test_date_time.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true require_relative 'helper' -require 'date' module Psych class TestDateTime < TestCase diff --git a/test/psych/test_scalar_scanner.rb b/test/psych/test_scalar_scanner.rb index 8907d125..2637a74d 100644 --- a/test/psych/test_scalar_scanner.rb +++ b/test/psych/test_scalar_scanner.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true require_relative 'helper' -require 'date' module Psych class TestScalarScanner < TestCase diff --git a/test/psych/test_string.rb b/test/psych/test_string.rb index 84ae5cbb..cfd235a5 100644 --- a/test/psych/test_string.rb +++ b/test/psych/test_string.rb @@ -50,6 +50,16 @@ def test_doublequotes_when_there_is_a_single assert_equal str, Psych.load(yaml) end + def test_single_quote_when_matching_date + pend "Failing on JRuby" if RUBY_PLATFORM =~ /java/ + + lib = File.expand_path("../../../lib", __FILE__) + assert_separately(["-I", lib, "-r", "psych"], __FILE__, __LINE__ + 1, <<~'RUBY') + yml = Psych.dump('2024-11-19') + assert_equal '2024-11-19', Psych.load(yml) + RUBY + end + def test_plain_when_shorten_than_line_width_and_no_final_line_break str = "Lorem ipsum" yaml = Psych.dump str, line_width: 12