-- SPDX-FileCopyrightText: 2022 Serokell <https://serokell.io/>
--
-- SPDX-License-Identifier: MPL-2.0

-- | Set of basic rendering modes, where 'Buildable' is treated as
-- the primary way to render data.
module Text.Interpolation.Nyan.RModes.Buildable where

import Fmt (Buildable (..), Builder)

import Text.Interpolation.Nyan.Core

-- | Default render mode.
rmode' :: Buildable a => RMode a
rmode' :: forall a. Buildable a => RMode a
rmode' = forall a. (a -> Builder) -> RMode a
RMode forall p. Buildable p => p -> Builder
build

-- | Render via 'Show'.
rmode's :: Show a => RMode a
rmode's :: forall a. Show a => RMode a
rmode's = forall a. (a -> Builder) -> RMode a
RMode forall a b. (a -> b) -> a -> b
$ forall p. Buildable p => p -> Builder
build forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Show a => a -> String
show

-- | Rendering mode for 'Builder'.
rmode'b :: RMode Builder
rmode'b :: RMode Builder
rmode'b = forall a. (a -> Builder) -> RMode a
RMode forall a. a -> a
id