import Control.Monad.State import Text.XML.HXT.Arrow import Control.Arrow import Text.CSL.Reference import Text.CSL.Style import Text.CSL.Proc import Text.CSL.Parser import Text.CSL.Output.Plain import RefData file :: String file = "test/apa" localeFile :: String localeFile = "test/locales-it-IT.xml" main :: IO () main = do s <- readCSLFile file processCitation s processCitation :: Style -> IO () processCitation s@(Style {biblio = b, citation = c, csMacros = m , csTerms = terms}) = do let (lb,ob,sb) = case b of Just (Bibliography o s lay) -> (lay,o,s) _ -> error $ "no bibliography layout in style" (lc,oc,sc) = case c of Citation o s lay -> (lay,o,s) putStrLn . concatMap renderPlain . processCitations s [rossato2006] $ [[("Rossato2006","p. 10-12")]] putStrLn . unlines . map renderPlain . processBibliography s $ someReferences rossato2006 :: Reference rossato2006 = emptyReference { citeKey = "Rossato2006" , refType = Book , author = [Person "" ["Andrea"] "" "" "Rossato" "" ,Person "On." ["Amedea"] "" "" "Uggino" "" ,Person "" ["Luigi"] "" "" "Gazzoni" ""] , editor = [Person "" ["Paola"] "" "" "Locatin" ""] , translator = [Person "" ["Roberto"] "" "" "Caso" "" ,Person "" ["Federico"] "" "" "Uggino" ""] , title = "Diritto e architettura nello spazio digitale" , issued = [RefDate 2006 1 16 ""] , accessed = [RefDate 2006 1 16 ""] , publisher = [Entity "Cedam"] , publisherPlace = "Bologna" , edition = "I" , page = "12" , url = "http://some.url.com" }