-- 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' :: RMode a
rmode' = (a -> Builder) -> RMode a
forall a. (a -> Builder) -> RMode a
RMode a -> Builder
forall p. Buildable p => p -> Builder
build

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

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