module Data.SPDX.Types (
LicenseId(..)
, getLicenseId
, LicenseExceptionId(..)
, getLicenseExceptionId
, LicenseRef(..)
, LicenseExpression(..)
) where
import Data.Data
import GHC.Generics
data LicenseRef = LicenseRef
{ lrDocument :: !(Maybe String)
, lrLicense :: !String
}
deriving (Eq, Ord, Show, Read, Typeable, Data, Generic)
newtype LicenseId = LicenseId String
deriving (Eq, Ord, Show, Read, Typeable, Data, Generic)
getLicenseId :: LicenseId -> String
getLicenseId (LicenseId l) = l
newtype LicenseExceptionId = LicenseExceptionId String
deriving (Eq, Ord, Show, Read, Typeable, Data, Generic)
getLicenseExceptionId :: LicenseExceptionId -> String
getLicenseExceptionId (LicenseExceptionId l) = l
data LicenseExpression = ELicense !Bool !(Either LicenseRef LicenseId) !(Maybe LicenseExceptionId)
| EConjunction !LicenseExpression !LicenseExpression
| EDisjunction !LicenseExpression !LicenseExpression
deriving (Eq, Ord, Show, Read, Typeable, Data, Generic)