never executed always true always false
    1 module HelVM.HelMA.Automata.WhiteSpace.Evaluator (
    2   runRio,
    3   run,
    4   simpleEval,
    5   evalParams,
    6 ) where
    7 
    8 import           HelVM.HelMA.Automata.WhiteSpace.API.TokenType
    9 import           HelVM.HelMA.Automata.WhiteSpace.Lexer
   10 import           HelVM.HelMA.Automata.WhiteSpace.Parser
   11 import qualified HelVM.HelMA.Automata.WhiteSpace.SimpleParams  as S
   12 import           HelVM.HelMA.Automata.WhiteSpace.Token
   13 
   14 import qualified HelVM.HelMA.Automaton.API.AppOptions          as App
   15 import qualified HelVM.HelMA.Automaton.API.AutomatonOptions    as Automaton
   16 import           HelVM.HelMA.Automaton.API.Emit
   17 import           HelVM.HelMA.Automaton.API.Env
   18 import           HelVM.HelMA.Automaton.API.EvalParams
   19 import           HelVM.HelMA.Automaton.API.IOTypes
   20 
   21 import           HelVM.HelMA.Automaton.Automaton
   22 
   23 import           HelVM.HelMA.Automaton.Eff.MonadEff
   24 
   25 import           HelVM.HelMA.Automaton.Extra
   26 
   27 import           HelVM.HelMA.Automaton.Types.LabelType
   28 
   29 import           HelVM.HelIO.Control.Safe
   30 
   31 import           Prelude                                       hiding (swap)
   32 
   33 import qualified RIO
   34 
   35 import           Text.Pretty.Simple
   36 
   37 runRio :: Has env => TokenType -> RIO.RIO env ()
   38 runRio t = runWithOptions =<< optionsRio where
   39   runWithOptions o = run (App.emit o) t . App.evalParams o =<< readSourceFileRio
   40 
   41 run :: Has env => Emit -> TokenType -> EvalParams -> RIO.RIO env ()
   42 run No   t                = runAsRIO . evalParams t
   43 run IL   VisibleTokenType = putLTextLnRio . pShowNoColor . (flipParseVisible <$> formatType <*> source)
   44 run IL   WhiteTokenType   = putLTextLnRio . pShowNoColor . (flipParseWhite   <$> formatType <*> source)
   45 run TL   VisibleTokenType = putLTextLnRio . show . tokenizeVisible . source
   46 run TL   WhiteTokenType   = putLTextLnRio . show . tokenizeWhite   . source
   47 run Code VisibleTokenType = putLTextLnRio . show . readVisibleTokens . source
   48 run Code WhiteTokenType   = putLTextLnRio . show . readWhiteTokens   . source
   49 
   50 
   51 simpleEval :: AppEff m => S.SimpleParams -> m ()
   52 simpleEval p = eval (S.tokenType p) (S.source p) (S.formatType p) $ S.automatonOptions p
   53 
   54 ----
   55 
   56 evalParams :: AppEff m => TokenType -> EvalParams -> m ()
   57 evalParams tokenType p = eval tokenType (source p) (formatType p) $ automatonOptions p
   58 
   59 eval :: AppEff m => TokenType -> Source -> LabelType -> Automaton.AutomatonOptions -> m ()
   60 eval tokenType source = evalTL $ tokenize tokenType source
   61 
   62 evalTL :: AppEff m => TokenList -> LabelType -> Automaton.AutomatonOptions -> m ()
   63 evalTL tl ascii ao = flip start ao =<< liftSafe (parseFromTL ascii tl)