X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTSN%2FPicklers.hs;h=ff7b0d1e677e9cff2c9cd469c77e226be272a2a6;hb=6062e1f8ae4d894699bb9d1f552b36af0151b5bb;hp=387f4cf4fe4926d0c436678ca0e2ed509b075049;hpb=bc49d99cfbe5530e4b57eeda9367a43dd7939c53;p=dead%2Fhtsn-import.git diff --git a/src/TSN/Picklers.hs b/src/TSN/Picklers.hs index 387f4cf..ff7b0d1 100644 --- a/src/TSN/Picklers.hs +++ b/src/TSN/Picklers.hs @@ -13,6 +13,8 @@ module TSN.Picklers ( where -- System imports. +import Data.List ( intercalate ) +import Data.List.Split ( chunksOf ) import Data.String.Utils ( replace ) import Data.Time.Clock ( NominalDiffTime, UTCTime, addUTCTime ) import Data.Time.Format ( formatTime, parseTime ) @@ -78,6 +80,31 @@ xp_date_padded = from_date = formatTime defaultTimeLocale date_format_padded + +-- | Format a number as a string using a comma as the thousands +-- separator. +-- +-- Examples: +-- +-- >>> format_commas 0 +-- "0" +-- >>> format_commas 10 +-- "10" +-- >>> format_commas 100 +-- "100" +-- >>> format_commas 1000 +-- "1,000" +-- >>> format_commas 10000 +-- "10,000" +-- >>> format_commas 100000 +-- "100,000" +-- >>> format_commas 1000000 +-- "1,000,000" +-- +format_commas :: Int -> String +format_commas x = + reverse (intercalate "," $ chunksOf 3 $ reverse $ show x) + -- | Parse \ from an 'AutoRaceResultsListing'. These are -- essentially 'Int's, but they look like, -- @@ -98,8 +125,8 @@ xp_earnings = | otherwise = (read . strip_commas . show) s from_earnings :: Maybe Int -> String - from_earnings Nothing = "" - from_earnings (Just i) = show i + from_earnings Nothing = "TBA" + from_earnings (Just i) = format_commas i -- | (Un)pickle a 'UTCTime' from a \ element in an