Current section
Files
Jump to
Current section
Files
lib/jsonld_ex.ex
defmodule JsonldEx do
@moduledoc """
High-performance JSON-LD processing library for Elixir with Rust NIF backend.
"""
alias JsonldEx.Native
def expand(document, opts \\ []) do
document
|> prepare_input()
|> Native.expand(opts)
|> decode_result()
end
def compact(document, context, opts \\ []) do
with input <- prepare_input(document),
ctx <- prepare_input(context) do
input
|> Native.compact(ctx, opts)
|> decode_result()
end
end
defp prepare_input(input) when is_binary(input), do: input
defp prepare_input(input), do: Jason.encode!(input)
defp decode_result({:ok, result}) when is_binary(result) do
case Jason.decode(result) do
{:ok, decoded} -> {:ok, decoded}
error -> error
end
end
defp decode_result(result), do: result
end