module Unison.Hashing.V2.NameSegment
  ( NameSegment (..),
  )
where

import Unison.Hashing.V2.Tokenizable qualified as H
import Unison.Prelude

-- | A name segment.
newtype NameSegment
  = NameSegment Text
  deriving stock (NameSegment -> NameSegment -> Bool
(NameSegment -> NameSegment -> Bool)
-> (NameSegment -> NameSegment -> Bool) -> Eq NameSegment
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NameSegment -> NameSegment -> Bool
== :: NameSegment -> NameSegment -> Bool
$c/= :: NameSegment -> NameSegment -> Bool
/= :: NameSegment -> NameSegment -> Bool
Eq, Eq NameSegment
Eq NameSegment =>
(NameSegment -> NameSegment -> Ordering)
-> (NameSegment -> NameSegment -> Bool)
-> (NameSegment -> NameSegment -> Bool)
-> (NameSegment -> NameSegment -> Bool)
-> (NameSegment -> NameSegment -> Bool)
-> (NameSegment -> NameSegment -> NameSegment)
-> (NameSegment -> NameSegment -> NameSegment)
-> Ord NameSegment
NameSegment -> NameSegment -> Bool
NameSegment -> NameSegment -> Ordering
NameSegment -> NameSegment -> NameSegment
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: NameSegment -> NameSegment -> Ordering
compare :: NameSegment -> NameSegment -> Ordering
$c< :: NameSegment -> NameSegment -> Bool
< :: NameSegment -> NameSegment -> Bool
$c<= :: NameSegment -> NameSegment -> Bool
<= :: NameSegment -> NameSegment -> Bool
$c> :: NameSegment -> NameSegment -> Bool
> :: NameSegment -> NameSegment -> Bool
$c>= :: NameSegment -> NameSegment -> Bool
>= :: NameSegment -> NameSegment -> Bool
$cmax :: NameSegment -> NameSegment -> NameSegment
max :: NameSegment -> NameSegment -> NameSegment
$cmin :: NameSegment -> NameSegment -> NameSegment
min :: NameSegment -> NameSegment -> NameSegment
Ord, Int -> NameSegment -> ShowS
[NameSegment] -> ShowS
NameSegment -> String
(Int -> NameSegment -> ShowS)
-> (NameSegment -> String)
-> ([NameSegment] -> ShowS)
-> Show NameSegment
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> NameSegment -> ShowS
showsPrec :: Int -> NameSegment -> ShowS
$cshow :: NameSegment -> String
show :: NameSegment -> String
$cshowList :: [NameSegment] -> ShowS
showList :: [NameSegment] -> ShowS
Show)

instance H.Tokenizable NameSegment where
  tokens :: NameSegment -> [Token]
tokens (NameSegment Text
t) = [Text -> Token
H.Text Text
t]