name:                svfactor
version:             0.1
license:             BSD3
license-file:        LICENCE
author:              George Wilson
maintainer:          george@qfpl.io
copyright:           Copyright (c) 2018, Commonwealth Scientific and Industrial Research Organisation (CSIRO) ABN 41 687 119 230.
category:            CSV, Text, Web
synopsis:
  Syntax-preserving CSV manipulation

description:
  <<http://i.imgur.com/uZnp9ke.png>>
  .
  svfactor is a library for parsing, manipulating, and printing CSV and
  similar formats (such as PSV, TSV, and many more).
  .
  svfactor retains all syntactic information including newlines, and
  provides lenses, prisms, and traversals to query and manipulate this
  structure.
  This should make it useful for writing custom CSV transformations and
  sanitisation tools. For example, one could easily use it to rewrite all
  CRLF newlines to LF.
  It also extends RFC4180 by allowing optional spacing surrounding fields.
  .
  svfactor's parser is exposed so you can use it independently and printing is similarly standalone.
  .
  Please note that there are __known performance problems with svfactor__.
  .
  Examples:
  .
  * Handling multiple logical documents in one file: <https://github.com/qfpl/svfactor/blob/master/examples/src/Data/Svfactor/Example/Concat.hs Concat.hs>
  * Fixing inconsistent formatting with lenses: <https://github.com/qfpl/svfactor/blob/master/examples/src/Data/Svfactor/Example/Requote.hs Requote.hs>

homepage:            https://github.com/qfpl/svfactor
bug-reports:         https://github.com/qfpl/svfactor/issues
build-type:          Simple
extra-source-files:  changelog.md
cabal-version:       >=1.10
tested-with:         GHC == 7.8.4
                     , GHC == 7.10.3
                     , GHC == 8.0.2
                     , GHC == 8.2.2
                     , GHC == 8.4.3

source-repository    head
  type:              git
  location:          git@github.com/qfpl/svfactor.git

library
  exposed-modules:     Data.Svfactor
                       , Data.Svfactor.Parse
                       , Data.Svfactor.Parse.Internal
                       , Data.Svfactor.Parse.Options
                       , Data.Svfactor.Print
                       , Data.Svfactor.Print.Internal
                       , Data.Svfactor.Print.Options
                       , Data.Svfactor.Syntax
                       , Data.Svfactor.Syntax.Field
                       , Data.Svfactor.Syntax.Record
                       , Data.Svfactor.Syntax.Sv
                       , Data.Svfactor.Text.Escape
                       , Data.Svfactor.Text.Newline
                       , Data.Svfactor.Text.Space
                       , Data.Svfactor.Text.Quote
                       , Data.Svfactor.Text.Separator
                       , Data.Svfactor.Structure.Headedness
                       , Data.Svfactor.Vector.NonEmpty

  -- other-modules:
  -- other-extensions:    
  build-depends:       attoparsec >= 0.12.1.4 && < 0.14
                       , base >=4.7 && <5
                       , bifunctors >= 5.1 && < 6
                       , bytestring >= 0.9.1.10 && < 0.11
                       , charset >=0.3 && <=0.4
                       , deepseq >= 1.1 && < 1.5
                       , lens >= 4 && < 5
                       , parsec >= 3.1 && < 3.2
                       , parsers >=0.12 && <0.13
                       , semigroupoids >= 5 && <6
                       , semigroups >= 0.18 && < 0.19
                       , text >= 1.0 && < 1.3
                       , transformers >= 0.2 && < 0.6
                       , trifecta >= 1.5 && < 2.1
                       , utf8-string >= 1 && < 1.1
                       , vector >= 0.10 && < 0.13
  hs-source-dirs:      src
  default-language:    Haskell2010
  ghc-options:
                       -Wall -O2

test-suite             tasty
  type:
                       exitcode-stdio-1.0
  main-is:
                       tasty.hs
  other-modules:
                       Data.Svfactor.Generators
                       , Data.Svfactor.ParseTest
                       , Data.Svfactor.PrintTest
                       , Data.Svfactor.RoundTripsParsePrint
  default-language:
                       Haskell2010
  build-depends:
                       base >=4.7 && <5
                       , bytestring >= 0.9.1.10 && < 0.11
                       , hedgehog >= 0.5 && < 0.7
                       , lens >= 4 && < 5
                       , parsers >=0.12 && <0.13
                       , semigroups >= 0.18 && < 0.19
                       , svfactor
                       , tasty >= 0.11 && < 1.2
                       , tasty-hedgehog >= 0.1 && < 0.3
                       , tasty-hunit >= 0.9 && < 0.11
                       , text >= 1.0 && < 1.3
                       , trifecta >= 1.5 && < 2.1
                       , utf8-string >= 1 && < 1.1
                       , vector >= 0.10 && < 0.13
  ghc-options:
                       -Wall
  hs-source-dirs:
                       test