]> gitweb.michael.orlitzky.com - dead/htsn-import.git/commitdiff
Move pickle_location into the TSN.Location module and update TSN.XML.News.
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 6 Jul 2014 02:40:54 +0000 (22:40 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 6 Jul 2014 02:40:54 +0000 (22:40 -0400)
src/TSN/Location.hs
src/TSN/XML/News.hs

index 1097d933f004cb952af5a0a1fc17b60161bc9f8f..178c6c5b4417c46db5894bed56b0a3db16ba9dea 100644 (file)
 --
 module TSN.Location (
   Location(..),
+  pickle_location,
+  -- * WARNING: these are private but exported to silence warnings
   LocationConstructor(..) )
 where
 
 -- System imports
+import Data.Tuple.Curry ( uncurryN )
 import Database.Groundhog () -- Required for some String instance
 import Database.Groundhog.TH (
   defaultCodegenConfig,
   groundhog,
   mkPersist )
+import Text.XML.HXT.Core (
+  PU,
+  xpElem,
+  xpOption,
+  xpText,
+  xpTriple,
+  xpWrap )
 
 
 -- | Database representation of a location.
@@ -52,3 +62,19 @@ mkPersist defaultCodegenConfig [groundhog|
           type: constraint
           fields: [city, state, country]
 |]
+
+
+
+-- | We also provide an (un)pickler for one common XML representation,
+--   used at least in "TSN.XML.News" and "TSN.XML.Location".
+--
+pickle_location :: PU Location
+pickle_location =
+  xpElem "location" $
+    xpWrap (from_tuple, to_tuple) $
+    xpTriple (xpOption (xpElem "city" xpText))
+             (xpOption (xpElem "state" xpText))
+             (xpElem "country" xpText)
+  where
+    from_tuple = uncurryN Location
+    to_tuple l = (city l, state l, country l)
index a36ff7edec1abcbf4a2b862853071c5f2d6a205f..3f9fef5375b58ec440eed4c041985871ed0d6300 100644 (file)
@@ -53,7 +53,6 @@ import Text.XML.HXT.Core (
   xpOption,
   xpPair,
   xpText,
-  xpTriple,
   xpWrap )
 
 -- Local imports.
@@ -63,7 +62,7 @@ import TSN.Codegen (
 import TSN.Database ( insert_or_select )
 import TSN.DbImport ( DbImport(..), ImportResult(..), run_dbmigrate )
 import TSN.Picklers ( xp_time_stamp )
-import TSN.Location ( Location(..) )
+import TSN.Location ( Location(..), pickle_location )
 import TSN.XmlImport ( XmlImport(..) )
 import Xml (
   FromXml(..),
@@ -342,20 +341,6 @@ pickle_msg_id =
     to_tuple m = (db_msg_id m, db_event_id m)
 
 
--- | Convert a 'Location' to/from XML.
---
-pickle_location :: PU Location
-pickle_location =
-  xpElem "location" $
-    xpWrap (from_tuple, to_tuple) $
-    xpTriple (xpOption (xpElem "city" xpText))
-             (xpOption (xpElem "state" xpText))
-             (xpElem "country" xpText)
-  where
-    from_tuple =
-      uncurryN Location
-    to_tuple l = (city l, state l, country l)
-
 
 -- | Convert a 'Message' to/from XML.
 --