| Copyright | (c) Justus Adam, 2015 |
|---|---|
| License | LGPL-3 |
| Maintainer | dev@justus.science |
| Stability | experimental |
| Portability | POSIX |
| Safe Haskell | None |
| Language | Haskell2010 |
Text.Mustache.Types
Description
- type AST = [Node Text]
- data Template = Template {}
- data Node α
- data DataIdentifier
- data Value
- type Key = Text
- object :: [Pair] -> Value
- (~>) :: ToMustache ω => Text -> ω -> Pair
- (↝) :: ToMustache ω => Text -> ω -> Pair
- (~=) :: ToJSON ι => Text -> ι -> Pair
- (⥱) :: ToJSON ι => Text -> ι -> Pair
- (~~>) :: (Conversion ζ Text, ToMustache ω) => ζ -> ω -> Pair
- (~↝) :: (Conversion ζ Text, ToMustache ω) => ζ -> ω -> Pair
- (~~=) :: (Conversion ζ Text, ToJSON ι) => ζ -> ι -> Pair
- (~⥱) :: (Conversion ζ Text, ToJSON ι) => ζ -> ι -> Pair
- class ToMustache ω where
- toMustache :: ω -> Value
- toTextBlock :: Conversion ζ Text => ζ -> Value
- mFromJSON :: ToJSON ι => ι -> Value
- type Array = Vector Value
- type Object = HashMap Text Value
- type Pair = (Text, Value)
- data Context α = Context [α] α
- type TemplateCache = HashMap String Template
Types for the Parser / Template
A compiled Template with metadata.
Basic values composing the AST
Constructors
| TextBlock α | |
| Section DataIdentifier AST | |
| InvertedSection DataIdentifier AST | |
| Variable Bool DataIdentifier | |
| Partial (Maybe α) FilePath |
Types for the Substitution / Data
Internal value AST
Constructors
| Object Object | |
| Array Array | |
| Number Scientific | |
| String Text | |
| Lambda (Context Value -> AST -> AST) | |
| Bool Bool | |
| Null |
Instances
| Show Value Source | |
| ToMustache Value Source | |
| ToMustache (Vector Value) Source | |
| Conversion θ Text => ToMustache (Context Value -> AST -> θ) Source | |
| ToMustache (Context Value -> AST -> Text) Source | |
| ToMustache (Context Value -> AST -> AST) Source | |
| ToMustache (HashMap Text Value) Source |
Converting
object :: [Pair] -> Value Source
Convenience function for creating Object values.
This function is supposed to be used in conjuction with the ~> and ~= operators.
Examples
data Address = Address { ... }
instance Address ToJSON where
...
data Person = Person { name :: String, address :: Address }
instance ToMustache Person where
toMustache (Person { name, address }) = object
[ "name" ~> name
, "address" ~= address
]
Here we can see that we can use the ~> operator for values that have
themselves a ToMustache instance, or alternatively if they lack such an
instance but provide an instance for the ToJSON typeclass we can use the
~= operator.
(~>) :: ToMustache ω => Text -> ω -> Pair Source
Map keys to values that provide a ToMustache instance
Recommended in conjunction with the OverloadedStrings extension.
(~=) :: ToJSON ι => Text -> ι -> Pair Source
Map keys to values that provide a ToJSON instance
Recommended in conjunction with the OverloadedStrings extension.
(~~>) :: (Conversion ζ Text, ToMustache ω) => ζ -> ω -> Pair Source
Conceptually similar to ~> but uses arbitrary String-likes as keys.
(~↝) :: (Conversion ζ Text, ToMustache ω) => ζ -> ω -> Pair Source
Unicde version of ~~>
(~~=) :: (Conversion ζ Text, ToJSON ι) => ζ -> ι -> Pair Source
Conceptually similar to ~= but uses arbitrary String-likes as keys.
class ToMustache ω where Source
Conversion class
Note that some instances of this class overlap delierately to provide maximum flexibility instances while preserving maximum efficiency.
Methods
toMustache :: ω -> Value Source
Instances
toTextBlock :: Conversion ζ Text => ζ -> Value Source
Converts arbitrary String-likes to Values
mFromJSON :: ToJSON ι => ι -> Value Source
Converts a value that can be represented as JSON to a Value.
Representation
Representation of stateful context for the substitution process
Constructors
| Context [α] α |
type TemplateCache = HashMap String Template Source
A collection of templates with quick access via their hashed names