Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion lib/poison/encoder.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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}

Expand Down
23 changes: 16 additions & 7 deletions test/poison/encoder_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -79,14 +79,23 @@ defmodule Poison.EncoderTest do
end

test "Range" do
assert to_json(1..3) == "[1,2,3]"
r1 = 1..10

assert to_json(1..3, pretty: true) == """
[
1,
2,
3
]\
assert to_json(r1, pretty: true) == """
{
"last": 10,
"first": 1
}\
"""

a = 1
b = 999_999_999

assert to_json(a..b, pretty: true) == """
{
"last": #{b},
"first": #{a}
}\
"""
end

Expand Down