]> gitweb.michael.orlitzky.com - dead/htsn-import.git/commitdiff
Strip leading underscores in our Groundhog codegen.
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 2 Jan 2015 18:25:14 +0000 (13:25 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 2 Jan 2015 18:25:14 +0000 (13:25 -0500)
src/TSN/Codegen.hs

index 0e8026d53eb068bc45128aa26c86e84ffc4aaea0..cd8e20936648fa7db46c00c982f02a923990b4f3 100644 (file)
@@ -15,6 +15,10 @@ import Database.Groundhog.TH (
   lowerCaseSuffixNamingStyle )
 
 
+strip_leading_underscore :: String -> String
+strip_leading_underscore ('_' : rest) = rest
+strip_leading_underscore s = s
+
 -- | The lowercase naming style for database entities, provided by
 --   Groundhog. Makes a better starting point than the default.
 --
@@ -27,14 +31,23 @@ lowercase_ns = lowerCaseSuffixNamingStyle
 --   underscores. So, foo_bar_baz would get mapped to bar_baz in the
 --   database.
 --
---   Examples:
+--   Leading underscores are ignored, as those are used to hide unused
+--   field warnings.
+--
+--   ==== __Examples__
 --
 --   >>> tsn_db_field_namer "herp" "derp" 0 "xml_player_name" 0
 --   "player_name"
 --
+--   >>> tsn_db_field_namer "herp" "derp" 0 "db_player_name" 0
+--   "player_name"
+--
+--   >>> tsn_db_field_namer "herp" "derp" 0 "_db_player_name" 0
+--   "player_name"
+--
 tsn_db_field_namer :: String -> String -> Int -> String -> Int -> String
 tsn_db_field_namer _ _ _ fieldname _ =
-  (join "_") . tail . (split "_") $ fieldname
+  (join "_") . tail . (split "_") $ strip_leading_underscore fieldname
 
 
 -- | An expression field name creator. \"Expression\" in the context
@@ -42,14 +55,21 @@ tsn_db_field_namer _ _ _ fieldname _ =
 --   and update statement. We take the field name (from a record type)
 --   as an argument and capitalize the first letter of each word.
 --
---   Examples:
+--   Leading underscores are ignored, as those are used to hide unused
+--   field warnings.
+--
+--   ==== __Examples__
 --
 --   >>> tsn_expr_field_namer "herp" "derp" 0 "foo_bar" 0
 --   "Foo_Bar"
 --
+--   >>> tsn_expr_field_namer "herp" "derp" 0 "_foo_bar" 0
+--   "Foo_Bar"
+--
 tsn_expr_field_namer :: String -> String -> Int -> String -> Int -> String
 tsn_expr_field_namer _ _ _ fieldname _ =
-  (join "_") . (map capitalize) . (split "_") $ fieldname
+  (join "_") . (map capitalize) . (split "_") $
+    strip_leading_underscore fieldname
   where
     capitalize [] = []
     capitalize (c:cs) = (toUpper c : cs)