{-# LANGUAGE TemplateHaskell #-}
module Vgrep.Results
    ( File (..)
    , fileName

    , LineReference (..)
    , lineNumber
    , lineText

    , FileLineReference (..)
    , file
    , lineReference
    ) where

import Control.Lens.TH
import Data.Text       (Text)

import Vgrep.Ansi (AnsiFormatted)


newtype File = File
    { _fileName :: Text
    } deriving (Eq, Show)

makeLenses ''File

data LineReference = LineReference
    { _lineNumber :: Maybe Int
    , _lineText   :: AnsiFormatted
    } deriving (Eq, Show)

makeLenses ''LineReference

data FileLineReference = FileLineReference
    { _file          :: File
    , _lineReference :: LineReference
    } deriving (Eq, Show)

makeLenses ''FileLineReference