A robust and efficient decoder and encoder for the KDL Document Language.
ExKdl conforms to the KDL 1.0.0 spec and is tested against the official test suite.
ExKdl can be installed by adding ex_kdl
to your list of dependencies in mix.exs
:
def deps do
[{:ex_kdl, "~> 0.1.0-rc2"}]
end
iex(1)> nodes = ExKdl.decode!("node 100 key=\"value\" 10_000 /* comment */ {\n child_1\n child_2\n}\n")
[
%ExKdl.Node{
children: [
%ExKdl.Node{
children: [],
name: "child_1",
properties: %{},
type: nil,
values: []
},
%ExKdl.Node{
children: [],
name: "child_2",
properties: %{},
type: nil,
values: []
}
],
name: "node",
properties: %{"key" => %ExKdl.Value{type: nil, value: "value"}},
type: nil,
values: [
%ExKdl.Value{type: nil, value: %Decimal{coef: 100}},
%ExKdl.Value{type: nil, value: %Decimal{coef: 10000}}
]
}
]
iex(2)> ExKdl.encode!(nodes)
"node 100 10000 key=\"value\" {\n child_1\n child_2\n}\n"
Full documentation can be found at https://hexdocs.pm/ex_kdl.
This repo includes the kdl-org/kdl repo listed as a submodule for testing purposes.
git clone --recurse-submodules <this repo>
Or, if already cloned, initialize the submodule with:
git submodule update --init
mix deps.get
mix test
To run a specific test from the kdl-org test suite, use the --only
option and pass it the path
(where path
is input/<filename>.kdl
). For example:
mix test --only input/raw_string_just_backslash.kdl
ExKdl is released under the MIT license (LICENSE.txt).