packages feed

autodocodec-nix-0.1.0.0: src/Autodocodec/Nix/Render.hs

module Autodocodec.Nix.Render
  ( toNixExpressionViaCodec,
    toNixExpressionVia,
    objectToNixExpressionViaCodec,
    objectToNixExpressionVia,
    renderExpression,
  )
where

import Autodocodec
import Autodocodec.Nix.Expression as Nix
import Data.Map (Map)
import Data.Text (Text)

toNixExpressionViaCodec :: (HasCodec a) => a -> Nix.Expression
toNixExpressionViaCodec = toNixExpressionVia codec

-- | Render a value as a nix expression via the given codec.
toNixExpressionVia :: ValueCodec a void -> a -> Nix.Expression
toNixExpressionVia c = jsonValueExpression . toJSONVia c

-- | Render an object as a nix attribute set via its 'HasObjectCodec' instance
--
-- Attrset
objectToNixExpressionViaCodec :: (HasObjectCodec a) => a -> Map Text Nix.Expression
objectToNixExpressionViaCodec = objectToNixExpressionVia objectCodec

-- | Render an object as a nix attribute set via the given object codec.
--
-- Attrset
objectToNixExpressionVia :: ObjectCodec a void -> a -> Map Text Nix.Expression
objectToNixExpressionVia c = jsonObjectExpression . toJSONObjectVia c