-- | Open Container Format 1.0 module Codec.EBook.OCF( defaultMediatype, defaultMimetype, containerXMLFile, containerXMLFile', mimetypeFile, ) where import Codec.EBook.Types import Text.XML.Light import qualified Data.ByteString.Lazy as B defaultMediatype :: String defaultMediatype = "application/oebps-package+xml" defaultMimetype :: String defaultMimetype = "application/epub+zip" containerXMLFile' :: FilePath -> (FilePath, B.ByteString) containerXMLFile' p = containerXMLFile p defaultMediatype mimetypeFile :: (FilePath, B.ByteString) mimetypeFile = ("mimetype", str2bstr defaultMimetype) containerXMLFile :: FilePath -> String -> (FilePath, B.ByteString) containerXMLFile p m = ("META-INF/container.xml", str2bstr $ ppTopElement contTag) where contTag = add_attrs contAttrs $ unode "container" rootfilesTag contAttrs = [ Attr (unqual "version") "1.0" , Attr (unqual "xmlns") "urn:oasis:names:tc:opendocument:xmlns:container" ] rootfilesTag = unode "rootfiles" rootfileTag rootfileTag = add_attrs rfAttrs $ unode "rootfile" () rfAttrs = [ Attr (unqual "full-path") p , Attr (unqual "media-type") m ]