ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa{-# LANGUAGE CPP, TypeFamilies, DeriveDataTypeable #-}
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksamodule PGIP.Output.Translations
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa ( formatTranslations
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa ) where
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksaimport PGIP.Output.Formatting
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksaimport PGIP.Output.Mime
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksaimport Logic.Comorphism (AnyComorphism)
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksaimport Proofs.AbstractState (G_prover)
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksaimport Common.Json (ppJson, asJson)
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksaimport Common.ToXml (asXml)
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksaimport Common.Utils
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksaimport Text.XML.Light (ppTopElement)
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksaimport Data.Data
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksatype TranslationsFormatter = [(G_prover, AnyComorphism)] -> (String, String)
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen KuksaformatTranslations :: Maybe String -> TranslationsFormatter
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen KuksaformatTranslations format comorphisms = case format of
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa Just "json" -> formatAsJSON
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa _ -> formatAsXML
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa where
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa convertedTranslations :: Translations
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa convertedTranslations = Translations
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa { translations = nubOrd $ map (showComorph . snd) comorphisms }
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa formatAsJSON :: (String, String)
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa formatAsJSON = (jsonC, ppJson $ asJson convertedTranslations)
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa formatAsXML :: (String, String)
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa formatAsXML = (xmlC, ppTopElement $ asXml convertedTranslations)
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksadata Translations = Translations
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa { translations :: [String]
ddf0da9f7ab834587eecd04647ee3a8356da4610Eugen Kuksa } deriving (Show, Typeable, Data)