gigaparsec-0.2.2.2: gigaparsec.cabal
cabal-version: 3.0
-- The cabal-version field refers to the version of the .cabal specification,
-- and can be different from the cabal-install (the tool) version and the
-- Cabal (the library) version you are using. As such, the Cabal (the library)
-- version used must be equal or greater than the version stated in this field.
-- Starting from the specification version 2.2, the cabal-version field must be
-- the first thing in the cabal file.
-- Initial package description 'gigaparsec' generated by
-- 'cabal init'. For further documentation, see:
-- http://haskell.org/cabal/users-guide/
--
-- The name of the package.
name: gigaparsec
-- The package version.
-- See the Haskell package versioning policy (PVP) for standards
-- guiding when and how versions should be incremented.
-- https://pvp.haskell.org
-- PVP summary: +-+------- breaking API changes
-- | | +----- non-breaking API additions
-- | | | +--- code changes with no API change
version: 0.2.2.2
-- A short (one-line) description of the package.
synopsis:
Refreshed parsec-style library for compatiblity with Scala parsley
-- A longer description of the package.
description:
This is a monadic parser combinator designed to be easy to use,
especially for beginners, and have API parity with the
@[parsley](https://github.com/j-mie6/parsley)@ library. It supports
design patterns introduced in /Design Patterns for Parser Combinators/.
-- URL for the project homepage or repository.
homepage: https://github.com/j-mie6/gigaparsec
-- The license under which the package is released.
license: BSD-3-Clause
-- The file containing the license text.
license-file: LICENSE
-- The package author(s).
author: Jamie Willis
-- An email address to which users can send suggestions, bug reports, and patches.
maintainer: j.willis19@imperial.ac.uk
-- A copyright notice.
copyright: (c) 2023-present Jamie Willis, Gigaparsec Maintainers
category: Text
build-type: Simple
-- Extra doc files to be distributed with the package, such as a CHANGELOG or a README.
-- Don't add README.md here, because it contains stuff specific to the repo itself
extra-doc-files: CHANGELOG.md
stability: alpha
-- Extra source files to be distributed with the package, such as examples, or a tutorial module.
-- extra-source-files:
common warnings
ghc-options: -Weverything -Wno-unsafe -Wno-implicit-prelude -Wno-missing-local-signatures -Wno-star-is-type
common extensions
-- Extensions we want enabled without having to specify them
default-extensions: ScopedTypeVariables, RankNTypes, BangPatterns, TypeApplications,
MultiWayIf, DerivingStrategies, InstanceSigs, StandaloneKindSignatures,
ImportQualifiedPost, RecordWildCards
common base
-- Other library packages from which modules are imported.
-- 4.14 is GHC 8.10 (the 2022 State of Haskell indicates 41% still use 8.10)
build-depends: base >=4.14 && < 5
library
import: warnings, extensions, base
-- Modules exported by the library.
exposed-modules: Text.Gigaparsec,
Text.Gigaparsec.Char,
Text.Gigaparsec.Combinator,
Text.Gigaparsec.Combinator.NonEmpty,
Text.Gigaparsec.Debug,
Text.Gigaparsec.Errors.Combinator,
Text.Gigaparsec.Errors.DefaultErrorBuilder,
Text.Gigaparsec.Errors.ErrorBuilder,
Text.Gigaparsec.Errors.ErrorGen,
Text.Gigaparsec.Expr,
Text.Gigaparsec.Expr.Chain,
Text.Gigaparsec.Expr.Infix,
Text.Gigaparsec.Expr.Subtype,
Text.Gigaparsec.Patterns,
Text.Gigaparsec.Position,
Text.Gigaparsec.Registers,
Text.Gigaparsec.Token.Descriptions,
Text.Gigaparsec.Token.Lexer,
Text.Gigaparsec.Token.Patterns,
-- Internals
Text.Gigaparsec.Internal,
Text.Gigaparsec.Internal.Errors,
Text.Gigaparsec.Internal.Errors.CaretControl,
Text.Gigaparsec.Internal.Errors.DefuncBuilders,
Text.Gigaparsec.Internal.Errors.DefuncError,
Text.Gigaparsec.Internal.Errors.DefuncHints,
Text.Gigaparsec.Internal.Errors.DefuncTypes,
Text.Gigaparsec.Internal.Errors.ErrorItem,
Text.Gigaparsec.Internal.Errors.ParseError,
Text.Gigaparsec.Internal.RT,
Text.Gigaparsec.Internal.Require,
Text.Gigaparsec.Internal.Token.Generic,
Text.Gigaparsec.Internal.Token.Lexer,
Text.Gigaparsec.Internal.Token.Names,
Text.Gigaparsec.Internal.Token.Numeric,
Text.Gigaparsec.Internal.Token.Symbol,
Text.Gigaparsec.Internal.Token.Text,
-- this can probably be loosened?
build-depends: containers >= 0.6 && < 0.7,
selective >= 0.6 && < 0.8,
pretty-terminal >= 0.1.0 && < 0.2,
template-haskell >= 2.16 && < 3
-- Modules included in this library but not exported.
-- other-modules:
-- LANGUAGE extensions used by modules in this package.
-- other-extensions:
-- Directories containing source files.
hs-source-dirs: src
include-dirs: includes
install-includes: includes/portable-unlifted.h
-- Base language which the package is written in.
default-language: Haskell2010
test-suite gigaparsec-test
import: warnings, extensions, base
default-extensions: OverloadedStrings, TypeOperators, BlockArguments, GADTs
-- Base language which the package is written in.
default-language: Haskell2010
-- Modules included in this executable, other than Main.
other-modules: Text.Gigaparsec.GigaparsecTests,
Text.Gigaparsec.PrimitiveTests,
Text.Gigaparsec.CharTests,
Text.Gigaparsec.CombinatorTests,
Text.Gigaparsec.DebugTests,
Text.Gigaparsec.ExprTests,
Text.Gigaparsec.ErrorsTests,
Text.Gigaparsec.Expr.ChainTests,
Text.Gigaparsec.Expr.InfixTests,
Text.Gigaparsec.TokenTests,
Text.Gigaparsec.Token.NamesTests,
Text.Gigaparsec.Internal.Test,
Text.Gigaparsec.Internal.TestError,
Text.Gigaparsec.Internal.PlainString
ghc-options: -Wno-missing-export-lists -Wno-missing-safe-haskell-mode -Wno-safe
-Wno-missing-import-lists -Wno-all-missed-specialisations -Wno-type-defaults
-Wno-missing-kind-signatures -Wno-orphans -Wno-monomorphism-restriction
-- The interface type and version of the test suite.
type: exitcode-stdio-1.0
-- Directories containing source files.
hs-source-dirs: test
-- The entrypoint to the test suite.
main-is: Main.hs
-- Test dependencies.
build-depends:
gigaparsec,
containers >= 0.6 && < 0.7,
deepseq >= 1.4 && < 1.6,
bytestring >= 0.9 && < 0.13,
--deriving-compat >= 0.6 && < 0.7,
tasty >=1.1 && <1.6,
tasty-expected-failure >=0.11 && <0.13,
tasty-hunit >=0.9 && <0.11,
--TODO: property based testing will be useful when we optimise combinators
-- to test against their base implementations
--tasty-quickcheck
--TODO: performance testing with tasty-bench?
--tasty-bench
-- we'd need to keep the basefile files somewhere, cache in CI or keep in repo?
knob >=0.1.1 && <0.3,
benchmark perf-test
import: warnings, extensions, base
type: exitcode-stdio-1.0
default-extensions: OverloadedStrings, TypeOperators, BlockArguments, GADTs
-- Base language which the package is written in.
default-language: Haskell2010
hs-source-dirs: benchmarks
build-depends:
gigaparsec,
--containers >= 0.6 && < 0.7,
gauge >= 0.1 && < 0.3,
deepseq >= 1.4 && < 1.6
main-is: Main.hs