diff --git a/lib/poison/encoder.ex b/lib/poison/encoder.ex index 6fec203d..b3a1bb31 100644 --- a/lib/poison/encoder.ex +++ b/lib/poison/encoder.ex @@ -329,7 +329,7 @@ defimpl Poison.Encoder, for: List do end end -defimpl Poison.Encoder, for: [Range, Stream, MapSet, HashSet] do +defimpl Poison.Encoder, for: [Stream, MapSet, HashSet] do alias Poison.Encoder use Poison.Pretty @@ -369,6 +369,14 @@ defimpl Poison.Encoder, for: [Date, Time, NaiveDateTime, DateTime] do end end +defimpl Poison.Encoder, for: Range do + alias Poison.Encoder + + def encode(range, options) do + Encoder.Map.encode(%{first: range.first, last: range.last}, options) + end +end + defimpl Poison.Encoder, for: Any do alias Poison.{Encoder, EncodeError} diff --git a/test/poison/encoder_test.exs b/test/poison/encoder_test.exs index 4dd85c03..685f1f5c 100644 --- a/test/poison/encoder_test.exs +++ b/test/poison/encoder_test.exs @@ -79,15 +79,22 @@ defmodule Poison.EncoderTest do end test "Range" do - assert to_json(1..3) == "[1,2,3]" - - assert to_json(1..3, pretty: true) == """ - [ - 1, - 2, - 3 - ]\ - """ + r1 = 1..10 + assert to_json(r1, pretty: true) == """ + { + "last": 10, + "first": 1 + }\ + """ + + a = 1 + b = 999999999 + assert to_json(a..b, pretty: true) == """ + { + "last": #{b}, + "first": #{a} + }\ + """ end test "Stream" do