homepage: https://github.com/owensmurray/om-show
changelog-type: ''
hash: 879a12ea8cfb6af5fdcbb21bf6e8d7b8c3fef64c03af418e96e54761e0dc5093
test-bench-deps: {}
maintainer: rick@owensmurray.com
synopsis: Utilities for showing string-like things.
changelog: ''
basic-deps:
  base: '>=4.15.0.0 && <4.16'
  text: '>=1.2.5.0 && <1.3'
  aeson: '>=2.0.3.0 && <2.1'
all-versions:
- 0.1.2.6
author: Rick Owens
latest: 0.1.2.6
description-type: markdown
description: |
  # om-show

  Haskell utilities for turning values into string representations. It is mainly
  just a couple of very useful functions that eliminate a lot of conversion to
  from text types. It's so small that I can just post the entire source code in
  this README:

  ```haskell
  {-# LANGUAGE DerivingStrategies #-}
  {-# LANGUAGE GeneralizedNewtypeDeriving #-}

  {- | Utilities for showing string-like things. -}
  module OM.Show (
    showt,
    showj,
    ShowJ(..),
  ) where


  import Data.Aeson (encode, ToJSON)
  import Data.String (IsString, fromString)
  import qualified Data.Text.Lazy as TL
  import qualified Data.Text.Lazy.Encoding as TLE


  {- | Like 'show', but for any string-like thing. -}
  showt :: (Show a, IsString b) => a -> b
  showt = fromString . show


  {- |
    Show the JSON representation as any kind of string-like thing.
    Primarily useful for dumping JSON values into log messages without having to
    jump through too many hoops.
  -}
  showj :: (ToJSON a, IsString b) => a -> b
  showj = fromString . TL.unpack . TLE.decodeUtf8 . encode


  {- |
    Wrapper whose 'Show' instance outputs JSON.

    Especially useful with `-XDerivingVia`
    e.g.

    > newtype Foo = Foo SomeType
    >   deriving Show via (ShowJ SomeType)

    This will cause @show (foo :: Foo) to output the JSON representation
    of SomeType.
  -}
  newtype ShowJ a = ShowJ a
    deriving stock (Eq, Ord)
    deriving newtype (ToJSON)
  instance (ToJSON a) => Show (ShowJ a) where
    show = showj
  ```
license-name: MIT

Update from Hackage at 2022-10-11T02:44:40Z
Update from Hackage at 2022-10-11T02:44:40Z
