Packages

Pure Elixir telecom encodings for Iconvex

Current section

Files

Jump to
iconvex_telecom lib iconvex telecom codec.ex
Raw

lib/iconvex/telecom/codec.ex

defmodule Iconvex.Telecom.Codec do
@moduledoc false
defmacro __using__(options) do
canonical = Keyword.fetch!(options, :canonical)
aliases = Keyword.get(options, :aliases, [])
locking = Keyword.fetch!(options, :locking)
single_shift = Keyword.fetch!(options, :single_shift)
quote bind_quoted: [
canonical: canonical,
aliases: aliases,
locking: locking,
single_shift: single_shift
] do
use Iconvex.Codec
alias Iconvex.Telecom.GSM0338.Engine
@canonical canonical
@codec_aliases aliases
@locking locking
@single_shift single_shift
@impl true
def canonical_name, do: @canonical
@impl true
def aliases, do: @codec_aliases
@impl true
def stateful?, do: true
@impl true
def decode(input), do: Engine.decode(input, @locking, @single_shift)
@impl true
def decode_discard(input), do: Engine.decode_discard(input, @locking, @single_shift)
@impl true
def encode(codepoints), do: Engine.encode(codepoints, @locking, @single_shift)
@impl true
def encode_discard(codepoints),
do: Engine.encode_discard(codepoints, @locking, @single_shift)
@impl true
def encode_substitute(codepoints, replacer),
do: Engine.encode_substitute(codepoints, @locking, @single_shift, replacer)
@impl true
def decode_to_utf8(input), do: Engine.decode_to_utf8(input, @locking, @single_shift)
@impl true
def encode_from_utf8(input), do: Engine.encode_from_utf8(input, @locking, @single_shift)
end
end
end