tvl-depot/users/Profpatsch/ini/ini.dhall

37 lines
1 KiB
Text
Raw Normal View History

let lib = ../dhall/lib.dhall
let NameVal = λ(T : Type) → { name : Text, value : T }
let ValueList = λ(T : Type) → List (NameVal T)
let Section = ValueList Text
let Sections = ValueList Section
let Ini = { globalSection : Section, sections : Sections }
let
-- Takes to INI files and merges their global sections and their section lists,
-- without duplicating by section name.
appendInis =
λ(inis : List Ini) →
{ globalSection =
lib.List/concat
(NameVal Text)
(lib.List/map Ini Section (λ(i : Ini) → i.globalSection) inis)
, sections =
lib.List/concat
(NameVal Section)
(lib.List/map Ini Sections (λ(i : Ini) → i.sections) inis)
}
: Ini
let
-- Signatures of functions that are input via FFI.
Externs =
{ -- given a dsl of functions to create an Ini, render the ini file
renderIni : Ini → Text
}
in { NameVal, ValueList, Section, Sections, Ini, appendInis, Externs }