module HIndent.Ast.Module.Name
  ( ModuleName
  , mkModuleName
  ) where

import qualified GHC.Unit as GHC
import HIndent.Ast.NodeComments
import HIndent.Pretty
import HIndent.Pretty.Combinators
import HIndent.Pretty.NodeComments

newtype ModuleName =
  ModuleName String

instance CommentExtraction ModuleName where
  nodeComments :: ModuleName -> NodeComments
nodeComments ModuleName
_ = [LEpaComment] -> [LEpaComment] -> [LEpaComment] -> NodeComments
NodeComments [] [] []

instance Pretty ModuleName where
  pretty' :: ModuleName -> Printer ()
pretty' (ModuleName String
x) = HasCallStack => String -> Printer ()
String -> Printer ()
string String
"module " Printer () -> Printer () -> Printer ()
forall a b. Printer a -> Printer b -> Printer b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> HasCallStack => String -> Printer ()
String -> Printer ()
string String
x

mkModuleName :: GHC.ModuleName -> ModuleName
mkModuleName :: ModuleName -> ModuleName
mkModuleName = String -> ModuleName
ModuleName (String -> ModuleName)
-> (ModuleName -> String) -> ModuleName -> ModuleName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ModuleName -> String
GHC.moduleNameString