-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Support for construction, rendering, and parsing of CUE sheets
--
-- Support for construction, rendering, and parsing of CUE sheets.
@package cue-sheet
@version 2.0.2
-- | Types describing structure of a CUE sheet. You probably want to import
-- Text.CueSheet instead.
module Text.CueSheet.Types
-- | CUE sheet, contains one or more files (see CueFile).
data CueSheet
CueSheet :: !Maybe Mcn -> !Maybe FilePath -> !Maybe CueText -> !Maybe CueText -> !Maybe CueText -> !Natural -> !NonEmpty CueFile -> CueSheet
-- | Disc's Media Catalog Number (see Mcn).
[cueCatalog] :: CueSheet -> !Maybe Mcn
-- | Name of the file that contains the encoded CD-Text information for the
-- disc.
[cueCdTextFile] :: CueSheet -> !Maybe FilePath
-- | Performer of the entire disc.
[cuePerformer] :: CueSheet -> !Maybe CueText
-- | Title of the entire disc.
[cueTitle] :: CueSheet -> !Maybe CueText
-- | Songwriter of the entire disc.
[cueSongwriter] :: CueSheet -> !Maybe CueText
-- | Number of the first track. Typically 1, but may be greater than 1.
[cueFirstTrackNumber] :: CueSheet -> !Natural
-- | Collection of files to be written.
[cueFiles] :: CueSheet -> !NonEmpty CueFile
-- | A file to be written. Single file can be divided into one or more
-- tracks (see CueTrack).
data CueFile
CueFile :: !FilePath -> !CueFileType -> !NonEmpty CueTrack -> CueFile
-- | Name of file.
[cueFileName] :: CueFile -> !FilePath
-- | Type of file.
[cueFileType] :: CueFile -> !CueFileType
-- | Collection of tracks in the file.
[cueFileTracks] :: CueFile -> !NonEmpty CueTrack
-- | Enumeration of audio or file's data types.
data CueFileType
-- | Intel binary file (least significant byte first). Use for data files.
Binary :: CueFileType
-- | Motorola binary file (most significant file first). Use for data
-- files.
Motorola :: CueFileType
-- | Audio AIFF file (44.1 kHz, 16 bit stereo).
Aiff :: CueFileType
-- | Audio WAVE file (44.1 kHz, 16 bit stereo).
Wave :: CueFileType
-- | Audio MP3 file (44.1 kHz 16 bit stereo).
MP3 :: CueFileType
-- | A track. Single track can have one or more indices.
data CueTrack
CueTrack :: !Bool -> !Bool -> !Bool -> !Bool -> !CueTrackType -> !Maybe Isrc -> !Maybe CueText -> !Maybe CueText -> !Maybe CueText -> !Maybe CueTime -> !Maybe CueTime -> !NonEmpty CueTime -> !Maybe CueTime -> CueTrack
-- | Flag: digital copy permitted.
[cueTrackDigitalCopyPermitted] :: CueTrack -> !Bool
-- | Flag: four channel audio.
[cueTrackFourChannelAudio] :: CueTrack -> !Bool
-- | Flag: pre-emphasis enabled (audio track only).
[cueTrackPreemphasisEnabled] :: CueTrack -> !Bool
-- | Flag: serial copy management system (not supported by all recorders).
[cueTrackSerialCopyManagement] :: CueTrack -> !Bool
-- | Type datatype.
[cueTrackType] :: CueTrack -> !CueTrackType
-- | The track's International Standard Recording Code (ISRC).
[cueTrackIsrc] :: CueTrack -> !Maybe Isrc
-- | Title of the track.
[cueTrackTitle] :: CueTrack -> !Maybe CueText
-- | Performer of the track.
[cueTrackPerformer] :: CueTrack -> !Maybe CueText
-- | Songwriter of the track.
[cueTrackSongwriter] :: CueTrack -> !Maybe CueText
-- | Track's pregap.
[cueTrackPregap] :: CueTrack -> !Maybe CueTime
-- | Starting time of track pregap, a.k.a. INDEX 0.
[cueTrackPregapIndex] :: CueTrack -> !Maybe CueTime
-- | Collection of indices for the track starting with index 1. The index
-- specifies the starting time of the track data. Index 1 is the only
-- index that's stored in the disc's table of contents.
[cueTrackIndices] :: CueTrack -> !NonEmpty CueTime
-- | Track's postgap.
[cueTrackPostgap] :: CueTrack -> !Maybe CueTime
-- | Track datatype.
data CueTrackType
-- | Audio/Music (2352).
CueTrackAudio :: CueTrackType
-- | Karaoke CD+G (2448).
CueTrackCdg :: CueTrackType
-- | CD-ROM Mode1 data (cooked).
CueTrackMode1_2048 :: CueTrackType
-- | CD-ROM Mode1 data (raw).
CueTrackMode1_2352 :: CueTrackType
-- | CD-ROM XA Mode2 data.
CueTrackMode2_2336 :: CueTrackType
-- | CD-ROM XA Mode2 data.
CueTrackMode2_2352 :: CueTrackType
-- | CD-I Mode2 data.
CueTrackCdi2336 :: CueTrackType
-- | CD-I Mode2 data.
CueTrackCdi2352 :: CueTrackType
-- | This datatype is used to indicate duration and position in time. It
-- contains number of frames. There are 75 frames in one second.
newtype CueTime
CueTime :: Natural -> CueTime
-- | Construct CueTime from minutes, seconds, and frames. There are
-- 75 frames per second. If number of seconds or frames is invalid,
-- InvalidSeconds or InvalidFrames will be thrown.
fromMmSsFf :: MonadThrow m => Natural -> Natural -> Natural -> m CueTime
-- | Get minutes, seconds, and frames from a CueTime value.
toMmSsFf :: CueTime -> (Natural, Natural, Natural)
-- | Render representation of CueTime in mm:ss:ff format.
showMmSsFf :: CueTime -> Text
-- | Disc's Media Catalog Number (MCN), must be 13 characters long, all the
-- characters must be numeric.
data Mcn
-- | Make a Mcn. If the provided Text value is not a valid
-- MCN, throw the InvalidMcnException.
mkMcn :: MonadThrow m => Text -> m Mcn
-- | Get Text from Mcn.
unMcn :: Mcn -> Text
-- | A type for things like title or performer that should have length
-- between 1 and 80 characters as per spec. We also demand that it does
-- not contain " and newline characters, as it's not clear from
-- the spec how to escape them properly.
data CueText
-- | Make a CueText. If the provided Text value is not a
-- valid CUE text, throw the InvalidCueText exception.
mkCueText :: MonadThrow m => Text -> m CueText
-- | Get Text from CueText.
unCueText :: CueText -> Text
-- | The track's International Standard Recording Code (ISRC). It must be
-- 12 characters in length. The first five characters are alphanumeric,
-- the last seven are numeric only.
data Isrc
-- | Make an Isrc, if the provided Text value is not a valid
-- ISRC, throw the InvalidIsrc exception.
mkIsrc :: MonadThrow m => Text -> m Isrc
-- | Get Text from Isrc.
unIsrc :: Isrc -> Text
-- | Exception type for the bad things that may happen while you use the
-- library.
data CueSheetException
-- | The value is greater than 59 and thus is invalid for
-- fromMmSsFf.
InvalidSeconds :: Natural -> CueSheetException
-- | The value is greater than 74 and thus is invalid for
-- fromMmSsFf.
InvalidFrames :: Natural -> CueSheetException
-- | Provided text wasn't a correct media catalog number (MCN).
InvalidMcn :: Text -> CueSheetException
-- | Provided text wasn't a valid CUE text.
InvalidCueText :: Text -> CueSheetException
-- | Provided text wasn't a valid ISRC.
InvalidIsrc :: Text -> CueSheetException
instance GHC.Generics.Generic Text.CueSheet.Types.CueFileType
instance GHC.Enum.Enum Text.CueSheet.Types.CueFileType
instance GHC.Enum.Bounded Text.CueSheet.Types.CueFileType
instance GHC.Classes.Ord Text.CueSheet.Types.CueFileType
instance GHC.Classes.Eq Text.CueSheet.Types.CueFileType
instance GHC.Read.Read Text.CueSheet.Types.CueFileType
instance GHC.Show.Show Text.CueSheet.Types.CueFileType
instance GHC.Generics.Generic Text.CueSheet.Types.CueTrackType
instance GHC.Enum.Enum Text.CueSheet.Types.CueTrackType
instance GHC.Enum.Bounded Text.CueSheet.Types.CueTrackType
instance GHC.Classes.Ord Text.CueSheet.Types.CueTrackType
instance GHC.Classes.Eq Text.CueSheet.Types.CueTrackType
instance GHC.Read.Read Text.CueSheet.Types.CueTrackType
instance GHC.Show.Show Text.CueSheet.Types.CueTrackType
instance GHC.Generics.Generic Text.CueSheet.Types.CueTime
instance GHC.Classes.Ord Text.CueSheet.Types.CueTime
instance GHC.Classes.Eq Text.CueSheet.Types.CueTime
instance GHC.Read.Read Text.CueSheet.Types.CueTime
instance GHC.Show.Show Text.CueSheet.Types.CueTime
instance GHC.Generics.Generic Text.CueSheet.Types.Mcn
instance GHC.Classes.Ord Text.CueSheet.Types.Mcn
instance GHC.Classes.Eq Text.CueSheet.Types.Mcn
instance GHC.Generics.Generic Text.CueSheet.Types.CueText
instance GHC.Classes.Ord Text.CueSheet.Types.CueText
instance GHC.Classes.Eq Text.CueSheet.Types.CueText
instance GHC.Generics.Generic Text.CueSheet.Types.Isrc
instance GHC.Classes.Ord Text.CueSheet.Types.Isrc
instance GHC.Classes.Eq Text.CueSheet.Types.Isrc
instance GHC.Generics.Generic Text.CueSheet.Types.CueTrack
instance GHC.Classes.Ord Text.CueSheet.Types.CueTrack
instance GHC.Classes.Eq Text.CueSheet.Types.CueTrack
instance GHC.Show.Show Text.CueSheet.Types.CueTrack
instance GHC.Generics.Generic Text.CueSheet.Types.CueFile
instance GHC.Classes.Ord Text.CueSheet.Types.CueFile
instance GHC.Classes.Eq Text.CueSheet.Types.CueFile
instance GHC.Show.Show Text.CueSheet.Types.CueFile
instance GHC.Generics.Generic Text.CueSheet.Types.CueSheet
instance GHC.Classes.Ord Text.CueSheet.Types.CueSheet
instance GHC.Classes.Eq Text.CueSheet.Types.CueSheet
instance GHC.Show.Show Text.CueSheet.Types.CueSheet
instance GHC.Generics.Generic Text.CueSheet.Types.CueSheetException
instance GHC.Read.Read Text.CueSheet.Types.CueSheetException
instance GHC.Show.Show Text.CueSheet.Types.CueSheetException
instance GHC.Classes.Ord Text.CueSheet.Types.CueSheetException
instance GHC.Classes.Eq Text.CueSheet.Types.CueSheetException
instance GHC.Exception.Type.Exception Text.CueSheet.Types.CueSheetException
instance Test.QuickCheck.Arbitrary.Arbitrary Text.CueSheet.Types.CueSheet
instance Test.QuickCheck.Arbitrary.Arbitrary Text.CueSheet.Types.CueFile
instance Test.QuickCheck.Arbitrary.Arbitrary Text.CueSheet.Types.CueTrack
instance GHC.Show.Show Text.CueSheet.Types.Isrc
instance Test.QuickCheck.Arbitrary.Arbitrary Text.CueSheet.Types.Isrc
instance GHC.Show.Show Text.CueSheet.Types.CueText
instance Test.QuickCheck.Arbitrary.Arbitrary Text.CueSheet.Types.CueText
instance GHC.Show.Show Text.CueSheet.Types.Mcn
instance Test.QuickCheck.Arbitrary.Arbitrary Text.CueSheet.Types.Mcn
instance Test.QuickCheck.Arbitrary.Arbitrary Text.CueSheet.Types.CueTime
instance Test.QuickCheck.Arbitrary.Arbitrary Text.CueSheet.Types.CueTrackType
instance Test.QuickCheck.Arbitrary.Arbitrary Text.CueSheet.Types.CueFileType
-- | The module contains a CUE sheet render. You probably want to import
-- Text.CueSheet instead.
module Text.CueSheet.Render
-- | Render a CUE sheet as a lazy ByteString. All Text values
-- in the CueSheet will be UTF-8 encoded.
renderCueSheet :: Bool -> CueSheet -> ByteString
-- | The modules contains a CUE sheet parser. You probably want to import
-- Text.CueSheet instead.
module Text.CueSheet.Parser
-- | Parse a CUE sheet from a lazy ByteString.
parseCueSheet :: String -> ByteString -> Either (ParseErrorBundle ByteString Eec) CueSheet
-- | The enumeration of all failures that may happen during running of
-- parseCueSheet.
data CueParserFailure
-- | A wrapper for a trivial error
CueParserTrivialError :: Maybe (ErrorItem Word8) -> Set (ErrorItem Word8) -> CueParserFailure
-- | We ran into an invalid media catalog number
CueParserInvalidCatalog :: Text -> CueParserFailure
-- | We ran into an invalid text literal
CueParserInvalidCueText :: Text -> CueParserFailure
-- | We spotted a track out of order
CueParserTrackOutOfOrder :: CueParserFailure
-- | We ran into an invalid ISRC
CueParserInvalidTrackIsrc :: Text -> CueParserFailure
-- | We ran into an invalid number of seconds
CueParserInvalidSeconds :: Natural -> CueParserFailure
-- | We ran into an invalid number of frames
CueParserInvalidFrames :: Natural -> CueParserFailure
-- | We spotted a track index out of order
CueParserTrackIndexOutOfOrder :: CueParserFailure
-- | Extended error component with support for storing number of track
-- declaration in which a parsing error has occurred.
data Eec
Eec :: Maybe Natural -> CueParserFailure -> Eec
instance GHC.Generics.Generic Text.CueSheet.Parser.CueParserFailure
instance Data.Data.Data Text.CueSheet.Parser.CueParserFailure
instance GHC.Classes.Ord Text.CueSheet.Parser.CueParserFailure
instance GHC.Classes.Eq Text.CueSheet.Parser.CueParserFailure
instance GHC.Show.Show Text.CueSheet.Parser.CueParserFailure
instance GHC.Generics.Generic Text.CueSheet.Parser.Eec
instance Data.Data.Data Text.CueSheet.Parser.Eec
instance GHC.Classes.Ord Text.CueSheet.Parser.Eec
instance GHC.Classes.Eq Text.CueSheet.Parser.Eec
instance GHC.Show.Show Text.CueSheet.Parser.Eec
instance Text.Megaparsec.Error.ShowErrorComponent Text.CueSheet.Parser.Eec
instance Text.Megaparsec.Error.ShowErrorComponent Text.CueSheet.Parser.CueParserFailure
-- | The module allows us to construct, read, and write CUE sheets. The
-- data types are defined in such a way that incorrect CUE sheets cannot
-- be represented. See parseCueSheet for parsing of plain text CUE
-- sheet files and renderCueSheet for rendering.
module Text.CueSheet
-- | CUE sheet, contains one or more files (see CueFile).
data CueSheet
CueSheet :: !Maybe Mcn -> !Maybe FilePath -> !Maybe CueText -> !Maybe CueText -> !Maybe CueText -> !Natural -> !NonEmpty CueFile -> CueSheet
-- | Disc's Media Catalog Number (see Mcn).
[cueCatalog] :: CueSheet -> !Maybe Mcn
-- | Name of the file that contains the encoded CD-Text information for the
-- disc.
[cueCdTextFile] :: CueSheet -> !Maybe FilePath
-- | Performer of the entire disc.
[cuePerformer] :: CueSheet -> !Maybe CueText
-- | Title of the entire disc.
[cueTitle] :: CueSheet -> !Maybe CueText
-- | Songwriter of the entire disc.
[cueSongwriter] :: CueSheet -> !Maybe CueText
-- | Number of the first track. Typically 1, but may be greater than 1.
[cueFirstTrackNumber] :: CueSheet -> !Natural
-- | Collection of files to be written.
[cueFiles] :: CueSheet -> !NonEmpty CueFile
-- | A file to be written. Single file can be divided into one or more
-- tracks (see CueTrack).
data CueFile
CueFile :: !FilePath -> !CueFileType -> !NonEmpty CueTrack -> CueFile
-- | Name of file.
[cueFileName] :: CueFile -> !FilePath
-- | Type of file.
[cueFileType] :: CueFile -> !CueFileType
-- | Collection of tracks in the file.
[cueFileTracks] :: CueFile -> !NonEmpty CueTrack
-- | Enumeration of audio or file's data types.
data CueFileType
-- | Intel binary file (least significant byte first). Use for data files.
Binary :: CueFileType
-- | Motorola binary file (most significant file first). Use for data
-- files.
Motorola :: CueFileType
-- | Audio AIFF file (44.1 kHz, 16 bit stereo).
Aiff :: CueFileType
-- | Audio WAVE file (44.1 kHz, 16 bit stereo).
Wave :: CueFileType
-- | Audio MP3 file (44.1 kHz 16 bit stereo).
MP3 :: CueFileType
-- | A track. Single track can have one or more indices.
data CueTrack
CueTrack :: !Bool -> !Bool -> !Bool -> !Bool -> !CueTrackType -> !Maybe Isrc -> !Maybe CueText -> !Maybe CueText -> !Maybe CueText -> !Maybe CueTime -> !Maybe CueTime -> !NonEmpty CueTime -> !Maybe CueTime -> CueTrack
-- | Flag: digital copy permitted.
[cueTrackDigitalCopyPermitted] :: CueTrack -> !Bool
-- | Flag: four channel audio.
[cueTrackFourChannelAudio] :: CueTrack -> !Bool
-- | Flag: pre-emphasis enabled (audio track only).
[cueTrackPreemphasisEnabled] :: CueTrack -> !Bool
-- | Flag: serial copy management system (not supported by all recorders).
[cueTrackSerialCopyManagement] :: CueTrack -> !Bool
-- | Type datatype.
[cueTrackType] :: CueTrack -> !CueTrackType
-- | The track's International Standard Recording Code (ISRC).
[cueTrackIsrc] :: CueTrack -> !Maybe Isrc
-- | Title of the track.
[cueTrackTitle] :: CueTrack -> !Maybe CueText
-- | Performer of the track.
[cueTrackPerformer] :: CueTrack -> !Maybe CueText
-- | Songwriter of the track.
[cueTrackSongwriter] :: CueTrack -> !Maybe CueText
-- | Track's pregap.
[cueTrackPregap] :: CueTrack -> !Maybe CueTime
-- | Starting time of track pregap, a.k.a. INDEX 0.
[cueTrackPregapIndex] :: CueTrack -> !Maybe CueTime
-- | Collection of indices for the track starting with index 1. The index
-- specifies the starting time of the track data. Index 1 is the only
-- index that's stored in the disc's table of contents.
[cueTrackIndices] :: CueTrack -> !NonEmpty CueTime
-- | Track's postgap.
[cueTrackPostgap] :: CueTrack -> !Maybe CueTime
-- | Track datatype.
data CueTrackType
-- | Audio/Music (2352).
CueTrackAudio :: CueTrackType
-- | Karaoke CD+G (2448).
CueTrackCdg :: CueTrackType
-- | CD-ROM Mode1 data (cooked).
CueTrackMode1_2048 :: CueTrackType
-- | CD-ROM Mode1 data (raw).
CueTrackMode1_2352 :: CueTrackType
-- | CD-ROM XA Mode2 data.
CueTrackMode2_2336 :: CueTrackType
-- | CD-ROM XA Mode2 data.
CueTrackMode2_2352 :: CueTrackType
-- | CD-I Mode2 data.
CueTrackCdi2336 :: CueTrackType
-- | CD-I Mode2 data.
CueTrackCdi2352 :: CueTrackType
-- | This datatype is used to indicate duration and position in time. It
-- contains number of frames. There are 75 frames in one second.
newtype CueTime
CueTime :: Natural -> CueTime
-- | Construct CueTime from minutes, seconds, and frames. There are
-- 75 frames per second. If number of seconds or frames is invalid,
-- InvalidSeconds or InvalidFrames will be thrown.
fromMmSsFf :: MonadThrow m => Natural -> Natural -> Natural -> m CueTime
-- | Get minutes, seconds, and frames from a CueTime value.
toMmSsFf :: CueTime -> (Natural, Natural, Natural)
-- | Render representation of CueTime in mm:ss:ff format.
showMmSsFf :: CueTime -> Text
-- | Disc's Media Catalog Number (MCN), must be 13 characters long, all the
-- characters must be numeric.
data Mcn
-- | Make a Mcn. If the provided Text value is not a valid
-- MCN, throw the InvalidMcnException.
mkMcn :: MonadThrow m => Text -> m Mcn
-- | Get Text from Mcn.
unMcn :: Mcn -> Text
-- | A type for things like title or performer that should have length
-- between 1 and 80 characters as per spec. We also demand that it does
-- not contain " and newline characters, as it's not clear from
-- the spec how to escape them properly.
data CueText
-- | Make a CueText. If the provided Text value is not a
-- valid CUE text, throw the InvalidCueText exception.
mkCueText :: MonadThrow m => Text -> m CueText
-- | Get Text from CueText.
unCueText :: CueText -> Text
-- | The track's International Standard Recording Code (ISRC). It must be
-- 12 characters in length. The first five characters are alphanumeric,
-- the last seven are numeric only.
data Isrc
-- | Make an Isrc, if the provided Text value is not a valid
-- ISRC, throw the InvalidIsrc exception.
mkIsrc :: MonadThrow m => Text -> m Isrc
-- | Get Text from Isrc.
unIsrc :: Isrc -> Text
-- | Exception type for the bad things that may happen while you use the
-- library.
data CueSheetException
-- | The value is greater than 59 and thus is invalid for
-- fromMmSsFf.
InvalidSeconds :: Natural -> CueSheetException
-- | The value is greater than 74 and thus is invalid for
-- fromMmSsFf.
InvalidFrames :: Natural -> CueSheetException
-- | Provided text wasn't a correct media catalog number (MCN).
InvalidMcn :: Text -> CueSheetException
-- | Provided text wasn't a valid CUE text.
InvalidCueText :: Text -> CueSheetException
-- | Provided text wasn't a valid ISRC.
InvalidIsrc :: Text -> CueSheetException
-- | Parse a CUE sheet from a lazy ByteString.
parseCueSheet :: String -> ByteString -> Either (ParseErrorBundle ByteString Eec) CueSheet
-- | The enumeration of all failures that may happen during running of
-- parseCueSheet.
data CueParserFailure
-- | A wrapper for a trivial error
CueParserTrivialError :: Maybe (ErrorItem Word8) -> Set (ErrorItem Word8) -> CueParserFailure
-- | We ran into an invalid media catalog number
CueParserInvalidCatalog :: Text -> CueParserFailure
-- | We ran into an invalid text literal
CueParserInvalidCueText :: Text -> CueParserFailure
-- | We spotted a track out of order
CueParserTrackOutOfOrder :: CueParserFailure
-- | We ran into an invalid ISRC
CueParserInvalidTrackIsrc :: Text -> CueParserFailure
-- | We ran into an invalid number of seconds
CueParserInvalidSeconds :: Natural -> CueParserFailure
-- | We ran into an invalid number of frames
CueParserInvalidFrames :: Natural -> CueParserFailure
-- | We spotted a track index out of order
CueParserTrackIndexOutOfOrder :: CueParserFailure
-- | Extended error component with support for storing number of track
-- declaration in which a parsing error has occurred.
data Eec
Eec :: Maybe Natural -> CueParserFailure -> Eec
-- | Render a CUE sheet as a lazy ByteString. All Text values
-- in the CueSheet will be UTF-8 encoded.
renderCueSheet :: Bool -> CueSheet -> ByteString