packages feed

tree-diff-0.1: tree-diff.cabal

cabal-version:      2.2
name:               tree-diff
version:            0.1
synopsis:           Diffing of (expression) trees.
category:           Data, Testing
description:
  Common diff algorithm works on list structures:
  .
  @
  diff :: Eq a => [a] -> [a] -> [Edit a]
  @
  .
  This package works on trees.
  .
  @
  treeDiff :: Eq a => Tree a -> Tree a -> Edit (EditTree a)
  @
  .
  This package also provides a way to diff arbitrary ADTs,
  using @Generics@-derivable helpers.
  .
  This package differs from <http://hackage.haskell.org/package/gdiff gdiff>,
  in a two ways: @tree-diff@ doesn't have patch function,
  and the "edit-script" is a tree itself, which is useful for pretty-printing.
  .
  @
  >>> prettyEditExpr $ ediff (Foo 42 [True, False] "old") (Foo 42 [False, False, True] "new")
  Foo
  \  {fooBool = [-True, +False, False, +True],
  \   fooInt = 42,
  \   fooString = -"old" +"new"}
  @

homepage:           https://github.com/phadej/tree-diff
bug-reports:        https://github.com/phadej/tree-diff/issues
license:            GPL-2.0-or-later
license-file:       LICENSE
author:             Oleg Grenrus <oleg.grenrus@iki.fi>
maintainer:         Oleg.Grenrus <oleg.grenrus@iki.fi>
copyright:          (c) 2017-2019 Oleg Grenrus
build-type:         Simple
extra-source-files:
  README.md
  ChangeLog.md

tested-with:
  GHC ==8.8.1 || ==8.6.5 || ==8.4.4 || ==8.2.2 || ==8.0.2 || ==7.10.3 || ==7.8.4 || ==7.6.3 || ==7.4.2

extra-source-files:
  fixtures/exfoo.expr
  fixtures/MyInt1.expr
  fixtures/MyInt2.expr
  fixtures/MyInt3.expr
  fixtures/Positional.expr

source-repository head
  type:     git
  location: https://github.com/phadej/tree-diff.git

library
  exposed-modules:
    Data.TreeDiff
    Data.TreeDiff.Class
    Data.TreeDiff.Expr
    Data.TreeDiff.Golden
    Data.TreeDiff.List
    Data.TreeDiff.Parser
    Data.TreeDiff.Pretty
    Data.TreeDiff.QuickCheck
    Data.TreeDiff.Tree

  -- GHC boot libraries
  build-depends:
    , base        >=4.5      && <4.13
    , bytestring  ^>=0.9.2.1 || ^>=0.10.0.2
    , containers  ^>=0.4.2.1 || ^>=0.5.0.0 || ^>=0.6.0.1
    , parsec      ^>=3.1.13.0
    , pretty      ^>=1.1.1.0
    , text        ^>=1.2.3.0
    , time        ^>=1.4 || ^>=1.5.0.1 || ^>=1.6.0.1 || ^>=1.8.0.2

  build-depends:
    , aeson                 ^>=1.4.0.0
    , ansi-terminal         ^>=0.8.2 || ^>=0.9.1
    , ansi-wl-pprint        ^>=0.6.8.2
    , base-compat           ^>=0.10.5
    , bytestring-builder    ^>=0.10.8.2.0
    , hashable              ^>=1.2.7.0 || ^>=1.3.0.0
    , parsers               ^>=0.12.10
    , QuickCheck            ^>=2.12.6.1 || ^>=2.13.1
    , scientific            ^>=0.3.6.2
    , tagged                ^>=0.8.6
    , unordered-containers  ^>=0.2.8.0
    , uuid-types            ^>=1.0.3
    , vector                ^>=0.12

  if impl(ghc <7.5)
    build-depends: ghc-prim

  if !impl(ghc >=8.0)
    build-depends: semigroups >=0.18.5 && <0.20

  if !impl(ghc >=7.8)
    build-depends: generic-deriving ^>=1.12.4

  if !impl(ghc >=7.10)
    build-depends:
      , nats          ^>=1.1.2
      , transformers  ^>=0.3.0.0 || ^>=0.4.2.0 || ^>=0.5.2.0
      , void          ^>=0.7.3

  other-extensions:
    CPP
    ConstraintKinds
    DefaultSignatures
    FlexibleContexts
    GADTs
    RankNTypes
    ScopedTypeVariables
    TypeOperators

  hs-source-dirs:   src
  default-language: Haskell2010

test-suite test
  default-language: Haskell2010
  type:             exitcode-stdio-1.0
  main-is:          Tests.hs
  hs-source-dirs:   tests
  ghc-options:      -Wall -threaded
  build-depends:
    , ansi-terminal
    , ansi-wl-pprint
    , base
    , base-compat
    , parsec
    , QuickCheck
    , tasty             ^>=1.2
    , tasty-golden      ^>=2.3.1.1
    , tasty-quickcheck  ^>=0.10.1
    , tagged
    , tree-diff
    , trifecta          ^>=2

  if impl(ghc <7.5)
    build-depends: ghc-prim