never executed always true always false
1 module HelVM.HelMA.Automata.Rev.Evaluator (
2 runRio,
3 run,
4 evalParams,
5 eval,
6 ) where
7
8 import qualified HelVM.HelMA.Automaton.API.AppOptions as App
9 import HelVM.HelMA.Automaton.API.Emit
10 import HelVM.HelMA.Automaton.API.Env
11 import HelVM.HelMA.Automaton.API.EvalParams
12 import HelVM.HelMA.Automaton.API.IOTypes
13
14 import HelVM.HelMA.Automaton.Eff.MonadEff
15
16 import HelVM.HelMA.Automaton.Extra
17
18 import qualified Data.Text as Text
19
20 import qualified RIO
21
22 runRio :: Has env => RIO.RIO env ()
23 runRio = runWithOptions =<< optionsRio where
24 runWithOptions o = run (App.emit o) . App.evalParams o =<< readSourceFileRio
25
26 run :: Has env => Emit -> EvalParams -> RIO.RIO env ()
27 run No = runAsRIO . evalParams
28 run _ = fallback
29
30 evalParams :: AppEff m => EvalParams -> m ()
31 evalParams = eval . source
32
33 eval :: MonadEff m => Source -> m ()
34 eval = evalLines . lines
35
36 evalLines :: MonadEff m => [Source] -> m ()
37 evalLines ll = doOutput $ unlines $ Text.reverse <$> ll
38
39 doOutput :: MonadEff m => Source -> m ()
40 doOutput = putLine