From 938025c47e8a382221103b8be664dc0edbc25dab Mon Sep 17 00:00:00 2001 From: Joel Drapper Date: Wed, 7 May 2025 23:11:50 +0100 Subject: [PATCH 1/2] Add support for Date/Time attribute values --- lib/phlex/sgml.rb | 2 ++ quickdraw/sgml/attributes.test.rb | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/phlex/sgml.rb b/lib/phlex/sgml.rb index 655ddd99..e1084e9d 100644 --- a/lib/phlex/sgml.rb +++ b/lib/phlex/sgml.rb @@ -481,6 +481,8 @@ def json_escape(string) v.name.tr("_", "-").gsub('"', """) when Integer, Float v.to_s + when Date, Time + v.iso8601 when Hash case k when :style diff --git a/quickdraw/sgml/attributes.test.rb b/quickdraw/sgml/attributes.test.rb index ea211899..ee8079af 100644 --- a/quickdraw/sgml/attributes.test.rb +++ b/quickdraw/sgml/attributes.test.rb @@ -176,6 +176,16 @@ assert_equal_html output, %(
) end +test "_, Date" do + output = phlex { div(attribute: Date.new(2023, 1, 15)) } + assert_equal_html output, %(
) +end + +test "_, Time" do + output = phlex { div(attribute: Time.new(2023, 1, 15, 12, 30, 45)) } + assert_equal_html output, %(
) +end + test "_, *invalid*" do assert_raises(Phlex::ArgumentError) do phlex { div(attribute: Object.new) } From f76211a91ee07781f5fe19b736b9d96831e43e85 Mon Sep 17 00:00:00 2001 From: Joel Drapper Date: Wed, 7 May 2025 23:16:33 +0100 Subject: [PATCH 2/2] Support older rubies --- lib/phlex/sgml.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/phlex/sgml.rb b/lib/phlex/sgml.rb index e1084e9d..658607eb 100644 --- a/lib/phlex/sgml.rb +++ b/lib/phlex/sgml.rb @@ -481,8 +481,10 @@ def json_escape(string) v.name.tr("_", "-").gsub('"', """) when Integer, Float v.to_s - when Date, Time + when Date v.iso8601 + when Time + v.respond_to?(:iso8601) ? v.iso8601 : v.strftime("%Y-%m-%dT%H:%M:%S%:z") when Hash case k when :style