trifecta 2.1 → 2.1.1
raw patch · 13 files changed
+49/−272 lines, 13 filesdep +indexed-traversabledep −doctestdep ~basedep ~lenssetup-changed
Dependencies added: indexed-traversable
Dependencies removed: doctest
Dependency ranges changed: base, lens
Files
- .travis.yml +0/−173
- CHANGELOG.markdown +6/−0
- README.markdown +1/−1
- Setup.hs +2/−0
- Setup.lhs +0/−34
- Warning.hs +0/−5
- examples/RFC2616-malformed.txt +9/−0
- examples/trifecta-examples.cabal +2/−1
- src/Text/Trifecta/Rope.hs +2/−0
- src/Text/Trifecta/Util/IntervalMap.hs +14/−5
- src/Text/Trifecta/Util/It.hs +1/−0
- tests/doctests.hs +0/−25
- trifecta.cabal +12/−28
− .travis.yml
@@ -1,173 +0,0 @@-# This Travis job script has been generated by a script via-#-# haskell-ci '--output=.travis.yml' '--config=cabal.haskell-ci' 'cabal.project'-#-# For more information, see https://github.com/haskell-CI/haskell-ci-#-# version: 0.5.20180830-#-language: c-dist: xenial-git:- # whether to recursively clone submodules- submodules: false-notifications:- irc:- channels:- - irc.freenode.org#haskell-lens- skip_join: true- template:- - "\"\\x0313trifecta\\x03/\\x0306%{branch}\\x03 \\x0314%{commit}\\x03 %{build_url} %{message}\""-cache:- directories:- - $HOME/.cabal/packages- - $HOME/.cabal/store-before_cache:- - rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log- # remove files that are regenerated by 'cabal update'- - rm -fv $CABALHOME/packages/hackage.haskell.org/00-index.*- - rm -fv $CABALHOME/packages/hackage.haskell.org/*.json- - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.cache- - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar- - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx- - rm -rfv $CABALHOME/packages/head.hackage-matrix:- include:- - compiler: ghc-8.8.1- addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.8.1","cabal-install-3.0"]}}- - compiler: ghc-8.6.5- addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.6.5","cabal-install-3.0"]}}- - compiler: ghc-8.4.4- addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.4.4","cabal-install-3.0"]}}- - compiler: ghc-8.2.2- addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.2.2","cabal-install-3.0"]}}- - compiler: ghc-8.0.2- addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.0.2","cabal-install-3.0"]}}- - compiler: ghc-7.10.3- addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-7.10.3","cabal-install-3.0"]}}- - compiler: ghc-7.8.4- addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-7.8.4","cabal-install-3.0"]}}- - compiler: ghc-head- addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-head","cabal-install-head"]}}- allow_failures:- - compiler: ghc-head-before_install:- - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')- - WITHCOMPILER="-w $HC"- - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')- - HCPKG="$HC-pkg"- - unset CC- - CABAL=/opt/ghc/bin/cabal- - CABALHOME=$HOME/.cabal- - export PATH="$CABALHOME/bin:$PATH"- - TOP=$(pwd)- - "HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')"- - echo $HCNUMVER- - CABAL="$CABAL -vnormal+nowrap+markoutput"- - set -o pipefail- - |- echo 'function blue(s) { printf "\033[0;34m" s "\033[0m " }' >> .colorful.awk- echo 'BEGIN { state = "output"; }' >> .colorful.awk- echo '/^-----BEGIN CABAL OUTPUT-----$/ { state = "cabal" }' >> .colorful.awk- echo '/^-----END CABAL OUTPUT-----$/ { state = "output" }' >> .colorful.awk- echo '!/^(-----BEGIN CABAL OUTPUT-----|-----END CABAL OUTPUT-----)/ {' >> .colorful.awk- echo ' if (state == "cabal") {' >> .colorful.awk- echo ' print blue($0)' >> .colorful.awk- echo ' } else {' >> .colorful.awk- echo ' print $0' >> .colorful.awk- echo ' }' >> .colorful.awk- echo '}' >> .colorful.awk- - cat .colorful.awk- - |- color_cabal_output () {- awk -f $TOP/.colorful.awk- }- - echo text | color_cabal_output-install:- - ${CABAL} --version- - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"- - TEST=--enable-tests- - BENCH=--enable-benchmarks- - HEADHACKAGE=false- - if [ $HCNUMVER -gt 80801 ] ; then HEADHACKAGE=true ; fi- - rm -f $CABALHOME/config- - |- echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config- echo "remote-build-reporting: anonymous" >> $CABALHOME/config- echo "write-ghc-environment-files: always" >> $CABALHOME/config- echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config- echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config- echo "world-file: $CABALHOME/world" >> $CABALHOME/config- echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config- echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config- echo "installdir: $CABALHOME/bin" >> $CABALHOME/config- echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config- echo "store-dir: $CABALHOME/store" >> $CABALHOME/config- echo "install-dirs user" >> $CABALHOME/config- echo " prefix: $CABALHOME" >> $CABALHOME/config- echo "repository hackage.haskell.org" >> $CABALHOME/config- echo " url: http://hackage.haskell.org/" >> $CABALHOME/config- - |- if $HEADHACKAGE; then- echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABALHOME/config- echo "repository head.hackage.ghc.haskell.org" >> $CABALHOME/config- echo " url: https://ghc.gitlab.haskell.org/head.hackage/" >> $CABALHOME/config- echo " secure: True" >> $CABALHOME/config- echo " root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d" >> $CABALHOME/config- echo " 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329" >> $CABALHOME/config- echo " f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89" >> $CABALHOME/config- echo " key-threshold: 3" >> $CABALHOME/config- fi- - cat $CABALHOME/config- - rm -fv cabal.project cabal.project.local cabal.project.freeze- - travis_retry ${CABAL} v2-update -v- # Generate cabal.project- - rm -rf cabal.project cabal.project.local cabal.project.freeze- - touch cabal.project- - |- echo "packages: ." >> cabal.project- echo "packages: ./examples" >> cabal.project- - |- - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(trifecta|trifecta-examples)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"- - cat cabal.project || true- - cat cabal.project.local || true- - if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi- - if [ -f "./examples/configure.ac" ]; then (cd "./examples" && autoreconf -i); fi- - ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH} | color_cabal_output- - "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'"- - rm cabal.project.freeze- - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} --dep -j2 all | color_cabal_output-script:- - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)- # Packaging...- - ${CABAL} v2-sdist all | color_cabal_output- # Unpacking...- - mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/- - cd ${DISTDIR} || false- - find . -maxdepth 1 -type f -name '*.tar.gz' -exec tar -xvf '{}' \;- - find . -maxdepth 1 -type f -name '*.tar.gz' -exec rm '{}' \;- - PKGDIR_trifecta="$(find . -maxdepth 1 -type d -regex '.*/trifecta-[0-9.]*')"- - PKGDIR_trifecta_examples="$(find . -maxdepth 1 -type d -regex '.*/trifecta-examples-[0-9.]*')"- # Generate cabal.project- - rm -rf cabal.project cabal.project.local cabal.project.freeze- - touch cabal.project- - |- echo "packages: ${PKGDIR_trifecta}" >> cabal.project- echo "packages: ${PKGDIR_trifecta_examples}" >> cabal.project- - |- - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(trifecta|trifecta-examples)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"- - cat cabal.project || true- - cat cabal.project.local || true- # Building with tests and benchmarks...- # build & run tests, build benchmarks- - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output- # Testing...- - ${CABAL} v2-test $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output- # cabal check...- - (cd ${PKGDIR_trifecta} && ${CABAL} -vnormal check)- - (cd ${PKGDIR_trifecta_examples} && ${CABAL} -vnormal check)- # haddock...- - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all | color_cabal_output--# REGENDATA ["--output=.travis.yml","--config=cabal.haskell-ci","cabal.project"]-# EOF
CHANGELOG.markdown view
@@ -1,3 +1,9 @@+2.1.1 [2021.02.18]+------------------+* Allow building with `lens-5.*`.+* The build-type has been changed from `Custom` to `Simple`.+ To achieve this, the `doctests` test suite has been removed in favor of using [`cabal-docspec`](https://github.com/phadej/cabal-extras/tree/master/cabal-docspec) to run the doctests.+ 2.1 [2019.09.06] ---------------- * Support building with `base-4.13` (GHC 8.8).
README.markdown view
@@ -1,7 +1,7 @@ trifecta ======== -[](https://hackage.haskell.org/package/trifecta) [](http://travis-ci.org/ekmett/trifecta)+[](https://hackage.haskell.org/package/trifecta) [](https://github.com/ekmett/trifecta/actions?query=workflow%3AHaskell-CI) This package provides a parser that focuses on nice diagnostics.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
− Setup.lhs
@@ -1,34 +0,0 @@-\begin{code}-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -Wall #-}-module Main (main) where--#ifndef MIN_VERSION_cabal_doctest-#define MIN_VERSION_cabal_doctest(x,y,z) 0-#endif--#if MIN_VERSION_cabal_doctest(1,0,0)--import Distribution.Extra.Doctest ( defaultMainWithDoctests )-main :: IO ()-main = defaultMainWithDoctests "doctests"--#else--#ifdef MIN_VERSION_Cabal--- If the macro is defined, we have new cabal-install,--- but for some reason we don't have cabal-doctest in package-db------ Probably we are running cabal sdist, when otherwise using new-build--- workflow-import Warning ()-#endif--import Distribution.Simple--main :: IO ()-main = defaultMain--#endif--\end{code}
− Warning.hs
@@ -1,5 +0,0 @@-module Warning- {-# WARNING ["You are configuring this package without cabal-doctest installed.",- "The doctests test-suite will not work as a result.",- "To fix this, install cabal-doctest before configuring."] #-}- () where
+ examples/RFC2616-malformed.txt view
@@ -0,0 +1,9 @@+GET http://slashdot.org/ HTTP/1.1+foo: this is a test++GET http://slashdot.org/ HTTP/1.0+foo: of the emergency broadcast system++GET http://slashdot.org/ HTTP/1.0+foo but I mangled the header+
examples/trifecta-examples.cabal view
@@ -20,7 +20,8 @@ , GHC == 8.2.2 , GHC == 8.4.4 , GHC == 8.6.5- , GHC == 8.8.1+ , GHC == 8.8.4+ , GHC == 8.10.3 extra-source-files: RFC2616.txt RFC2616-malformed.txt source-repository head
src/Text/Trifecta/Rope.hs view
@@ -50,8 +50,10 @@ -- -- >>> :set -XOverloadedStrings -- >>> import Data.Monoid ((<>))+-- >>> import Data.ByteString (ByteString) -- >>> import qualified Data.ByteString.UTF8 as Strict -- >>> import qualified Data.ByteString.Lazy.UTF8 as Lazy+-- >>> import Text.Trifecta.Delta -- A 'Strand' is a chunk of data; many 'Strand's together make a 'Rope'. data Strand
src/Text/Trifecta/Util/IntervalMap.hs view
@@ -56,19 +56,22 @@ import Control.Applicative hiding (empty) import Data.Foldable (Foldable (foldMap)) #endif+import qualified Data.Foldable.WithIndex as WithIndex #if MIN_VERSION_lens(4,13,0) && __GLASGOW_HASKELL__ >= 710-import Control.Lens hiding ((:<), (<|), (|>))+import Control.Lens as Lens hiding ((:<), (<|), (|>)) #else-import Control.Lens hiding ((<|), (|>))+import Control.Lens as Lens hiding ((<|), (|>)) #endif import Data.FingerTree (FingerTree, Measured (..), ViewL (..), (<|), (><)) import qualified Data.FingerTree as FT+import qualified Data.Functor.WithIndex as WithIndex #if !(MIN_VERSION_base(4,11,0)) import Data.Semigroup #endif import Data.Semigroup.Reducer import Data.Semigroup.Union+import qualified Data.Traversable.WithIndex as WithIndex ---------------------------------- -- 4.8 Application: interval trees@@ -111,20 +114,26 @@ instance Functor (Node v) where fmap f (Node i x) = Node i (f x) -instance FunctorWithIndex (Interval v) (Node v) where+instance WithIndex.FunctorWithIndex (Interval v) (Node v) where imap f (Node i x) = Node i (f i x) instance Foldable (Node v) where foldMap f (Node _ x) = f x -instance FoldableWithIndex (Interval v) (Node v) where+instance WithIndex.FoldableWithIndex (Interval v) (Node v) where ifoldMap f (Node k v) = f k v instance Traversable (Node v) where traverse f (Node i x) = Node i <$> f x -instance TraversableWithIndex (Interval v) (Node v) where+instance WithIndex.TraversableWithIndex (Interval v) (Node v) where itraverse f (Node i x) = Node i <$> f i x++#if !MIN_VERSION_lens(5,0,0)+instance Lens.FunctorWithIndex (Interval v) (Node v) where imap = WithIndex.imap+instance Lens.FoldableWithIndex (Interval v) (Node v) where ifoldMap = WithIndex.ifoldMap+instance Lens.TraversableWithIndex (Interval v) (Node v) where itraverse = WithIndex.itraverse+#endif -- rightmost interval (including largest lower bound) and largest upper bound. data IntInterval v = NoInterval | IntInterval (Interval v) v
src/Text/Trifecta/Util/It.hs view
@@ -49,6 +49,7 @@ -- >>> import Control.Comonad (extract) -- >>> import Data.ByteString as Strict -- >>> import Text.Trifecta.Delta+-- >>> import Text.Trifecta.Rope -- >>> import Text.Trifecta.Util.It -- | @'It'@ is an <https://wiki.haskell.org/Enumerator_and_iteratee Iteratee>
− tests/doctests.hs
@@ -1,25 +0,0 @@--------------------------------------------------------------------------------- |--- Module : Main (doctests)--- Copyright : (C) 2012-14 Edward Kmett--- License : BSD-style (see the file LICENSE)--- Maintainer : Edward Kmett <ekmett@gmail.com>--- Stability : provisional--- Portability : portable------ This module provides doctests for a project based on the actual versions--- of the packages it was built with. It requires a corresponding Setup.lhs--- to be added to the project-------------------------------------------------------------------------------module Main where--import Build_doctests (flags, pkgs, module_sources)-import Data.Foldable (traverse_)-import Test.DocTest--main :: IO ()-main = do- traverse_ putStrLn args- doctest args- where- args = flags ++ pkgs ++ module_sources
trifecta.cabal view
@@ -1,6 +1,6 @@ name: trifecta category: Text, Parsing, Diagnostics, Pretty Printer, Logging-version: 2.1+version: 2.1.1 license: BSD3 cabal-version: 1.18 license-file: LICENSE@@ -20,14 +20,15 @@ . <images/example.png (Local Copy)> -build-type: Custom+build-type: Simple tested-with: GHC == 7.8.4 , GHC == 7.10.3 , GHC == 8.0.2 , GHC == 8.2.2 , GHC == 8.4.4 , GHC == 8.6.5- , GHC == 8.8.1+ , GHC == 8.8.4+ , GHC == 8.10.3 extra-doc-files: images/*.png@@ -37,22 +38,15 @@ examples/LICENSE examples/rfc2616/*.hs examples/RFC2616.txt+ examples/RFC2616-malformed.txt examples/trifecta-examples.cabal- .travis.yml CHANGELOG.markdown README.markdown- Warning.hs source-repository head type: git location: https://github.com/ekmett/trifecta -custom-setup- setup-depends:- base >= 4 && < 5,- Cabal,- cabal-doctest >= 1 && < 1.1- library exposed-modules: Text.Trifecta@@ -72,13 +66,13 @@ Text.Trifecta.Util.Pretty build-depends:- ansi-terminal >= 0.6 && < 0.11,+ ansi-terminal >= 0.6 && < 0.12, array >= 0.3.0.2 && < 0.6, base >= 4.7 && < 5, blaze-builder >= 0.3.0.1 && < 0.5, blaze-html >= 0.5 && < 0.10, blaze-markup >= 0.5 && < 0.9,- bytestring >= 0.9.1 && < 0.11,+ bytestring >= 0.9.1 && < 0.12, charset >= 0.3.5.1 && < 1, comonad >= 4 && < 6, containers >= 0.3 && < 0.7,@@ -86,14 +80,14 @@ fingertree >= 0.1 && < 0.2, ghc-prim, hashable >= 1.2.1 && < 1.4,- lens >= 4.0 && < 5,+ indexed-traversable >= 0.1.1 && < 0.2,+ lens >= 4.0 && < 6, mtl >= 2.0.1 && < 2.3, parsers >= 0.12.1 && < 1, prettyprinter >= 1.2 && < 2, prettyprinter-ansi-terminal >= 1.1 && < 2, profunctors >= 4.0 && < 6, reducers >= 3.10 && < 4,- semigroups >= 0.8.3.1 && < 1, transformers >= 0.2 && < 0.6, unordered-containers >= 0.2.1 && < 0.3, utf8-string >= 0.3.6 && < 1.1@@ -108,19 +102,9 @@ if !impl(ghc >= 8.8) ghc-options: -Wnoncanonical-monadfail-instances else- build-depends: fail == 4.9.*--test-suite doctests- type: exitcode-stdio-1.0- main-is: doctests.hs- ghc-options: -Wall -threaded- x-doctest-options: -fobject-code- hs-source-dirs: tests- default-language: Haskell2010- build-depends:- base,- doctest >= 0.11.1 && < 0.17,- trifecta+ build-depends:+ fail == 4.9.*,+ semigroups >= 0.8.3.1 && < 1 test-suite quickcheck type: exitcode-stdio-1.0