packages feed

taiwan-id-0.1.1.2: taiwan-id.cabal

cabal-version:  3.0
name:           taiwan-id
version:        0.1.1.2
synopsis:       Library and CLI for working with ID numbers issued in Taiwan.
category:       Identification
homepage:       https://github.com/jonathanknowles/taiwan-id#readme
bug-reports:    https://github.com/jonathanknowles/taiwan-id/issues
author:         Jonathan Knowles
maintainer:     mail@jonathanknowles.net
copyright:      Jonathan Knowles
license:        BSD-3-Clause
license-file:   LICENSE
build-type:     Simple

description:

  This package provides both a library and a command-line tool (CLI) for
  working with identification numbers issued to residents of Taiwan, as well
  as the other territories of the Republic of China (ROC), including Kinmen,
  Matsu, and Penghu.

  Identification numbers are issued under two systems — National Identification
  Cards (國民身分證) and Resident Certificates (居留證) — with numbers assigned
  under each system occupying disjoint parts of the same number space.

  Each identification number consists of a single uppercase letter followed by
  nine decimal digits, with the final digit serving as a checksum calculated
  according to a standard algorithm.

  Example: `A123456789`

  See `README.md` or the "Taiwan.ID" module to get started.

  For more details, see:

  * https://zh.wikipedia.org/wiki/中華民國國民身分證
  * https://zh.wikipedia.org/wiki/中華民國居留證
  * https://en.wikipedia.org/wiki/National_identification_card_(Taiwan)
  * https://en.wikipedia.org/wiki/Resident_certificate

extra-doc-files:
  CHANGELOG.md
  README.md

common dependency-base
    build-depends:base                      >= 4.17.2.1     && < 4.23
common dependency-directory
    build-depends:directory                 >= 1.3.7.1      && < 1.4
common dependency-doctest-parallel
    build-depends:doctest-parallel          >= 0.4.1        && < 0.5
common dependency-filepath
    build-depends:filepath                  >= 1.4.2.2      && < 1.6
common dependency-finitary
    build-depends:finitary                  >= 2.2.0.0      && < 2.3
common dependency-finite-typelits
    build-depends:finite-typelits           >= 0.2.1.0      && < 0.3
common dependency-hspec
    build-depends:hspec                     >= 2.11.17      && < 2.12
common dependency-hspec-quickcheck-classes
    build-depends:hspec-quickcheck-classes  >= 0.0.0.0      && < 0.1
common dependency-microlens
    build-depends:microlens                 >= 0.5.0.0      && < 0.6
common dependency-MonadRandom
    build-depends:MonadRandom               >= 0.6.2.1      && < 0.7
common dependency-nonempty-containers
    build-depends:nonempty-containers       >= 0.3.5.0      && < 0.4
common dependency-optparse-applicative
    build-depends:optparse-applicative      >= 0.19.0.0     && < 0.20
common dependency-QuickCheck
    build-depends:QuickCheck                >= 2.16.0.0     && < 2.19
common dependency-quickcheck-classes
    build-depends:quickcheck-classes        >= 0.6.5.0      && < 0.7
common dependency-random
    build-depends:random                    >= 1.3.1        && < 1.4
common dependency-tasty
    build-depends:tasty                     >= 1.5.3        && < 1.6
common dependency-tasty-hunit
    build-depends:tasty-hunit               >= 0.10.2       && < 0.11
common dependency-text
    build-depends:text                      >= 2.1.4        && < 2.2

source-repository head
  type: git
  location: https://github.com/jonathanknowles/taiwan-id

flag taiwan-id-doc-test
  description:
    Enables the `taiwan-id-doc-test` test suite.
    Requires that the package is built with:
    write-ghc-environment-files: always
  default:     False
  manual:      True

library
  import:
    , dependency-base
    , dependency-finitary
    , dependency-finite-typelits
    , dependency-MonadRandom
    , dependency-nonempty-containers
    , dependency-text
  exposed-modules:
      Taiwan.ID
      Taiwan.ID.CharIndex
      Taiwan.ID.CharSet
      Taiwan.ID.Digit
      Taiwan.ID.Digit1289
      Taiwan.ID.Gender
      Taiwan.ID.Issuer
      Taiwan.ID.Language
      Taiwan.ID.Letter
      Taiwan.ID.Region
  other-modules:
      Taiwan.ID.Unchecked
      Taiwan.ID.Utilities
  hs-source-dirs:
      components/lib/taiwan-id
  ghc-options: -Wall
  default-language: Haskell2010

library taiwan-id-cli
  import:
    , dependency-base
    , dependency-MonadRandom
    , dependency-nonempty-containers
    , dependency-optparse-applicative
    , dependency-random
    , dependency-text
  build-depends:
    , taiwan-id
  exposed-modules:
      Taiwan.ID.CLI
  other-modules:
      Paths_taiwan_id
  autogen-modules:
      Paths_taiwan_id
  hs-source-dirs:
      components/lib/taiwan-id-cli
  ghc-options: -Wall
  default-language: Haskell2010
  visibility: private

library taiwan-id-test-common
  import:
    , dependency-base
    , dependency-QuickCheck
    , dependency-text
  build-depends:
    , taiwan-id
  exposed-modules:
      Taiwan.ID.Test
  hs-source-dirs:
      components/lib/taiwan-id-test-common
  ghc-options: -Wall
  default-language: Haskell2010
  visibility: private

executable taiwan-id
  import:
    , dependency-base
    , dependency-MonadRandom
    , dependency-text
  build-depends:
    , taiwan-id-cli
  main-is: Main.hs
  hs-source-dirs:
      components/exe/taiwan-id
  ghc-options: -Wall
  default-language: Haskell2010

test-suite taiwan-id-test
  import:
    , dependency-base
    , dependency-finitary
    , dependency-hspec
    , dependency-hspec-quickcheck-classes
    , dependency-MonadRandom
    , dependency-microlens
    , dependency-nonempty-containers
    , dependency-QuickCheck
    , dependency-quickcheck-classes
    , dependency-text
  type: exitcode-stdio-1.0
  main-is: Main.hs
  other-modules:
  hs-source-dirs:
      components/test/taiwan-id-test
  ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
  build-depends:
    , taiwan-id
    , taiwan-id-test-common
  default-language: Haskell2010

test-suite taiwan-id-cli-test
  import:
    , dependency-base
    , dependency-directory
    , dependency-filepath
    , dependency-MonadRandom
    , dependency-QuickCheck
    , dependency-quickcheck-classes
    , dependency-random
    , dependency-tasty
    , dependency-tasty-hunit
    , dependency-text
  type: exitcode-stdio-1.0
  main-is: Main.hs
  other-modules:
  hs-source-dirs:
      components/test/taiwan-id-cli-test
  ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
  build-depends:
    , taiwan-id
    , taiwan-id-cli
    , taiwan-id-test-common
  default-language: Haskell2010

test-suite taiwan-id-doc-test
  import:
    , dependency-base
    , dependency-doctest-parallel
  if !flag(taiwan-id-doc-test)
    buildable: False
  build-depends:
    , taiwan-id
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
    components/test/taiwan-id-doc-test
  ghc-options: -threaded
  default-language: Haskell2010