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 [faq] 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, 1.0.15, 1.0.16, 1.0.17, 1.0.18
Dependencies base (>=4.8.0.0 && <5), dhall (>=1.15.0 && <1.25), optparse-applicative (<0.16), text (>=0.11.1.0 && <1.3) [details]
License BSD-3-Clause
Copyright 2017 Gabriel Gonzalez
Author Gabriel Gonzalez
Maintainer Gabriel439@gmail.com
Revised Revision 1 made by GabrielGonzalez at Sat Jul 6 22:55:06 UTC 2019
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 Fri Jun 7 00:16:55 UTC 2019
Distributions LTSHaskell:1.0.18, NixOS:1.0.18, Stackage:1.0.18
Executables dhall-to-text
Downloads 3903 total (369 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
Last success reported on 2019-06-07 [all 3 reports]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees


Readme for dhall-text-1.0.18

[back to package description]

dhall-text

For installation or development instructions, see:

Introduction

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

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://prelude.dhall-lang.org/List/map

let Text/concat = https://prelude.dhall-lang.org/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