dhall-text: Template text using Dhall

[ bsd3, compiler, program ] [ Propose Tags ]

This package provides a dhall-to-text executable that templates text using the Dhall configuration language


[Skip to Readme]
Versions 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.0.7, 1.0.8, 1.0.9, 1.0.10, 1.0.11, 1.0.12, 1.0.13, 1.0.14
Dependencies base (>=4.8.0.0 && <5), dhall (>=1.15.0 && <1.20), optparse-applicative (<0.15), text (>=0.11.1.0 && <1.3) [details]
License BSD-3-Clause
Copyright 2017 Gabriel Gonzalez
Author Gabriel Gonzalez
Maintainer Gabriel439@gmail.com
Category Compiler
Bug tracker https://github.com/dhall-lang/dhall-haskell/issues
Source repo head: git clone https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-text
Uploaded by GabrielGonzalez at Thu Nov 22 03:15:24 UTC 2018
Distributions LTSHaskell:1.0.14, NixOS:1.0.14, Stackage:1.0.14
Executables dhall-to-text
Downloads 1752 total (79 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2018-11-22 [all 3 reports]
Hackage Matrix CI

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for dhall-text-1.0.14

[back to package description]

dhall-text 1.0.14

Hackage

This dhall-text package provides a dhall-to-text executable which you can use to template text using the Dhall configuration language.

For example, suppose you save the following files to your current directory:

$ cat Person
-- Dhall is a typed programming language

-- This file is the type of an anonymous record
{ name : Text, upvotes : Natural }
$ cat people
-- Dhall natively supports lists and anonymous records

[ { name = "Maria" , upvotes = 14 }
, { name = "Jordan", upvotes =  2 }
, { name = "Pranav", upvotes =  1 }
]

-- This file has type:
--
--     ./people : List { name : Text, upvotes : Natural }
--
-- ... or just:
--
--     ./people : List ./Person
$ cat make-item
    -- You can define anonymous functions in Dhall using a backslash (i.e. `\`)
    \(person : ./Person)  -- You can import any type or expression by its path

    -- Dhall supports multiline strings that strip leading whitespace and Dhall
    -- supports string interpolation, too, using `${...}` syntax
->   ''
    <li class="list-group-item">
      <span class="badge">${Natural/show person.upvotes}</span>
      ${person.name}
    </li>
    ''

-- This file has type:
--
--     ./make-item : ./Person -> Text
$ cat make-items
    -- You can also import any type or expression by its URL
    let List/map =  https://raw.githubusercontent.com/dhall-lang/Prelude/302881a17491f3c72238975a6c3e7aab603b9a96/List/map
in  let Text/concat =  https://raw.githubusercontent.com/dhall-lang/Prelude/302881a17491f3c72238975a6c3e7aab603b9a96/Text/concat
in  \(people : List ./Person)
->   Text/concat (List/map ./Person Text ./make-item people)

-- This file has type:
--
--     ./make-items : List ./Person -> Text

Templating HTML is just ordinary function application:

$ dhall-to-text <<< './make-items ./people'
<li class="list-group-item">
  <span class="badge">14</span>
  Maria
</li>

<li class="list-group-item">
  <span class="badge">2</span>
  Jordan
</li>

<li class="list-group-item">
  <span class="badge">1</span>
  Pranav
</li>

To learn more about the Dhall configuration language, read the tutorial

Quick start

If you have Nix then you can install this package using:

$ nix-env --install --file default.nix