module FP.Server.Spans where
import FP.API.Types
import FP.Server.Types
import Data.Maybe
import Data.Monoid
import Data.Text (Text)
import qualified Data.Text as T
import Prelude hiding (span)
import System.FilePath
printEitherSpan :: FilePath -> EitherSpan -> Text
printEitherSpan _ (TextSpan s) = s
printEitherSpan root (ProperSpan span') = printSourceSpan root span'
printSourceSpan :: FilePath -> SourceSpan -> Text
printSourceSpan root (SourceSpan source fromLine fromCol _toLine _toCol) =
T.pack (root </> unEncFileNameString source) <> ":" <>
T.pack (show fromLine) <> ":" <>
T.pack (show fromCol)
toSpanType :: TypeInfo -> SpanType
toSpanType (TypeInfo (SourceSpan _ sl sc el ec) srcstr typs) =
SpanType sl sc el ec srcstr typs
makeEitherLoc :: FilePath -> EitherSpan -> Maybe Loc
makeEitherLoc _ TextSpan{} = Nothing
makeEitherLoc root (ProperSpan span) = Just (makeLoc root span)
makeLoc :: FilePath -> SourceSpan -> Loc
makeLoc root (SourceSpan source fl fc tl tc) =
Loc (root </> unEncFileNameString source)
fl fc
tl tc