{-# LANGUAGE OverloadedStrings #-} -------------------------------------------------------------------------------- -- | -- Module : Data.Config.Internal.Pos -- Copyright : (C) 2014 Yorick Laupa -- License : (see the file LICENSE) -- -- Maintainer : Yorick Laupa -- Stability : provisional -- Portability : non-portable -- -------------------------------------------------------------------------------- module Data.Config.Internal.Pos where -------------------------------------------------------------------------------- data Pos = Line { lineStart :: Int , lineColStart :: Int , lineColEnd :: Int } | Multi { multiLineStart :: Int , multiLineEnd :: Int , multiColStart :: Int , multiColEnd :: Int } -------------------------------------------------------------------------------- instance Show Pos where show = showPos -------------------------------------------------------------------------------- startLine, startCol, endLine, endCol :: Pos -> Int startLine (Line l _ _) = l startLine (Multi l _ _ _) = l startCol (Line _ c _) = c startCol (Multi _ c _ _) = c endLine (Line l _ _) = l endLine (Multi _ l _ _) = l endCol (Line _ _ c) = c endCol (Multi _ _ _ c) = c -------------------------------------------------------------------------------- showPos :: Pos -> String showPos (Line s c n) = show s ++ ":" ++ show c ++ "-" ++ show n ++ ":" showPos (Multi ls le cs ce) = show ls ++ "-" ++ show le ++ ":" ++ show cs ++ "-" ++ show ce ++ ":"