Skip to content

Commit 2657392

Browse files
committed
Tidy up doc tests and docs
1 parent 351cab4 commit 2657392

1 file changed

Lines changed: 18 additions & 28 deletions

File tree

lib/server_sent_events/parser.ex

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
defmodule ServerSentEvents.Parser do
22
@moduledoc """
3-
Low level SSE parser.
4-
5-
See [Usage Guide](guides/usage.livemd) for usage example.
3+
Incremental parser for Server Sent Events streams.
64
"""
75

86
@type t :: %__MODULE__{
@@ -22,51 +20,43 @@ defmodule ServerSentEvents.Parser do
2220
defstruct [:phase, :key, :value, :event]
2321

2422
@doc """
25-
Creates new Parser state that can be then passed to `parse/2`
26-
27-
## Examples
28-
29-
iex> ServerSentEvents.Parser.new()
30-
%ServerSentEvents.Parser{phase: :start, key: nil, value: nil, event: nil}
23+
Returns a new parser state for `parse/2`.
3124
"""
3225
@spec new() :: t()
3326
def new() do
3427
%__MODULE__{phase: :start}
3528
end
3629

3730
@doc """
38-
Parses binary chunk and returns complete events and an active state
31+
Parses a binary chunk with a new parser.
32+
33+
Returns complete events and the updated parser state.
3934
4035
## Examples
4136
42-
iex> ServerSentEvents.Parser.parse("id: 1\\nevent: message\\nretry: 5000\\ndata: hello\\n\\n")
43-
{[%{data: "hello", id: "1", retry: 5000, event: "message"}],
44-
%ServerSentEvents.Parser{phase: :field, key: nil, value: nil, event: nil}}
37+
iex> {events, _parser} =
38+
...> ServerSentEvents.Parser.parse("id: 1\\nevent: message\\nretry: 5000\\ndata: hello\\n\\n")
39+
iex> events
40+
[%{data: "hello", event: "message", id: "1", retry: 5000}]
4541
"""
4642
@spec parse(input :: binary()) :: {[event()], t()}
4743
def parse(input) when is_binary(input) do
4844
new() |> parse(input)
4945
end
5046

5147
@doc """
52-
Parses binary chunk using existing parser state and returns complete events
53-
and an updated state
48+
Parses a binary chunk using an existing parser state.
49+
50+
Returns complete events and a parser state that retains incomplete input for
51+
the next chunk.
5452
5553
## Examples
5654
57-
iex> state = ServerSentEvents.Parser.new()
58-
%ServerSentEvents.Parser{phase: :start, key: nil, value: nil, event: nil}
59-
iex> {_, state} = ServerSentEvents.Parser.parse(state, "id: 1\\nevent: message\\n")
60-
{[],
61-
%ServerSentEvents.Parser{
62-
phase: :field,
63-
key: nil,
64-
value: nil,
65-
event: %{id: "1", event: "message"}
66-
}}
67-
iex> {_, _state} = ServerSentEvents.Parser.parse(state, "retry: 5000\\ndata: hello\\n\\n")
68-
{[%{data: "hello", id: "1", retry: 5000, event: "message"}],
69-
%ServerSentEvents.Parser{phase: :field, key: nil, value: nil, event: nil}}
55+
iex> parser = ServerSentEvents.Parser.new()
56+
iex> {[], parser} = ServerSentEvents.Parser.parse(parser, "event: message\\n")
57+
iex> {events, _parser} = ServerSentEvents.Parser.parse(parser, "data: hello\\n\\n")
58+
iex> events
59+
[%{data: "hello", event: "message"}]
7060
"""
7161
@spec parse(t(), input :: binary()) :: {[event()], t()}
7262
def parse(%__MODULE__{phase: phase, key: key, value: value, event: event}, input)

0 commit comments

Comments
 (0)