Packages
ex_gram
0.26.0
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.58.0
0.57.0
0.56.1
0.56.0
0.55.1
0.55.0
0.54.0
0.53.0
0.52.2
0.52.1
0.52.0
0.51.1
0.51.0
0.50.2
0.50.1
0.50.0
0.41.0
0.40.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.1
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.0
0.5.0-rc6
0.5.0-rc5
0.5.0-rc4
0.5.0-rc3
0.5.0-rc2
Telegram Bot API low level and framework
Current section
Files
Jump to
Current section
Files
lib/ex_gram/encoder.ex
defmodule ExGram.Encoder do
@moduledoc """
Helper module to encode/decode json
"""
defmodule Engine do
@moduledoc """
By default we will return nil, which will cause to use the default engine
"""
def engine(), do: nil
end
alias __MODULE__.Engine
defmodule EngineCompiler do
@moduledoc """
This will reload the ExGram.Encoder.Engine module with the engine selected.
With this we allow to define dynamically the engine backend while not having
to read it from the Application everytime.
"""
def compile(engine) do
Code.compiler_options(ignore_module_conflict: true)
quote bind_quoted: [engine: engine], location: :keep do
defmodule Elixir.ExGram.Encoder.Engine do
@moduledoc """
Compiled encoder engine
"""
def engine() do
unquote(engine)
end
end
end
|> Code.eval_quoted([], __ENV__)
Code.compiler_options(ignore_module_conflict: false)
:ok
end
end
@default_engine Jason
def encode(data, opts \\ []) do
engine().encode(data, opts)
end
def encode!(data, opts \\ []) do
engine().encode!(data, opts)
end
def decode(data, opts \\ []) do
engine().decode(data, opts)
end
def decode!(data, opts \\ []) do
engine().decode!(data, opts)
end
defp engine() do
Engine.engine() || @default_engine
end
end