summaryrefslogtreecommitdiff
path: root/unicode-data.cabal
blob: 1fee486d2f7e8bf373a18edb94cd98413bb21d56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
cabal-version:       2.2
name:                unicode-data
version:             0.4.0.1
x-revision: 1
synopsis:            Access Unicode Character Database (UCD)
description:
  @unicode-data@ provides Haskell APIs to efficiently access the
  <https://www.unicode.org/ucd/ Unicode character database> (UCD).
  Performance is the primary goal in the design of this package.
  .
  The Haskell data structures are generated programmatically from the UCD files.
  The latest Unicode version supported by this library is
  @<https://www.unicode.org/versions/Unicode15.0.0/ 15.0.0>@.
homepage:            http://github.com/composewell/unicode-data
bug-reports:         https://github.com/composewell/unicode-data/issues
license:             Apache-2.0
license-file:        LICENSE
author:              Composewell Technologies and Contributors
maintainer:          streamly@composewell.com
copyright:           2020 Composewell Technologies and Contributors
category:            Data,Text,Unicode
stability:           Experimental
build-type:          Simple
tested-with:         GHC==8.0.2
                   , GHC==8.2.2
                   , GHC==8.4.4
                   , GHC==8.6.5
                   , GHC==8.8.4
                   , GHC==8.10.7
                   , GHC==9.0.1
                   , GHC==9.2.1
                   , GHC==9.4.2
                   , GHC==9.6.0

extra-source-files:
    Changelog.md
    README.md
    NOTICE

source-repository head
  type: git
  location: https://github.com/composewell/unicode-data

flag ucd2haskell
  description: Build the ucd2haskell executable
  manual: True
  default: False

common default-extensions
  default-extensions:
      BangPatterns
      DeriveGeneric
      MagicHash
      RecordWildCards
      ScopedTypeVariables
      TupleSections
      FlexibleContexts

      -- Experimental, may lead to issues
      DeriveAnyClass
      TemplateHaskell
      UnboxedTuples

common compile-options
  ghc-options: -Wall
               -fwarn-identities
               -fwarn-incomplete-record-updates
               -fwarn-incomplete-uni-patterns
               -fwarn-tabs
  default-language: Haskell2010

library
  import: default-extensions, compile-options
  default-language: Haskell2010
  exposed-modules:
      Unicode.Char
      -- The module structure is derived from
      -- https://www.unicode.org/reports/tr44/#Property_Index_Table
      Unicode.Char.Case
      Unicode.Char.Case.Compat
      Unicode.Char.General
      Unicode.Char.General.Blocks
      Unicode.Char.General.Compat
      Unicode.Char.Identifiers
      Unicode.Char.Normalization
      Unicode.Char.Numeric
      Unicode.Char.Numeric.Compat

      -- Internal files
      Unicode.Internal.Bits
      Unicode.Internal.Division
      Unicode.Internal.Unfold

      -- Generated files
      -- This module structure is largely based on the UCD file names from which
      -- the properties are generated.
      Unicode.Internal.Char.Blocks
      Unicode.Internal.Char.CaseFolding
      Unicode.Internal.Char.DerivedCoreProperties
      Unicode.Internal.Char.DerivedNumericValues
      Unicode.Internal.Char.PropList
      Unicode.Internal.Char.SpecialCasing.LowerCaseMapping
      Unicode.Internal.Char.SpecialCasing.TitleCaseMapping
      Unicode.Internal.Char.SpecialCasing.UpperCaseMapping
      Unicode.Internal.Char.UnicodeData.CombiningClass
      Unicode.Internal.Char.UnicodeData.Compositions
      Unicode.Internal.Char.UnicodeData.Decomposable
      Unicode.Internal.Char.UnicodeData.DecomposableK
      Unicode.Internal.Char.UnicodeData.Decompositions
      Unicode.Internal.Char.UnicodeData.DecompositionsK
      Unicode.Internal.Char.UnicodeData.DecompositionsK2
      Unicode.Internal.Char.UnicodeData.GeneralCategory
      Unicode.Internal.Char.UnicodeData.SimpleLowerCaseMapping
      Unicode.Internal.Char.UnicodeData.SimpleTitleCaseMapping
      Unicode.Internal.Char.UnicodeData.SimpleUpperCaseMapping

  hs-source-dirs: lib
  ghc-options: -O2
  build-depends:
      base >=4.7 && <4.19

executable ucd2haskell
  import: default-extensions, compile-options
  default-language: Haskell2010
  ghc-options: -O2
  hs-source-dirs: exe
  main-is: UCD2Haskell.hs
  other-modules: Parser.Text
  if flag(ucd2haskell)
    buildable: True
    build-depends:
        base             >= 4.7   && < 4.19
      , containers       >= 0.5   && < 0.7
      , directory        >= 1.3.6 && < 1.3.9
      , filepath         >= 1.4.100 && < 1.5
      , getopt-generics  >= 0.13  && < 0.14
      , streamly         >= 0.8.0 && < 0.8.1
  else
    buildable: False

test-suite test
  import: default-extensions, compile-options
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test
  other-modules:
      Unicode.CharSpec
  build-depends:
      base             >= 4.7   && < 4.19
    , hspec            >= 2.0   && < 2.11
    , unicode-data
  -- We need to match a GHC version with the same Unicode version.
  -- See: test/Unicode/CharSpec.hs for compatibility table.
  if impl(ghc >= 9.5.1)
    cpp-options: -DCOMPATIBLE_GHC_UNICODE
  default-language: Haskell2010

benchmark bench
  import: default-extensions, compile-options
  type: exitcode-stdio-1.0
  hs-source-dirs: bench
  main-is: Main.hs
  build-depends:
    base        >= 4.7   && < 4.19,
    deepseq     >= 1.1   && < 1.5,
    tasty-bench >= 0.2.5 && < 0.4,
    tasty       >= 1.4.1,
    unicode-data
  ghc-options: -O2 -fdicts-strict -rtsopts