Git Product home page Git Product logo

cue-sheet's Introduction

CUE sheet

License BSD3 Hackage Stackage Nightly Stackage LTS CI

The library provides support for construction, rendering, and parsing of CUE sheets.

What is a CUE sheet?

A cue sheet, or cue file, is a metadata file which describes how the tracks of a CD or DVD are laid out. Cue sheets are stored as plain text files and commonly have a “.cue” filename extension. CDRWIN first introduced cue sheets, which are now supported by many optical disc authoring applications and media players.

Read more on Wikipedia. The description of the format can be found here, scroll to the appendix A (it's closest we get to a “specification”).

Contribution

Issues, bugs, and questions may be reported in the GitHub issue tracker for this project.

Pull requests are also welcome.

License

Copyright © 2016–present Mark Karpov

Distributed under BSD 3 clause license.

cue-sheet's People

Contributors

dependabot[bot] avatar mrkkrp avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

chrismanning

cue-sheet's Issues

Build failures with mtl-2.3

Building library for cue-sheet-2.0.1..
[1 of 4] Compiling Text.CueSheet.Types ( Text/CueSheet/Types.hs, dist/build/Text/CueSheet/Types.o, dist/build/Text/CueSheet/Types.dyn_o )

Text/CueSheet/Types.hs:41:1: warning: [-Wunused-imports]
    The import of ‘Data.Monoid’ is redundant
      except perhaps to import instances from ‘Data.Monoid’
    To import instances alone, use: import Data.Monoid()
   |
41 | import Data.Monoid ((<>))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^
[2 of 4] Compiling Text.CueSheet.Render ( Text/CueSheet/Render.hs, dist/build/Text/CueSheet/Render.o, dist/build/Text/CueSheet/Render.dyn_o )
[3 of 4] Compiling Text.CueSheet.Parser ( Text/CueSheet/Parser.hs, dist/build/Text/CueSheet/Parser.o, dist/build/Text/CueSheet/Parser.dyn_o )

Text/CueSheet/Parser.hs:159:3: error:
    Variable not in scope:
      void
        :: StateT Context (Parsec Eec ByteString) [()]
           -> StateT Context (Parsec Eec ByteString) a10
    |
159 |   void (many pHeaderItem)
    |   ^^^^

Text/CueSheet/Parser.hs:160:3: error:
    Variable not in scope:
      void
        :: StateT Context (Parsec Eec ByteString) [()]
           -> StateT Context (Parsec Eec ByteString) a9
    |
160 |   void (some pFile)
    |   ^^^^

Text/CueSheet/Parser.hs:229:3: error:
    Variable not in scope:
      void
        :: Parser ByteString -> StateT Context (Parsec Eec ByteString) a3
    |
229 |   void (symbol "REM")
    |   ^^^^

Text/CueSheet/Parser.hs:234:3: error:
    Variable not in scope:
      void
        :: Parser ByteString -> StateT Context (Parsec Eec ByteString) a8
    |
234 |   void (symbol "FILE")
    |   ^^^^

Text/CueSheet/Parser.hs:243:3: error:
    Variable not in scope:
      void
        :: StateT Context (Parsec Eec ByteString) [()]
           -> StateT Context (Parsec Eec ByteString) a7
    |
243 |   void (some (pTrack <|> pRem))
    |   ^^^^

Text/CueSheet/Parser.hs:255:3: error:
    Variable not in scope:
      void
        :: Parser ByteString -> StateT Context (Parsec Eec ByteString) a6
    |
255 |   void (symbol "TRACK")
    |   ^^^^

Text/CueSheet/Parser.hs:283:5: error:
    Variable not in scope:
      void
        :: StateT Context (Parsec Eec ByteString) [()]
           -> StateT Context (Parsec Eec ByteString) a5
    |
283 |     void (many pTrackHeaderItem)
    |     ^^^^

Text/CueSheet/Parser.hs:297:5: error:
    Variable not in scope:
      void
        :: StateT Context (Parsec Eec ByteString) [()]
           -> StateT Context (Parsec Eec ByteString) a4
    |
297 |     void (some (grabIndex <|> pRem))
    |     ^^^^

Text/CueSheet/Parser.hs:301:5: error:
    Variable not in scope:
      void
        :: StateT Context (Parsec Eec ByteString) (Maybe ())
           -> StateT Context (Parsec Eec ByteString) ()
    |
301 |     void (optional pPostgap)
    |     ^^^^

Text/CueSheet/Parser.hs:317:3: error:
    Variable not in scope:
      void
        :: StateT Context (Parsec Eec ByteString) [()]
           -> StateT Context (Parsec Eec ByteString) ()
    |
317 |   void (some pFlag) <* eol <* scn
    |   ^^^^

Text/CueSheet/Parser.hs:406:3: error:
    Variable not in scope:
      void
        :: Parser ByteString -> StateT Context (Parsec Eec ByteString) a2
    |
406 |   void (symbol "INDEX")
    |   ^^^^

Text/CueSheet/Parser.hs:417:3: error:
    Variable not in scope:
      void :: m2 (Token s2) -> StateT Context (Parsec Eec ByteString) a1
    |
417 |   void (char 58)
    |   ^^^^

Text/CueSheet/Parser.hs:427:3: error:
    Variable not in scope:
      void :: m1 (Token s1) -> StateT Context (Parsec Eec ByteString) a0
    |
427 |   void (char 58)
    |   ^^^^

Text/CueSheet/Parser.hs:458:11: error:
    Variable not in scope:
      void
        :: Parser ByteString -> StateT Context (Parsec Eec ByteString) ()
    |
458 |   let p = void (symbol command)
    |           ^^^^

Text/CueSheet/Parser.hs:522:15: error:
    Variable not in scope:
      void :: m0 (Tokens s0) -> StateT Context (Parsec Eec ByteString) ()
    |
522 | sc = L.space (void $ takeWhile1P Nothing f) empty empty
    |               ^^^^

Build failure (GHC 8.2 or QuickCheck)

Building library for cue-sheet-0.1.1..
[1 of 4] Compiling Text.CueSheet.Types ( Text/CueSheet/Types.hs, dist/build/Text/CueSheet/Types.o )

Text/CueSheet/Types.hs:80:10: error:
    • No instance for (Arbitrary Natural)
        arising from a use of ‘arbitrary’
    • In the first argument of ‘suchThat’, namely ‘arbitrary’
      In the second argument of ‘(<*>)’, namely
        ‘(arbitrary `suchThat` (> 0))’
      In the first argument of ‘(<*>)’, namely
        ‘CueSheet <$> arbitrary <*> oneof [pure Nothing, Just <$> filepath]
           <*> arbitrary
           <*> arbitrary
           <*> arbitrary
           <*> (arbitrary `suchThat` (> 0))’
   |
80 |     <*> (arbitrary `suchThat` (> 0))
   |          ^^^^^^^^^

Text/CueSheet/Types.hs:82:19: error:
    • No instance for (Arbitrary (NonEmpty CueFile))
        arising from a use of ‘arbitrary’
    • In the first argument of ‘scaleDown’, namely ‘arbitrary’
      In the second argument of ‘(<*>)’, namely ‘scaleDown arbitrary’
      In the expression:
        CueSheet <$> arbitrary <*> oneof [pure Nothing, Just <$> filepath]
          <*> arbitrary
          <*> arbitrary
          <*> arbitrary
          <*> (arbitrary `suchThat` (> 0))
          <*> scaleDown arbitrary
   |
82 |     <*> scaleDown arbitrary
   |                   ^^^^^^^^^

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.