1cabal-version:       1.14
2name:                HsYAML
3version:             0.2.1.0
4x-revision: 2
5
6synopsis:            Pure Haskell YAML 1.2 processor
7homepage:            https://github.com/hvr/HsYAML
8bug-reports:         https://github.com/hvr/HsYAML/issues
9license:             GPL-2
10X-SPDX-License-Identifier: GPL-2.0-or-later
11license-files:       LICENSE.GPLv2 LICENSE.GPLv3
12author:              Herbert Valerio Riedel
13maintainer:          hvr@gnu.org
14copyright:           2015-2018 Herbert Valerio Riedel
15                   , 2007-2008 Oren Ben-Kiki
16category:            Text
17build-type:          Simple
18tested-with:         GHC==8.6.1, GHC==8.4.3, 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
19
20description:
21  @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.
22
23  .
24  Features of @HsYAML@ include:
25  .
26   * 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).
27   * Direct decoding to native Haskell types via (@aeson@-inspired) typeclass-based API (see "Data.YAML").
28   * Allows round-tripping while preserving ordering, anchors, and comments at Event-level.
29   * Support for constructing custom YAML node graph representation (including support for cyclic YAML data structures).
30   * 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").
31   * Support for emitting YAML using /Failsafe/, (strict) /JSON/, and (flexible) /Core/ \"schemas\" (including support for user-defined custom encoding schemas; see "Data.YAML.Schema").
32   * Event-based API resembling LibYAML's Event-based API (see "Data.YAML.Event").
33   * Low-level API access to lexical token-based scanner (see "Data.YAML.Token").
34   .
35   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.
36
37extra-source-files:
38  ChangeLog.md
39
40source-repository head
41  type: git
42  location: https://github.com/hvr/HsYAML.git
43
44flag exe
45  description: Enable @exe:yaml-test@ component
46  manual: True
47  default: False
48
49library
50  hs-source-dirs:      src
51  exposed-modules:     Data.YAML
52                     , Data.YAML.Schema
53                     , Data.YAML.Event
54                     , Data.YAML.Token
55  other-modules:       Data.YAML.Loader
56                     , Data.YAML.Dumper
57                     , Data.YAML.Internal
58                     , Data.YAML.Event.Internal
59                     , Data.YAML.Event.Writer
60                     , Data.YAML.Pos
61                     , Data.YAML.Schema.Internal
62                     , Data.YAML.Token.Encoding
63                     , Util
64                     , Data.DList
65
66  default-language:    Haskell2010
67  other-extensions:    DeriveGeneric
68                       FlexibleContexts
69                       FlexibleInstances
70                       FunctionalDependencies
71                       MultiParamTypeClasses
72                       OverloadedStrings
73                       PostfixOperators
74                       RecordWildCards
75                       RecursiveDo
76                       Safe
77                       ScopedTypeVariables
78                       Trustworthy
79                       TypeSynonymInstances
80
81  build-depends:       base         >=4.5   && <4.16
82                     , bytestring   >=0.9   && <0.12
83                     , containers   >=0.4.2 && <0.7
84                     , deepseq      >=1.3.0 && <1.5
85                     , text         >=1.2.3 && <1.3
86                     , mtl          >=2.2.1 && <2.3
87                     , parsec       >=3.1.13.0 && < 3.2
88
89  -- for GHC.Generics
90  if impl(ghc < 7.6)
91    build-depends: ghc-prim
92
93  if !impl(ghc >= 8.0)
94    build-depends:     fail         >=4.9.0.0 && <4.10
95
96  if !impl(ghc >= 7.10)
97    build-depends:     nats         >=1.1.2 && <1.2
98
99  ghc-options:         -Wall
100
101executable yaml-test
102  hs-source-dirs: src-test
103  main-is: Main.hs
104  other-modules: TML
105
106  default-language:    Haskell2010
107
108  if flag(exe)
109    build-depends: HsYAML
110                   -- inherited constraints
111                 , bytestring >= 0.10.8.0
112                 , base
113                 , text
114                 , containers
115                 , mtl
116                   -- non-inherited
117                 , megaparsec  >= 6.5.0 && < 6.6
118                 , microaeson  == 0.1.*
119                 , filepath    == 1.4.*
120                 , directory   >= 1.2 && < 1.4
121  else
122    buildable: False
123
124  ghc-options: -rtsopts
125
126test-suite tests
127  default-language: Haskell2010
128  type: exitcode-stdio-1.0
129  hs-source-dirs: tests
130  main-is: Tests.hs
131
132  ghc-options: -rtsopts
133
134  build-depends: HsYAML
135                   -- inherited constraints
136                 , bytestring >= 0.10.8.0
137                 , base
138                 , text
139                 , containers
140                 , mtl
141                   -- non-inherited
142                 , QuickCheck == 2.13.*
143                 , tasty == 1.2.*
144                 , tasty-quickcheck == 0.10.*
145