{-# LANGUAGE OverloadedStrings #-} -- | This module contains parsers for formatting strings. -- We have to deal with two kinds of strings: -- -- * String formats. This is the whole construct like @"Hello, {}! Your account balance is {1:+8.4}."@. -- * Variable formats. This is only part after colon in braces, i.e. the @+8.4@ thing in previous example. -- -- The string format syntax is supposed to be very stable and simple. -- There are more than one commonly used formatting string syntax, though. This package provides the -- following syntaxes: -- -- * The default syntax, which is basically defined by phrase "any part in braces is variable substitution". -- This syntax is defined in @Data.Text.Format.Heavy.Parse.Braces@ module. -- -- * Shell-like syntax, which is basically defined by phrase "any part starting with dollar sign is variable -- substitution". This syntax is defined in @Data.Text.Format.Heavy.Parse.Shell@ module. -- -- It is possible to define your own syntaxes: you just need to parse an instance of @Format@ type from some -- sort of string. The default syntax will still remain default, in sence that @instance IsString Format@ is -- defined in terms of this syntax in @Data.Text.Format.Heavy.Instances@ module. -- -- Variable formats syntax depends on type of data which we are going to format. These formats can be -- pretty complex, for example they can include alignment, rounding, and so on. -- module Data.Text.Format.Heavy.Parse (-- * Parse functions parseFormat, parseFormat', parseGenericFormat, parseBoolFormat, parseMaybeFormat, -- * Parsec functions pGenericFormat, pBoolFormat ) where import Data.Maybe import qualified Data.Text as T import qualified Data.Text.Lazy as TL import qualified Data.Text.Lazy.Builder as B import Text.Parsec import Data.Text.Format.Heavy.Types import Data.Text.Format.Heavy.Formats import Data.Text.Format.Heavy.Parse.VarFormat import Data.Text.Format.Heavy.Parse.Braces