{- |
Description: Utilities for tracking source locations.
Copyright: © 2020 James Alexander Feldman-Crough
License: MPL-2.0
-}
module ProSource
    (
    -- * Source
      Source(..)
    , makeSource, getSourceLine, getLocation

    -- * Location
    , Location (..), SparseLocation(..)
    , enrichLocation, stripLocation, sparse

    -- * Units
    , Offset(..), Line(..), Column(..)

    -- * Line map
    , LineMap, lineOffsets, lineToOffset, offsetToLine

    -- * Polymorphic Location optics
    , HasLocation(..), offset, column, line, source

    ) where

import ProSource.HasLocation
import ProSource.LineMap
import ProSource.Location
import ProSource.LocationOps
import ProSource.Source
import ProSource.SourceOps
import ProSource.SparseLocation
import ProSource.Units