module HIndent.Pretty.Combinators.Getter
( startingColumn
, printerLength
) where
import Control.Monad.RWS hiding (state)
import Data.Int
import HIndent.Pretty.Combinators.String
import HIndent.Printer
startingColumn :: Printer Int64
startingColumn :: Printer Int64
startingColumn = do
PrintState
before <- Printer PrintState
forall s (m :: * -> *). MonadState s m => m s
get
HasCallStack => String -> Printer ()
String -> Printer ()
string String
""
PrintState
after <- Printer PrintState
forall s (m :: * -> *). MonadState s m => m s
get
PrintState -> Printer ()
forall s (m :: * -> *). MonadState s m => s -> m ()
put PrintState
before
Int64 -> Printer Int64
forall a. a -> Printer a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int64 -> Printer Int64) -> Int64 -> Printer Int64
forall a b. (a -> b) -> a -> b
$ PrintState -> Int64
psColumn PrintState
after
printerLength :: Printer a -> Printer Int64
printerLength :: forall a. Printer a -> Printer Int64
printerLength Printer a
p = do
PrintState
before <- Printer PrintState
forall s (m :: * -> *). MonadState s m => m s
get
a
_ <- Printer a
p
PrintState
after <- Printer PrintState
forall s (m :: * -> *). MonadState s m => m s
get
PrintState -> Printer ()
forall s (m :: * -> *). MonadState s m => s -> m ()
put PrintState
before
Int64 -> Printer Int64
forall a. a -> Printer a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int64 -> Printer Int64) -> Int64 -> Printer Int64
forall a b. (a -> b) -> a -> b
$ PrintState -> Int64
psColumn PrintState
after Int64 -> Int64 -> Int64
forall a. Num a => a -> a -> a
- PrintState -> Int64
psColumn PrintState
before