Parses A2UI JSONL streams into protocol message structs.
Summary
Functions
Parses a single JSON string into a message struct.
Parses a JSONL string (multiple JSON objects separated by newlines) into a list of messages.
Returns a lazy stream that parses each line from an enumerable into messages.
Functions
@spec parse(String.t()) :: {:ok, A2UI.Protocol.Message.t()} | {:error, String.t()}
Parses a single JSON string into a message struct.
Examples
iex> A2UI.Protocol.Parser.parse(~s({"version":"v0.9","deleteSurface":{"surfaceId":"main"}}))
{:ok, %A2UI.Protocol.Messages.DeleteSurface{surface_id: "main"}}
@spec parse_stream(String.t()) :: {:ok, [A2UI.Protocol.Message.t()]} | {:error, String.t()}
Parses a JSONL string (multiple JSON objects separated by newlines) into a list of messages.
Blank lines are skipped. Returns {:ok, messages} if all lines parse successfully,
or {:error, reason} on the first failure.
Examples
iex> jsonl = ~s({"version":"v0.9","deleteSurface":{"surfaceId":"a"}}\n{"version":"v0.9","deleteSurface":{"surfaceId":"b"}})
iex> {:ok, messages} = A2UI.Protocol.Parser.parse_stream(jsonl)
iex> length(messages)
2
@spec stream(Enumerable.t()) :: Enumerable.t()
Returns a lazy stream that parses each line from an enumerable into messages.
Each element yields {:ok, message} or {:error, reason}.