-- | Open Container Format 1.0 module Codec.EBook.OCF( defaultMediatype, defaultMimetype, containerXMLFile, containerXMLFile', mimetypeFile, ) where import Codec.EBook.Types import Text.XML.Light import Codec.Archive.Zip import qualified Data.ByteString.Lazy as B defaultMediatype = "application/oebps-package+xml" 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 p m) rootfileTag p m = add_attrs (rfAttrs p m) $ unode "rootfile" () rfAttrs p m = [ Attr (unqual "full-path") p ,Attr (unqual "media-type") m ]