change how script colour is handled

This commit is contained in:
Rhiannon Morris 2024-12-03 18:52:36 +01:00
parent e8d46973fa
commit ed54ec4c5a
2 changed files with 17 additions and 16 deletions

View file

@ -8,35 +8,23 @@ import Glosses
import Text.Pandoc.Definition import Text.Pandoc.Definition
import Text.Pandoc.Walk import Text.Pandoc.Walk
import Data.Maybe import Data.Maybe
import Data.Map (Map)
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text as Text import qualified Data.Text as Text
import Control.Applicative import Control.Applicative
import Control.Monad import Control.Monad
import System.Environment
langFilter :: Pandoc -> IO Pandoc langFilter :: Text -> Pandoc -> IO Pandoc
langFilter p@(Pandoc (Meta m) _) = do langFilter col p@(Pandoc (Meta m) _) = do
lang <- toLang $ Map.lookup "conlang" m lang <- toLang $ Map.lookup "conlang" m
defColor <- getDefColor m
let ?lang = lang let ?lang = lang
let ?defColor = defColor let ?defColor = col
let f = map (walk spans . fixFigureClass . makeEbnf . let f = map (walk spans . fixFigureClass . makeEbnf .
makeQuotes . letterList) . makeQuotes . letterList) .
concatMap (makeBlocks <=< glosses) concatMap (makeBlocks <=< glosses)
pure $ walk f p pure $ walk f p
getDefColor :: Map Text MetaValue -> IO Text
getDefColor m = do
res <- toText $ Map.lookup "lang-color" m
case res of
Just col -> pure col
Nothing -> do
env <- lookupEnv "LANG_COLOR"
pure $ maybe "black" Text.pack env
pluck :: Eq a => a -> [a] -> Maybe [a] pluck :: Eq a => a -> [a] -> Maybe [a]
pluck _ [] = Nothing pluck _ [] = Nothing
pluck x (y:ys) | x == y = Just ys pluck x (y:ys) | x == y = Just ys

View file

@ -1,4 +1,17 @@
import qualified Data.Map as Map
import qualified Data.Text as Text
import LangFilter import LangFilter
import System.Environment
import Text.Pandoc.JSON import Text.Pandoc.JSON
import Lang
main = toJSONFilter langFilter main =
toJSONFilter $ \p@(Pandoc (Meta m) _) -> do
col <- getDefColor m
langFilter col p
where
getDefColor m = do
res <- toText $ Map.lookup "lang-color" m
case res of
Just col -> pure $ col
Nothing -> maybe "currentcolor" Text.pack <$> lookupEnv "LANG_COLOR"