nu_plugin_from_dhall

Crates.ionu_plugin_from_dhall
lib.rsnu_plugin_from_dhall
version0.1.0
created_at2021-06-18 12:56:42.691562+00
updated_at2024-12-16 19:19:32.076439+00
descriptionNushell plugin to add Dhall support
homepage
repositoryhttps://github.com/autophagy/nu_plugin_from_dhall
max_upload_size
id411767
size98,336
Mika Naylor (autophagy)

documentation

README

nu_plugin_from_dhall

Check Test

This is a plugin for Nushell to open Dhall files into nu's structured data types.

Installing

cargo install nu_plugin_from_dhall
plugin add ~/.cargo/bin/nu_plugin_from_dhall
plugin use ~/.cargo/bin/nu_plugin_from_dhall

Usage

Given a Dhall file:

> cat example.dhall
let AccountType = < Guest : Text | User : Natural | Admin : Bool >

let Person =
      { name : Text
      , age : Natural
      , accountType : AccountType
      , nickname : Optional Text
      }

let alice
    : Person
    = { name = "Alice"
      , age = 24
      , accountType = AccountType.Admin False
      , nickname = Some "Cool Alice"
      }

let bob
    : Person
    = { name = "Bob"
      , age = 49
      , accountType = AccountType.User 777
      , nickname = None Text
      }

let carlo
    : Person
    = { name = "Carlo"
      , age = 20
      , accountType = AccountType.Guest "Only around for an hour"
      , nickname = Some "Cooler Carlo"
      }

in  [ alice, bob, carlo ]

Use open to parse the Dhall expression into structured data that Nushell can pipe:

> open example.dhall
╭───┬─────────────────────────────────────┬─────┬───────┬──────────────╮
│ # │             accountType             │ age │ name  │   nickname   │
├───┼─────────────────────────────────────┼─────┼───────┼──────────────┤
│ 0 │ ╭───────┬───────╮                   │  24 │ Alice │ Cool Alice   │
│   │ │ Admin │ false │                   │     │       │              │
│   │ ╰───────┴───────╯                   │     │       │              │
│ 1 │ ╭──────┬─────╮                      │  49 │ Bob   │              │
│   │ │ User │ 777 │                      │     │       │              │
│   │ ╰──────┴─────╯                      │     │       │              │
│ 2 │ ╭───────┬─────────────────────────╮ │  20 │ Carlo │ Cooler Carlo │
│   │ │ Guest │ Only around for an hour │ │     │       │              │
│   │ ╰───────┴─────────────────────────╯ │     │       │              │
╰───┴─────────────────────────────────────┴─────┴───────┴──────────────╯

> open example.dhall | where age > 20 | get name
╭───┬───────╮
│ 0 │ Alice │
│ 1 │ Bob   │
╰───┴───────╯

Alternatively, you can also use from dhall:

> open example.dhall --raw | from dhall | select name nickname
╭───┬───────┬──────────────╮
│ # │ name  │   nickname   │
├───┼───────┼──────────────┤
│ 0 │ Alice │ Cool Alice   │
│ 1 │ Bob   │              │
│ 2 │ Carlo │ Cooler Carlo │
╰───┴───────┴──────────────╯
Commit count: 15

cargo fmt