module PrettyPrinter.Console.MultiStep where
open import Agda.Builtin.String
open import Text.Printf
open import PrettyPrinter.Console.RedRules
open import PrettyPrinter.Console.CC
{- Pretty printing multi-step reduction -}
open import CC.MultiStep
pprint : ∀ {M M′ μ μ′ pc} → M ∣ μ ∣ pc —↠ M′ ∣ μ′ → String
pprint (M ∣ μ ∣ pc ∎) =
printf "%s\n \ESC[90m∎\ESC[0m" (pprint-cc M)
pprint {L} {N} (L ∣ μ ∣ pc —→⟨ L→M ⟩ M↠N) =
printf "%s\n \ESC[90m↓ ⟨ %s ⟩\ESC[0m\n%s"
(pprint-cc L) (print-red-rule L→M) (pprint M↠N)