diff --git a/lib/phoenix_html/safe.ex b/lib/phoenix_html/safe.ex index 5c01277..2ed7964 100644 --- a/lib/phoenix_html/safe.ex +++ b/lib/phoenix_html/safe.ex @@ -44,6 +44,12 @@ defimpl Phoenix.HTML.Safe, for: DateTime do end end +if Code.ensure_loaded?(Duration) do + defimpl Phoenix.HTML.Safe, for: Duration do + defdelegate to_iodata(data), to: Duration, as: :to_iso8601 + end +end + defimpl Phoenix.HTML.Safe, for: List do def to_iodata(list), do: recur(list) diff --git a/test/phoenix_html/safe_test.exs b/test/phoenix_html/safe_test.exs index c343e9f..6c2bcd1 100644 --- a/test/phoenix_html/safe_test.exs +++ b/test/phoenix_html/safe_test.exs @@ -62,6 +62,13 @@ defmodule Phoenix.HTML.SafeTest do assert Safe.to_iodata(datetime) == "2000-01-01T12:13:14+00:30" end + if Code.ensure_loaded?(Duration) do + test "impl for Duration" do + duration = Duration.new!(month: 1) + assert Safe.to_iodata(duration) == "P1M" + end + end + test "impl for URI" do uri = %URI{scheme: "http", host: "www.example.org", path: "/foo", query: "secret="}