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"
link = case lookup "link" attrs of
Just "" -> Nothing
Just x -> if isURI x then
Just x
else
Just (uriToString id (mkPageURI baseURI x) "")
Nothing -> Just (uriToString id (mkPageURI baseURI name) "")
alt = lookup "alt" attrs
classAttr = case lookup "float" attrs of
Nothing -> "inlineImage"
Just "left" -> "inlineImage leftFloat"
Just "right" -> "inlineImage rightFloat"
Just others -> error ("unknown \"float\" attribute: " ++ others)
result = case link of
Nothing -> Span [("class", classAttr)] [Image (Right name) alt]
Just x -> Anchor [ ("class", classAttr)
, ("href" , x ) ] [Image (Right name) alt]
return result
}
--