Name:                file-location
Version:             0.4.5.1
Synopsis:            common functions that show file location information
Homepage:            https://github.com/gregwebs/FileLocation.hs
License:             BSD3
License-file:        LICENSE
Author:              Greg Weber
Maintainer:          greg@gregweber.info
Category:            Development
Build-type:          Simple
Cabal-version:       >=1.8
Description: 
    Common debugging\/error\/exception functions that give file location information
    .
    @
    $(err \"OH NO!\")
       
    main:Main main.hs:16:1 OH NO!
    @
    .
    Notice how it displays package:module file:line:character
    .
    It exposes the functions err (error), undef (undefined), and trc (Debug.Trace.trace). All of these behave the same as their normal counterpart but also spit out a location.
    .
    Here is my favorite helper, debug, which is like trace but just show the value.
    .
    @
    debug [1,2,3]
    
    DEBUG: [1,2,3]
    [1,2,3]
    @
    .
    And The Template Haskell version.
    .
    @
    $(dbg) [1,2,3]
    
    DEBUG main:Main main.hs:1:3 [1,2,3]
    [1,2,3]
    @
    .
    Also there is a version of thrwIO that gives location information
    .
    @
    ($(thrwIO) $ AException) `catch` \e -> putStrLn (\"Caught \" ++ show (e :: AException))
    
    Caught AException \"main:Main test/main.hs:25:6\"
    @
    .
    See module for a listing of all the functions with short descriptions, and the homepage for some more examples https://github.com/gregwebs/ErrorLocation.hs

extra-source-files:
    test/*.sh
    test/*.hs
    test/*.shelltest
    test/bench/*.hs
    test/bench/*.md
    test/bench/*.h

Library
  Exposed-modules: FileLocation,
                   Debug.FileLocation,
                   Control.Exception.FileLocation,
                   Debug.Util,
                   FileLocation.LocationString
  
  -- Packages needed in order to build this package.
  Build-depends:  base >= 4 && < 5
                , lifted-base
                , template-haskell
                , transformers     >= 0.2 && < 0.4
                , containers

-- This just helps you get the packages for test/main.hs
-- tests are ran with test/run.sh
-- probably can run it entirely through this interface with just a little work
test-suite test
    type:           exitcode-stdio-1.0
    main-is:        main.hs
    hs-source-dirs: ., test
    ghc-options: -Wall
    Build-depends: base
                 , file-location
                 , lifted-base
                 , containers
                 , template-haskell
                 , transformers
                  -- shelltestrunner: need shelltest executable

Source-Repository head
  type: git
  location:    https://github.com/gregwebs/FileLocation.hs
