module Ribosome.Data.Mapping where import Data.MessagePack (Object) import Ribosome.Data.ErrorReport (ErrorReport(ErrorReport)) import Ribosome.Error.Report.Class (ReportError(..)) import System.Log (Priority(NOTICE, ERROR)) newtype MappingIdent = MappingIdent Text deriving (MappingIdent -> MappingIdent -> Bool (MappingIdent -> MappingIdent -> Bool) -> (MappingIdent -> MappingIdent -> Bool) -> Eq MappingIdent forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: MappingIdent -> MappingIdent -> Bool $c/= :: MappingIdent -> MappingIdent -> Bool == :: MappingIdent -> MappingIdent -> Bool $c== :: MappingIdent -> MappingIdent -> Bool Eq, Int -> MappingIdent -> ShowS [MappingIdent] -> ShowS MappingIdent -> String (Int -> MappingIdent -> ShowS) -> (MappingIdent -> String) -> ([MappingIdent] -> ShowS) -> Show MappingIdent forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MappingIdent] -> ShowS $cshowList :: [MappingIdent] -> ShowS show :: MappingIdent -> String $cshow :: MappingIdent -> String showsPrec :: Int -> MappingIdent -> ShowS $cshowsPrec :: Int -> MappingIdent -> ShowS Show) data Mapping = Mapping { Mapping -> MappingIdent mappingIdent :: MappingIdent, Mapping -> Text mappingLhs :: Text, Mapping -> Text mappingMode :: Text, Mapping -> Bool mappingRemap :: Bool, Mapping -> Bool mappingBuffer :: Bool } deriving (Mapping -> Mapping -> Bool (Mapping -> Mapping -> Bool) -> (Mapping -> Mapping -> Bool) -> Eq Mapping forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Mapping -> Mapping -> Bool $c/= :: Mapping -> Mapping -> Bool == :: Mapping -> Mapping -> Bool $c== :: Mapping -> Mapping -> Bool Eq, Int -> Mapping -> ShowS [Mapping] -> ShowS Mapping -> String (Int -> Mapping -> ShowS) -> (Mapping -> String) -> ([Mapping] -> ShowS) -> Show Mapping forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Mapping] -> ShowS $cshowList :: [Mapping] -> ShowS show :: Mapping -> String $cshow :: Mapping -> String showsPrec :: Int -> Mapping -> ShowS $cshowsPrec :: Int -> Mapping -> ShowS Show) data MappingError = NoSuchMapping MappingIdent | InvalidArgs [Object] deriving (MappingError -> MappingError -> Bool (MappingError -> MappingError -> Bool) -> (MappingError -> MappingError -> Bool) -> Eq MappingError forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: MappingError -> MappingError -> Bool $c/= :: MappingError -> MappingError -> Bool == :: MappingError -> MappingError -> Bool $c== :: MappingError -> MappingError -> Bool Eq, Int -> MappingError -> ShowS [MappingError] -> ShowS MappingError -> String (Int -> MappingError -> ShowS) -> (MappingError -> String) -> ([MappingError] -> ShowS) -> Show MappingError forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MappingError] -> ShowS $cshowList :: [MappingError] -> ShowS show :: MappingError -> String $cshow :: MappingError -> String showsPrec :: Int -> MappingError -> ShowS $cshowsPrec :: Int -> MappingError -> ShowS Show) deepPrisms ''MappingError instance ReportError MappingError where errorReport :: MappingError -> ErrorReport errorReport (NoSuchMapping (MappingIdent Text ident)) = Text -> [Text] -> Priority -> ErrorReport ErrorReport (Text "no mapping defined for `" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text ident Text -> Text -> Text forall a. Semigroup a => a -> a -> a <>Text "`") [Text "no such mapping: " Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text ident] Priority NOTICE errorReport (InvalidArgs [Object] args) = Text -> [Text] -> Priority -> ErrorReport ErrorReport Text "internal error while executing mapping" [Item [Text] "invalid mapping args:", [Object] -> Text forall b a. (Show a, IsString b) => a -> b show [Object] args] Priority ERROR