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"}]
end
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"
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 --init
Dependencies
mix deps.get
Running tests
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
License
ExKdl is released under the MIT license (LICENSE.txt).