X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Rakka.git;a=blobdiff_plain;f=Rakka%2FWiki%2FInterpreter%2FBase.hs;h=9a02ae255668be349716a141300996bbe74aba1c;hp=38578c0e590b53d4deb396a7a5da66476dbc84ef;hb=656fdb2772ab4de5cd083cbe9e7c1610cccef73b;hpb=ee28059eadd401e5f9256df590bbb7491f952685 diff --git a/Rakka/Wiki/Interpreter/Base.hs b/Rakka/Wiki/Interpreter/Base.hs index 38578c0..9a02ae2 100644 --- a/Rakka/Wiki/Interpreter/Base.hs +++ b/Rakka/Wiki/Interpreter/Base.hs @@ -3,6 +3,8 @@ module Rakka.Wiki.Interpreter.Base ) where +import Control.Arrow +import Control.Arrow.ListArrow import Data.Map (Map) import qualified Data.Map as M import Data.Maybe @@ -11,6 +13,8 @@ import Rakka.Page import Rakka.SystemConfig import Rakka.Wiki import Rakka.Wiki.Interpreter +import Text.XML.HXT.Arrow.XmlArrow +import Text.XML.HXT.Arrow.XmlNodeSet interpreters :: [Interpreter] @@ -62,14 +66,21 @@ otherLangsInterp 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