Skip to content

Commit 133e691

Browse files
committed
define types and specs
1 parent 54ee7cd commit 133e691

3 files changed

Lines changed: 23 additions & 0 deletions

File tree

lib/msgpack.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ defmodule Msgpack do
342342
]
343343
```
344344
"""
345+
@spec encode_stream(Enumerable.t(), StreamEncoder.opts_t()) :: StreamEncoder.t()
345346
def encode_stream(enumerable, opts \\ []) do
346347
StreamEncoder.encode(enumerable, opts)
347348
end
@@ -370,6 +371,7 @@ defmodule Msgpack do
370371
[1, "elixir", true]
371372
```
372373
"""
374+
@spec decode_stream(Enumerable.t(binary()), StreamDecoder.opts_t()) :: StreamDecoder.t()
373375
def decode_stream(enumerable, opts \\ []) do
374376
StreamDecoder.decode(enumerable, opts)
375377
end

lib/msgpack/stream_decoder.ex

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ defmodule Msgpack.StreamDecoder do
2323
alias Msgpack.Decoder
2424
alias Msgpack.Decoder.Internal
2525

26+
@typedoc "A stream that yields decoded Elixir terms."
27+
@type t :: Stream.t()
28+
29+
@typedoc "Options passed to the decoder."
30+
@type opts_t :: keyword()
31+
2632
@doc """
2733
Lazily decodes an enumerable of MessagePack binaries into a stream of Elixir
2834
terms.
@@ -70,6 +76,7 @@ defmodule Msgpack.StreamDecoder do
7076
[{:error, :unexpected_eof}]
7177
```
7278
"""
79+
@spec decode(Enumerable.t(binary()), opts_t()) :: t()
7380
def decode(enumerable, opts \\ []) do
7481
start_fun = fn ->
7582
merged_opts = Keyword.merge(Decoder.default_opts(), opts)
@@ -82,6 +89,8 @@ defmodule Msgpack.StreamDecoder do
8289
Stream.transform(stream_with_eof, start_fun.(), transform_fun)
8390
end
8491

92+
@doc false
93+
@spec transform_chunk(binary() | :eof, {binary(), opts_t()}) :: {list(), {binary(), opts_t() | nil}}
8594
defp transform_chunk(:eof, {<<>>, _opts}) do
8695
{[], {<<>>, nil}}
8796
end
@@ -95,6 +104,8 @@ defmodule Msgpack.StreamDecoder do
95104
{decoded_terms, {leftover_buffer, opts}}
96105
end
97106

107+
@doc false
108+
@spec do_transform(binary(), opts_t(), list()) :: {list(), binary()}
98109
defp do_transform(<<>>, _opts, acc) do
99110
{Enum.reverse(acc), <<>>}
100111
end

lib/msgpack/stream_encoder.ex

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ defmodule Msgpack.StreamEncoder do
1212
not be encoded.
1313
"""
1414

15+
@typedoc "A stream that yields encoded MessagePack objects."
16+
@type t :: Stream.t(result_t())
17+
18+
@typedoc "An individual result from the encoding stream."
19+
@type result_t :: {:ok, binary()} | {:error, any()}
20+
21+
@typedoc "Options passed to the encoder."
22+
@type opts_t :: keyword()
23+
1524
@doc """
1625
Lazily encodes an enumerable of Elixir terms into a stream of result tuples.
1726
@@ -57,6 +66,7 @@ defmodule Msgpack.StreamEncoder do
5766
]
5867
```
5968
"""
69+
@spec encode(Enumerable.t(), opts_t()) :: t()
6070
def encode(enumerable, opts \\ []) do
6171
Stream.map(enumerable, &Msgpack.encode(&1, opts))
6272
end

0 commit comments

Comments
 (0)