)
where
+import Control.Arrow
+import Control.Arrow.ListArrow
import Data.Map (Map)
import qualified Data.Map as M
import Data.Maybe
import Rakka.SystemConfig
import Rakka.Wiki
import Rakka.Wiki.Interpreter
+import Text.XML.HXT.Arrow.XmlArrow
+import Text.XML.HXT.Arrow.XmlNodeSet
interpreters :: [Interpreter]
bciName = "inOtherLanguages"
, bciInterpret
= \ ctx _ ->
- case fmap pageOtherLang (ctxMainPage ctx) of
- Nothing
- -> return EmptyBlock
-
- Just linkTable
- -> do Languages langTable <- getSysConf (ctxSysConf ctx)
- let merged = mergeTables langTable (M.toList linkTable)
- return $ mkLangList merged
+ let linkTable = case ctxMainPage ctx of
+ Just page -> runLA ( getXPathTreesInDoc "/page/otherLang/link"
+ >>>
+ ( getAttrValue0 "lang"
+ &&&
+ getAttrValue0 "page"
+ )
+ ) page
+ Nothing -> []
+ in
+ case linkTable of
+ [] -> return EmptyBlock
+ xs -> do Languages langTable <- getSysConf (ctxSysConf ctx)
+ let merged = mergeTables langTable linkTable
+ return $ mkLangList merged
}
where
mergeTables :: Map LanguageTag LanguageName