cabal-version:       1.14
name:                HsYAML
version:             0.2.1.0
x-revision:          4

synopsis:            Pure Haskell YAML 1.2 processor
homepage:            https://github.com/hvr/HsYAML
bug-reports:         https://github.com/hvr/HsYAML/issues
license:             GPL-2
X-SPDX-License-Identifier: GPL-2.0-or-later
license-files:       LICENSE.GPLv2 LICENSE.GPLv3
author:              Herbert Valerio Riedel
maintainer:          [email protected]
copyright:           2015-2018 Herbert Valerio Riedel
                  , 2007-2008 Oren Ben-Kiki
category:            Text
build-type:          Simple
tested-with:
 GHC == 9.2.1
 GHC == 9.0.1
 GHC == 8.10.7
 GHC == 8.8.4
 GHC == 8.6.5
 GHC == 8.4.4
 GHC == 8.2.2
 GHC == 8.0.2
 GHC == 7.10.3
 GHC == 7.8.4
 GHC == 7.6.3
 GHC == 7.4.2

description:
 @HsYAML@ is a [YAML 1.2](http://yaml.org/spec/1.2/spec.html) processor, i.e. a library for parsing and serializing YAML documents.

 .
 Features of @HsYAML@ include:
 .
  * Pure Haskell implementation with small dependency footprint and emphasis on strict compliance with the [YAML 1.2 specification](http://yaml.org/spec/1.2/spec.html).
  * Direct decoding to native Haskell types via (@aeson@-inspired) typeclass-based API (see "Data.YAML").
  * Allows round-tripping while preserving ordering, anchors, and comments at Event-level.
  * Support for constructing custom YAML node graph representation (including support for cyclic YAML data structures).
  * Support for the standard (untyped) /Failsafe/, (strict) /JSON/, and (flexible) /Core/ \"schemas\" providing implicit typing rules as defined in the YAML 1.2 specification (including support for user-defined custom schemas; see "Data.YAML.Schema").
  * Support for emitting YAML using /Failsafe/, (strict) /JSON/, and (flexible) /Core/ \"schemas\" (including support for user-defined custom encoding schemas; see "Data.YAML.Schema").
  * Event-based API resembling LibYAML's Event-based API (see "Data.YAML.Event").
  * Low-level API access to lexical token-based scanner (see "Data.YAML.Token").
  .
  See also the <//hackage.haskell.org/package/HsYAML-aeson HsYAML-aeson> package which allows to decode and encode YAML by leveraging @aeson@'s 'FromJSON' and 'ToJSON' instances.

extra-source-files:
 ChangeLog.md

source-repository head
 type: git
 location: https://github.com/hvr/HsYAML.git

flag exe
 description: Enable @exe:yaml-test@ component
 manual: True
 default: False

library
 hs-source-dirs:      src
 exposed-modules:     Data.YAML
                    , Data.YAML.Schema
                    , Data.YAML.Event
                    , Data.YAML.Token
 other-modules:       Data.YAML.Loader
                    , Data.YAML.Dumper
                    , Data.YAML.Internal
                    , Data.YAML.Event.Internal
                    , Data.YAML.Event.Writer
                    , Data.YAML.Pos
                    , Data.YAML.Schema.Internal
                    , Data.YAML.Token.Encoding
                    , Util
                    , Data.DList

 default-language:    Haskell2010
 other-extensions:    DeriveGeneric
                      FlexibleContexts
                      FlexibleInstances
                      FunctionalDependencies
                      MultiParamTypeClasses
                      OverloadedStrings
                      PostfixOperators
                      RecordWildCards
                      RecursiveDo
                      Safe
                      ScopedTypeVariables
                      Trustworthy
                      TypeSynonymInstances

 build-depends:       base         >=4.5   && <4.17
                    , bytestring   >=0.9   && <0.12
                    , containers   >=0.4.2 && <0.7
                    , deepseq      >=1.3.0 && <1.5
                    , text         >=1.2.3 && <2.1
                    , mtl          >=2.2.1 && <2.3
                    , parsec       >=3.1.13.0 && < 3.2

 -- for GHC.Generics
 if impl(ghc < 7.6)
   build-depends: ghc-prim

 if !impl(ghc >= 8.0)
   build-depends:     fail         >=4.9.0.0 && <4.10

 if !impl(ghc >= 7.10)
   build-depends:     nats         >=1.1.2 && <1.2

 ghc-options:         -Wall

executable yaml-test
 hs-source-dirs: src-test
 main-is: Main.hs
 other-modules: TML

 default-language:    Haskell2010

 if flag(exe)
   build-depends: HsYAML
                  -- inherited constraints
                , bytestring >= 0.10.8.0
                , base
                , text
                , containers
                , mtl
                  -- non-inherited
                , megaparsec  >= 7.0 && < 10
                , microaeson  == 0.1.*
                , filepath    == 1.4.*
                , directory   >= 1.2 && < 1.4
 else
   buildable: False

 ghc-options: -rtsopts

test-suite tests
 default-language: Haskell2010
 type: exitcode-stdio-1.0
 hs-source-dirs: tests
 main-is: Tests.hs

 ghc-options: -rtsopts

 build-depends: HsYAML
                  -- inherited constraints
                , bytestring >= 0.10.8.0
                , base
                , text
                , containers
                , mtl
                  -- non-inherited
                , QuickCheck == 2.14.*
                , tasty == 1.4.*
                , tasty-quickcheck == 0.10.*