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.
Installation
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"}]
endBasic 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"Full documentation can be found at https://hexdocs.pm/ex_kdl.
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).