packages feed

egison-pattern-src-0.1.0.0: egison-pattern-src.cabal

cabal-version:      2.0
name:               egison-pattern-src
version:            0.1.0.0
synopsis:
  Manipulating Egison patterns: abstract syntax, parser, and pretty-printer

description:
  @egison-pattern-src@ provides a standalone syntax definition for patterns in [Egison programming language](https://www.egison.org/).
  This package enables you to embed Egison's patterns in your parser (pretty-printer) by supplying expression and name parsers (printers) externally.

bug-reports:        https://github.com/egison/egison-pattern-src/issues
homepage:           https://github.com/egison/egison-pattern-src#readme
license:            BSD3
license-file:       LICENSE
author:             coord_e
maintainer:         coord_e <me@coord-e.com>, Satoshi Egi <egi@egison.org>
copyright:          Copyright 2020 coord_e
category:           Language, Parser, Pretty Printer
build-type:         Simple
extra-source-files:
  README.md
  CHANGELOG.md

-- see .github/workflows
tested-with:        GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1

source-repository head
  type:     git
  location: https://github.com/egison/egison-pattern-src

library
  build-depends:
      base                >=4.8   && <5
    , containers          >=0.5.4 && <0.7
    , free                >=5.0.1 && <5.2
    , megaparsec          >=7.0.0 && <8.1
    , mtl                 ^>=2.2.1
    , parser-combinators  >=1.0.0 && <1.3
    , prettyprinter       >=1.0.0 && <1.7
    , recursion-schemes   >=5.0.2 && <5.2
    , text                >=0.1.0 && <1.3

  hs-source-dirs:     src
  exposed-modules:
    Language.Egison.Parser.Pattern
    Language.Egison.Pretty.Pattern
    Language.Egison.Syntax.Pattern
    Language.Egison.Syntax.Pattern.Base
    Language.Egison.Syntax.Pattern.Combinator
    Language.Egison.Syntax.Pattern.Expr
    Language.Egison.Syntax.Pattern.Fixity

  other-modules:
    Language.Egison.Parser.Pattern.Combinator
    Language.Egison.Parser.Pattern.Expr
    Language.Egison.Parser.Pattern.Prim
    Language.Egison.Parser.Pattern.Prim.Error
    Language.Egison.Parser.Pattern.Prim.Location
    Language.Egison.Parser.Pattern.Prim.Parse
    Language.Egison.Parser.Pattern.Prim.ParseMode
    Language.Egison.Parser.Pattern.Prim.Source
    Language.Egison.Parser.Pattern.Token
    Language.Egison.Pretty.Pattern.Context
    Language.Egison.Pretty.Pattern.Error
    Language.Egison.Pretty.Pattern.External
    Language.Egison.Pretty.Pattern.Operator
    Language.Egison.Pretty.Pattern.Prim
    Language.Egison.Pretty.Pattern.Print
    Language.Egison.Pretty.Pattern.PrintMode
    Language.Egison.Syntax.Pattern.Fixity.Associativity
    Language.Egison.Syntax.Pattern.Fixity.Precedence
    Language.Egison.Syntax.Pattern.Fixity.Primitive

  if impl(ghc >=8)
    ghc-options: -Wredundant-constraints

  ghc-options:
    -Wall -Wcompat -Widentities -Wincomplete-record-updates
    -Wincomplete-uni-patterns

  default-language:   Haskell2010
  default-extensions:
    ConstraintKinds
    DeriveDataTypeable
    DeriveFoldable
    DeriveFunctor
    DeriveGeneric
    DeriveTraversable
    DerivingStrategies
    DuplicateRecordFields
    ExistentialQuantification
    FlexibleContexts
    FlexibleInstances
    GeneralizedNewtypeDeriving
    KindSignatures
    NamedFieldPuns
    OverloadedStrings
    RankNTypes
    ScopedTypeVariables
    StandaloneDeriving
    TypeApplications
    TypeFamilies

test-suite test
  type:               exitcode-stdio-1.0
  hs-source-dirs:     test
  main-is:            test.hs
  ghc-options:        -Wall -threaded -rtsopts -with-rtsopts=-N
  default-language:   Haskell2010
  build-depends:
      base
    , egison-pattern-src
    , megaparsec
    , mtl
    , tasty
    , tasty-hunit
    , text

  default-extensions:
    DerivingStrategies
    DuplicateRecordFields
    FlexibleContexts
    GeneralizedNewtypeDeriving
    NamedFieldPuns
    OverloadedStrings

  -- cabal-fmt: expand test
  other-modules:
    Language.Egison.Parser.PatternSpec
    Language.Egison.Pretty.PatternSpec
    TestImport

  build-tool-depends: tasty-discover:tasty-discover -any