Packages

Cafex is a pure Elixir implementation of Kafka client.

Current section

Files

Jump to
misha_cafex lib cafex consumer util.ex
Raw

lib/cafex/consumer/util.ex

defmodule Cafex.Consumer.Util do
@doc """
Decode partitioins string stored outside.
## Example
iex> decode_partitions(nil)
[]
iex> decode_partitions("")
[]
iex> decode_partitions("[1,2,3,4,5]")
[1,2,3,4,5]
iex> decode_partitions("[1,2,3,]")
[1,2,3]
iex> decode_partitions("[1,2,3")
[1,2,3]
iex> decode_partitions("1,2,3")
[1,2,3]
"""
def decode_partitions(nil), do: []
def decode_partitions(""), do: []
def decode_partitions(value) do
value |> String.lstrip(?[)
|> String.rstrip(?])
|> String.split(",")
|> Enum.filter(&(String.length(&1) > 0))
|> Enum.map(&String.to_integer/1)
end
@doc """
Encode partitions list to string.
## Example
iex> encode_partitions(nil)
""
iex> encode_partitions([])
"[]"
iex> encode_partitions([1,2,3,4])
"[1,2,3,4]"
"""
def encode_partitions(nil), do: ""
def encode_partitions(partitions) do
"[#{ partitions |> Enum.map(&Integer.to_string/1) |> Enum.join(",") }]"
end
end