ExKdl
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.
Basic Usage
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"Developing
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 --initDependencies
mix deps.getRunning tests
mix testTo 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.kdlLicense
ExKdl is released under the MIT license (LICENSE.txt).