never executed always true always false
    1 module HelVM.HelMA.Automata.Zot.Evaluator (
    2   runRio,
    3   run,
    4   evalParams,
    5   evalWithFormat,
    6 ) where
    7 
    8 import           HelVM.HelMA.Automata.Zot.Automaton
    9 import           HelVM.HelMA.Automata.Zot.Expression
   10 import           HelVM.HelMA.Automata.Zot.Parser
   11 
   12 import qualified HelVM.HelMA.Automaton.API.AppOptions  as App
   13 import           HelVM.HelMA.Automaton.API.Emit
   14 import           HelVM.HelMA.Automaton.API.Env
   15 import           HelVM.HelMA.Automaton.API.EvalParams
   16 import           HelVM.HelMA.Automaton.API.IOTypes
   17 
   18 import           HelVM.HelMA.Automaton.Eff.MonadEff
   19 
   20 import           HelVM.HelMA.Automaton.Extra
   21 
   22 import           HelVM.HelMA.Automaton.Types.LabelType
   23 
   24 import           HelVM.HelIO.Containers.Extra
   25 import           HelVM.HelIO.Control.Safe
   26 
   27 import           HelVM.HelIO.Digit.Digitable
   28 import           HelVM.HelIO.Digit.ToDigit
   29 
   30 import           HelVM.HelIO.ListLikeExtra
   31 
   32 import           Control.Monad.Writer.Lazy
   33 
   34 import qualified RIO
   35 
   36 runRio :: Has env => RIO.RIO env ()
   37 runRio = runWithOptions =<< optionsRio where
   38   runWithOptions o =  run (App.emit o) . App.evalParams o =<< readSourceFileRio
   39 
   40 run :: Has env =>  Emit -> EvalParams -> RIO.RIO env ()
   41 run No = runAsRIO . evalParams
   42 run _  = fallback
   43 
   44 evalParams :: AppEff m => EvalParams -> m ()
   45 evalParams p = putLine =<< evalWithFormat (formatType p) (source p) =<< getContentsText
   46 
   47 evalWithFormat :: MonadSafe m => LabelType -> Source -> LText -> m Output
   48 evalWithFormat BinaryLabel source input = pure $ showFoldable $ evalInternal source input
   49 evalWithFormat TextLabel   source input = (makeAsciiText28 . convert . evalInternal source) . showExpressionList =<< stringToDL (toString input)
   50 
   51 evalInternal :: Source -> LText -> ExpressionDList
   52 evalInternal source input = eval $ fromStrict source <> input
   53 
   54 eval :: LText  -> ExpressionDList
   55 eval = execWriter . runExpressionList . parse