module Rakka.Wiki.Interpreter.Image
( interpreters
)
where
import Control.Monad
import Data.Maybe
import Network.URI
import Rakka.Page
import Rakka.SystemConfig
import Rakka.Wiki.Interpreter
import Rakka.Wiki
interpreters :: [Interpreter]
interpreters = [ imageInterp
, imgFrameInterp
]
--
--
--
imageInterp :: Interpreter
imageInterp
= InlineCommandInterpreter {
iciName = "img"
, iciInterpret
= \ ctx (InlineCommand _ attrs _) ->
do BaseURI baseURI <- getSysConf (ctxSysConf ctx)
let name = case lookup "src" attrs of
Just x -> x
Nothing -> error "\"src\" attribute is missing"
hrefAttr = ("href", uriToString id (mkPageURI baseURI name) "")
alt = lookup "alt" attrs
classAttr = case lookup "float" attrs of
Nothing -> ("class", "inlineImage")
Just "left" -> ("class", "inlineImage leftFloat")
Just "right" -> ("class", "inlineImage rightFloat")
Just others -> error ("unknown \"float\" attribute: " ++ others)
anchorAttrs = [hrefAttr, classAttr]
return (Anchor anchorAttrs [Image (Right name) alt])
}
--