from kdl for formats
Convert KDL text into structured data.
Signature
> from kdl {flags}
Input/output types:
| input | output |
|---|---|
| string | any |
Examples
Converts KDL formatted string to canonical node rows.
> "node attr=1 attr2=#true {bloc}" | from kdl
╭───┬──────┬────────────────┬──────────────────┬─────────────────────────────────────────────────────────────╮
│ # │ name │ args │ props │ children │
├───┼──────┼────────────────┼──────────────────┼─────────────────────────────────────────────────────────────┤
│ 0 │ node │ [list 0 items] │ ╭───────┬──────╮ │ ╭───┬──────┬────────────────┬───────────────────┬─────────╮ │
│ │ │ │ │ attr │ 1 │ │ │ # │ name │ args │ props │ childre │ │
│ │ │ │ │ attr2 │ true │ │ │ │ │ │ │ n │ │
│ │ │ │ ╰───────┴──────╯ │ ├───┼──────┼────────────────┼───────────────────┼─────────┤ │
│ │ │ │ │ │ 0 │ bloc │ [list 0 items] │ {record 0 fields} │ [list 0 │ │
│ │ │ │ │ │ │ │ │ │ items] │ │
│ │ │ │ │ ╰───┴──────┴────────────────┴───────────────────┴─────────╯ │
╰───┴──────┴────────────────┴──────────────────┴─────────────────────────────────────────────────────────────╯Converts KDL formatted string to canonical node rows.
> 'package { name nu; version 0.1; description "new type of shell" }' | from kdl
╭───┬─────────┬────────────────┬───────────────────┬─────────────────────────────────────────────────────────╮
│ # │ name │ args │ props │ children │
├───┼─────────┼────────────────┼───────────────────┼─────────────────────────────────────────────────────────┤
│ 0 │ package │ [list 0 items] │ {record 0 fields} │ ╭───┬─────────────┬───────────────────────────┬───┬───╮ │
│ │ │ │ │ │ # │ name │ args │ p │ c │ │
│ │ │ │ │ │ │ │ │ r │ h │ │
│ │ │ │ │ │ │ │ │ o │ i │ │
│ │ │ │ │ │ │ │ │ p │ l │ │
│ │ │ │ │ │ │ │ │ s │ d │ │
│ │ │ │ │ │ │ │ │ │ r │ │
│ │ │ │ │ │ │ │ │ │ e │ │
│ │ │ │ │ │ │ │ │ │ n │ │
│ │ │ │ │ ├───┼─────────────┼───────────────────────────┼───┼───┤ │
│ │ │ │ │ │ 0 │ name │ ╭───┬────╮ │ { │ [ │ │
│ │ │ │ │ │ │ │ │ 0 │ nu │ │ r │ l │ │
│ │ │ │ │ │ │ │ ╰───┴────╯ │ e │ i │ │
│ │ │ │ │ │ │ │ │ c │ s │ │
│ │ │ │ │ │ │ │ │ o │ t │ │
│ │ │ │ │ │ │ │ │ r │ │ │
│ │ │ │ │ │ │ │ │ d │ 0 │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ 0 │ i │ │
│ │ │ │ │ │ │ │ │ │ t │ │
│ │ │ │ │ │ │ │ │ f │ e │ │
│ │ │ │ │ │ │ │ │ i │ m │ │
│ │ │ │ │ │ │ │ │ e │ s │ │
│ │ │ │ │ │ │ │ │ l │ ] │ │
│ │ │ │ │ │ │ │ │ d │ │ │
│ │ │ │ │ │ │ │ │ s │ │ │
│ │ │ │ │ │ │ │ │ } │ │ │
│ │ │ │ │ │ 1 │ version │ ╭───┬──────╮ │ { │ [ │ │
│ │ │ │ │ │ │ │ │ 0 │ 0.10 │ │ r │ l │ │
│ │ │ │ │ │ │ │ ╰───┴──────╯ │ e │ i │ │
│ │ │ │ │ │ │ │ │ c │ s │ │
│ │ │ │ │ │ │ │ │ o │ t │ │
│ │ │ │ │ │ │ │ │ r │ │ │
│ │ │ │ │ │ │ │ │ d │ 0 │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ 0 │ i │ │
│ │ │ │ │ │ │ │ │ │ t │ │
│ │ │ │ │ │ │ │ │ f │ e │ │
│ │ │ │ │ │ │ │ │ i │ m │ │
│ │ │ │ │ │ │ │ │ e │ s │ │
│ │ │ │ │ │ │ │ │ l │ ] │ │
│ │ │ │ │ │ │ │ │ d │ │ │
│ │ │ │ │ │ │ │ │ s │ │ │
│ │ │ │ │ │ │ │ │ } │ │ │
│ │ │ │ │ │ 2 │ description │ ╭───┬───────────────────╮ │ { │ [ │ │
│ │ │ │ │ │ │ │ │ 0 │ new type of shell │ │ r │ l │ │
│ │ │ │ │ │ │ │ ╰───┴───────────────────╯ │ e │ i │ │
│ │ │ │ │ │ │ │ │ c │ s │ │
│ │ │ │ │ │ │ │ │ o │ t │ │
│ │ │ │ │ │ │ │ │ r │ │ │
│ │ │ │ │ │ │ │ │ d │ 0 │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ 0 │ i │ │
│ │ │ │ │ │ │ │ │ │ t │ │
│ │ │ │ │ │ │ │ │ f │ e │ │
│ │ │ │ │ │ │ │ │ i │ m │ │
│ │ │ │ │ │ │ │ │ e │ s │ │
│ │ │ │ │ │ │ │ │ l │ ] │ │
│ │ │ │ │ │ │ │ │ d │ │ │
│ │ │ │ │ │ │ │ │ s │ │ │
│ │ │ │ │ │ │ │ │ } │ │ │
│ │ │ │ │ ╰───┴─────────────┴───────────────────────────┴───┴───╯ │
╰───┴─────────┴────────────────┴───────────────────┴─────────────────────────────────────────────────────────╯Duplicate sibling node names are preserved in-order.
> "node one; node two" | from kdl
╭───┬──────┬─────────────┬───────────────────┬────────────────╮
│ # │ name │ args │ props │ children │
├───┼──────┼─────────────┼───────────────────┼────────────────┤
│ 0 │ node │ ╭───┬─────╮ │ {record 0 fields} │ [list 0 items] │
│ │ │ │ 0 │ one │ │ │ │
│ │ │ ╰───┴─────╯ │ │ │
│ 1 │ node │ ╭───┬─────╮ │ {record 0 fields} │ [list 0 items] │
│ │ │ │ 0 │ two │ │ │ │
│ │ │ ╰───┴─────╯ │ │ │
╰───┴──────┴─────────────┴───────────────────┴────────────────╯