1 {-# LANGUAGE DerivingStrategies #-}
2 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
4 module Text.Edifact.Scaffolder.Commons.Types
5 ( -- * Codes of elements
14 -- * Ordering of elements
22 , LanguageExtension(..)
30 import Control.Monad.Reader (ReaderT)
31 import Data.String (IsString)
33 newtype MessageCode = MessageCode { getMessageCode :: String } deriving newtype (Show, Eq, Ord, IsString)
34 newtype GroupCode = GroupCode { getGroupCode :: String } deriving newtype (Show, Eq, Ord, IsString)
35 newtype SegmentCode = SegmentCode { getSegmentCode :: String } deriving newtype (Show, Eq, Ord, IsString)
36 newtype SegmentName = SegmentName { getSegmentName :: String } deriving newtype (Show, Eq, Ord, IsString)
37 newtype CompositeCode = CompositeCode { getCompositeCode :: String } deriving newtype (Show, Eq, Ord, IsString)
38 newtype CompositeName = CompositeName { getCompositeName :: String } deriving newtype (Show, Eq, Ord, IsString)
39 newtype SimpleCode = SimpleCode { getSimpleCode :: String } deriving newtype (Show, Eq, Ord, IsString)
40 newtype SimpleName = SimpleName { getSimpleName :: String } deriving newtype (Show, Eq, Ord, IsString)
42 newtype Position = Position { getPosition :: String } deriving newtype (Show, Eq, Ord, IsString)
44 data Presence = Mandatory
46 deriving (Show, Eq, Ord)
48 newtype ModuleName = ModuleName { getModuleName :: String } deriving newtype (Show, Eq, IsString)
50 instance Semigroup ModuleName where
53 (<.>) :: ModuleName -> ModuleName -> ModuleName
54 (ModuleName parent) <.> (ModuleName child) = ModuleName (parent <> "." <> child)
56 newtype LanguageExtension = LanguageExtension { getLanguageExtension :: String } deriving newtype IsString
58 type Scaffolding = ReaderT ScaffoldingEnv IO
60 newtype Revision = Revision { getRevision :: String } deriving newtype (Show, Eq, IsString)
64 { revision :: Revision
65 , hostModule :: ModuleName
66 , specificationsHome :: FilePath
67 , targetDirectory :: FilePath
68 , debugParsing :: Bool
71 disableDebugging :: ScaffoldingEnv -> ScaffoldingEnv
72 disableDebugging env = env { debugParsing = False }