|
|
- {-# LANGUAGE OverloadedStrings #-}
- module Main where
-
- import qualified Data.Text.Lazy.IO as Text
- import qualified Data.Text.Lazy as Text
- import Data.Text.Lazy (Text)
-
- import Text.HTML.TagSoup
- import System.Environment
- import Control.Exception
- import Data.Maybe
-
- main :: IO ()
- main = do
- [file] <- getArgs
- tags <- parseTags <$> Text.readFile file
- evaluate (length tags)
- Text.writeFile file (renderTags (hideSteps False tags))
-
- hideSteps :: Bool -> [Tag Text] -> [Tag Text]
- hideSteps has_eqn (to@(TagOpen "a" attrs):tt@(TagText t):tc@(TagClose "a"):rest)
- | Text.length t >= 1, Text.last t == '⟨', Just href <- lookup "href" attrs =
- [ TagOpen "span" [("class", "reasoning-step")]
- , TagOpen "span" [("class", "as-written " <> fromMaybe "" (lookup "class" attrs))]
- , to, tt, tc ] ++ go href rest
- where
- alternate = Text.init t
- go href (to@(TagOpen "a" attrs):tt@(TagText t):tc@(TagClose "a"):cs)
- | Text.length t >= 1
- , Text.head t == '⟩'
- , Just href' <- lookup "href" attrs
- , href' == href
- = [ to, tt, tc, TagClose "span"
- , TagOpen "span" [("class", "alternate " <> fromMaybe "" (lookup "class" attrs))]
- , TagText alternate
- , TagClose "span"
- , TagClose "span"
- ] ++ hideSteps True cs
- go href (c:cs) = c:go href cs
- go _ [] = []
- hideSteps False (TagClose "html":cs) =
- [TagOpen "style" [], TagText ".equations { display: none !important; }", TagClose "style", TagClose "html"]
- ++ hideSteps True cs
- hideSteps has_eqn (c:cs) = c:hideSteps has_eqn cs
- hideSteps _ [] = []
|