module Builder
  ( Builder
  , char
  , bshow
  , intersperse
  , parens
  , dquotes
  , freeze
  , thaw
  , thaw'
  , thawStr
  ) where

import Solr.Prelude

import Data.Text.Lazy.Builder
  (Builder, fromLazyText, fromString, fromText, singleton, toLazyText)

char :: Char -> Builder
char = singleton

bshow :: Show a => a -> Builder
bshow = fromString . show

intersperse :: Char -> [Builder] -> Builder
intersperse c0 = go (singleton c0)
 where
  go _ []     = mempty
  go _ [w]    = w
  go c (w:ws) = w <> c <> go c ws

parens :: Builder -> Builder
parens s = singleton '(' <> s <> singleton ')'

dquotes :: Builder -> Builder
dquotes s = singleton '"' <> s <> singleton '"'

freeze :: Builder -> LText
freeze = toLazyText

thaw :: LText -> Builder
thaw = fromLazyText

thaw' :: Text -> Builder
thaw' = fromText

thawStr :: String -> Builder
thawStr = fromString