module Penny.Lincoln.Bits.Commodity where

import Penny.Lincoln.TextNonEmpty (
  TextNonEmpty ( TextNonEmpty ) )
import Data.List.NonEmpty (NonEmpty((:|)))
import Data.Text ( empty )

newtype Commodity =
  Commodity { unCommodity :: NonEmpty SubCommodity }
  deriving (Eq, Ord, Show)

newtype SubCommodity =
  SubCommodity { unSubCommodity :: TextNonEmpty }
  deriving (Eq, Ord, Show)

-- | Creates a Commodity whose name is only a single character.
charCommodity :: Char -> Commodity
charCommodity c =
  Commodity ((SubCommodity (TextNonEmpty c empty)) :| [])