name:                s-cargot-letbind
version:             0.2.3.0
synopsis:            Enables let-binding and let-expansion for s-cargot defined S-expressions.
description:

   This module allows let bindings to be introduced into the S-Expression
   syntax.
   .
   For example, instead of:
   .
   >    (concat (if (enabled x) (+ (width x) (width y)) (width y))
   >            " meters")
   .
   this can be re-written with let bindings:
   .
   >    (let ((wy    (width y))
   >          (wboth (+ (width x) wy))
   >          (wide  (if (enabled x) wboth wy))
   >         )
   >      (concat wide " meters"))
   .
   As S-expressions grow larger, let-binding can help readability for
   those expressions.  This module provides the 'discoverLetBindings'
   function that will convert an S-expression into one containing
   let-bound variables, and the inverse function 'letExpand' which will
   expand let-bound variables back into the expression.

homepage:            https://github.com/GaloisInc/s-cargot-letbind
license:             ISC
license-file:        LICENSE
author:              Kevin Quick
maintainer:          kquick@galois.com
copyright:           2018 Kevin Quick
category:            Data
build-type:          Simple
extra-source-files:  ChangeLog.md
                     test/big-sample.sexp
                     test/small-sample.sexp
                     test/med-sample.sexp
                     test/med2-sample.sexp
cabal-version:       >=1.10

source-repository head
  type: git
  location: git://github.com/GaloisInc/s-cargot-letbind.git

library
  exposed-modules:     Data.SCargot.LetBind
  build-depends:       base      >=4.9 && <5
                     , s-cargot  >= 0.1.4.0 && <0.2
                     , text      >=1.2 && <2
  hs-source-dirs:      src
  default-language:    Haskell2010
  ghc-options:         -Wall

test-suite s-cargot-printparselet
  default-language: Haskell2010
  type:             exitcode-stdio-1.0
  hs-source-dirs:   test
  main-is:          SCargotPrintParseLet.hs
  build-depends:    base      >=4.9 && <5
                  , parsec    >=3.1 && <4
                  , HUnit     >=1.6 && <1.7
                  , s-cargot  >= 0.1.4.0 && <0.2
                  , s-cargot-letbind
                  , text      >=1.2 && <2