This package implements a simple, layout-based value definition language used for supplying configuration values to various applications.
Before starting to use config-value, you probably want to read the documentation for config-schema to see the user-friendly way to wrap this library.
The config-value and config-schema packages are available in a live demo.
-- Line comments until newline
layout:
  based:
    configuration:
      {} -- empty section
    inline-maps: {key1: value1, key2: value2}
    sections:
     "glguy"
    {- Block comments
       {- nested comments -}
       "O'caml style {- strings in comments"
       so you can comment out otherwise valid
       portions of your config
    -}
    atoms:       yes
    decimal:     -1234
    hexadecimal: 0x1234
    octal:       0o1234
    binary:      0b1010
    floats:      [1e2, 0x3p-5, 24.48]
    underscores: 1_000_000
lists:
   * sections: in-lists
     next-section: still-in-list
   * [ "inline", "lists" ]
   * * "nestable"
     * "layout"
     * "lists"
   * 3
unicode: "standard Haskell format strings (1 ≤ 2)x2228(2 ≤ 3)"
multiline: "haskell style\
           \string gaps"
The language supports: Strings, Atoms, Integers, Lists, Nested Sections.
Sections are layout based. The contents of a section must be indented further than the section heading.
The whitespace between a section heading and its colon is not significant. Section names must start with
a letter and may contain letters, numbers, dashes (-), underscores (_), and periods (.).
Lists are either layout based with * prefixes or inline surrounded by [ and ] delimited by ,
Strings are surrounded by " and use Haskell-style escapes.
Numbers support decimal, hexadecimal (0x), octal (0o), and binary (0b).
Atoms follow the same lexical rule as section heading.