module Rakka.Wiki.Interpreter.Base ( interpreters ) where import Data.Map (Map) import qualified Data.Map as M import Rakka.Page import Rakka.SystemConfig import Rakka.Wiki import Rakka.Wiki.Interpreter interpreters :: [Interpreter] interpreters = [ lineBreakInterp , spanInterp , divInterp , pageNameInterp -- , otherLangsInterp ] lineBreakInterp :: Interpreter lineBreakInterp = InlineCommandInterpreter { iciName = "br" , iciInterpret = \ _ (InlineCommand _ attrs _) -> return $ LineBreak attrs } spanInterp :: Interpreter spanInterp = InlineCommandInterpreter { iciName = "span" , iciInterpret = \ _ (InlineCommand _ attrs contents) -> return $ Span attrs contents } divInterp :: Interpreter divInterp = BlockCommandInterpreter { bciName = "div" , bciInterpret = \ _ (BlockCommand _ attrs contents) -> return $ Div attrs contents } pageNameInterp :: Interpreter pageNameInterp = InlineCommandInterpreter { iciName = "pageName" , iciInterpret = \ ctx _ -> return $ Text (ctxPageName ctx) } {- otherLangsInterp :: Interpreter otherLangsInterp = BlockCommandInterpreter { bciName = "inOtherLanguages" , bciInterpret = \ ctx _ -> case fmap pageOtherLang (ctxMainPage ctx) of Nothing -> return EmptyBlock Just linkTable -> do Languages langTable <- getSysConf (ctxSysConf ctx) (Languages undefined) let merged = mergeTables langTable (M.toList linkTable) -- FIXME } where mergeTables :: Map LanguageTag LanguageName -> [(LanguageTag, PageName)] -> [(LanguageName, PageName)] mergeTables _ [] = [] mergeTables m (x:xs) = fromMaybe x (M.lookup x m) : mergeTables m xs -}