{-# LANGUAGE Rank2Types #-} module Text.PariPari.Lens ( posLine , posCol , reportLine , reportCol , reportFile , reportErrors , ecErrors , ecContext , optMaxContexts , optMaxErrorsPerContext , optMaxLabelsPerContext ) where import Text.PariPari.Internal.Class import Text.PariPari.Internal.Reporter type Lens a b = forall f . Functor f => (b -> f b) -> (a -> f a) posLine :: Lens Pos Int posLine k p = fmap (\x -> p { _posLine = x }) (k (_posLine p)) {-# INLINE posLine #-} posCol :: Lens Pos Int posCol k p = fmap (\x -> p { _posCol = x }) (k (_posCol p)) {-# INLINE posCol #-} reportLine :: Lens Report Int reportLine k r = fmap (\x -> r { _reportLine = x }) (k (_reportLine r)) {-# INLINE reportLine #-} reportCol :: Lens Report Int reportCol k r = fmap (\x -> r { _reportCol = x }) (k (_reportCol r)) {-# INLINE reportCol #-} reportFile :: Lens Report FilePath reportFile k r = fmap (\x -> r { _reportFile = x }) (k (_reportFile r)) {-# INLINE reportFile #-} reportErrors :: Lens Report [ErrorContext] reportErrors k r = fmap (\x -> r { _reportErrors = x }) (k (_reportErrors r)) {-# INLINE reportErrors #-} ecErrors :: Lens ErrorContext [Error] ecErrors k e = fmap (\x -> e { _ecErrors = x }) (k (_ecErrors e)) {-# INLINE ecErrors #-} ecContext :: Lens ErrorContext [String] ecContext k e = fmap (\x -> e { _ecContext = x }) (k (_ecContext e)) {-# INLINE ecContext #-} optMaxContexts :: Lens ReportOptions Int optMaxContexts k o = fmap (\x -> o { _optMaxContexts = x }) (k (_optMaxContexts o)) {-# INLINE optMaxContexts #-} optMaxErrorsPerContext :: Lens ReportOptions Int optMaxErrorsPerContext k o = fmap (\x -> o { _optMaxErrorsPerContext = x }) (k (_optMaxErrorsPerContext o)) {-# INLINE optMaxErrorsPerContext #-} optMaxLabelsPerContext :: Lens ReportOptions Int optMaxLabelsPerContext k o = fmap (\x -> o { _optMaxLabelsPerContext = x }) (k (_optMaxLabelsPerContext o)) {-# INLINE optMaxLabelsPerContext #-}