module Argo.Encode where

import qualified Argo.Class.ToValue as ToValue
import qualified Argo.Type.Value as Value
import qualified Data.ByteString.Builder as Builder

encode :: ToValue.ToValue a => a -> Builder.Builder
encode :: a -> Builder
encode = (a -> Value) -> a -> Builder
forall a. (a -> Value) -> a -> Builder
encodeWith a -> Value
forall a. ToValue a => a -> Value
ToValue.toValue

encodeWith :: (a -> Value.Value) -> a -> Builder.Builder
encodeWith :: (a -> Value) -> a -> Builder
encodeWith a -> Value
f = Value -> Builder
Value.encode (Value -> Builder) -> (a -> Value) -> a -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Value
f