-- 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