cabal-version:       1.14
build-type:          Simple
name:                HsYAML
version:             0.1.2.0

synopsis:            Pure Haskell YAML 1.2 parser
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:          hvr@gnu.org
copyright:           2015-2018 Herbert Valerio Riedel
                   , 2007-2008 Oren Ben-Kiki
category:            Text
tested-with:         GHC==8.6.5, GHC==8.4.4, GHC==8.4.1, 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) parser implementation for Haskell.
  .
  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").
   * 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).
   * 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").
   .

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.Event
                     , Data.YAML.Token
  other-modules:       Data.YAML.Loader
                     , Data.YAML.Schema
                     , Data.YAML.Token.Encoding
                     , Util
                     , Data.DList

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

  build-depends:       base         >=4.5   && <4.13
                     , bytestring   >=0.9   && <0.11
                     , containers   >=0.4.2 && <0.7
                     , text         >=1.2.3 && <1.3
                     , mtl          >=2.2.1 && <2.3
                     , parsec       >=3.1.13.0 && < 3.2

  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  >= 6.5.0 && < 6.6
                 , microaeson  == 0.1.*
                 , filepath    == 1.4.*
                 , directory   >= 1.2 && < 1.4
  else
    buildable: False

  ghc-options: -rtsopts
