implemented overlay

This commit is contained in:
Jonathan Lamothe 2019-09-02 22:56:29 -04:00
parent 8dd4896f07
commit 84cb2c8c19
2 changed files with 24 additions and 0 deletions

View File

@ -24,6 +24,7 @@ module Mtlstats.Format
, left , left
, right , right
, centre , centre
, overlay
, month , month
) where ) where
@ -74,6 +75,17 @@ centre n str = let
pad = replicate pLen ' ' pad = replicate pLen ' '
in take n $ pad ++ str ++ repeat ' ' in take n $ pad ++ str ++ repeat ' '
-- | Overlays one string on top of another
overlay
:: String
-- ^ The string on the top
-> String
-- ^ The string on the bottom
-> String
overlay (x:xs) (_:ys) = x : overlay xs ys
overlay xs [] = xs
overlay [] ys = ys
-- | Converts a number to a three character month (e.g. @"JAN"@) -- | Converts a number to a three character month (e.g. @"JAN"@)
month :: Int -> String month :: Int -> String
month 1 = "JAN" month 1 = "JAN"

View File

@ -31,6 +31,7 @@ spec = describe "Mtlstats.Format" $ do
leftSpec leftSpec
rightSpec rightSpec
centreSpec centreSpec
overlaySpec
monthSpec monthSpec
padNumSpec :: Spec padNumSpec :: Spec
@ -89,6 +90,17 @@ centreSpec = describe "centre" $ do
it "should truncate the text" $ it "should truncate the text" $
centre 2 "foo" `shouldBe` "fo" centre 2 "foo" `shouldBe` "fo"
overlaySpec :: Spec
overlaySpec = describe "overlay" $ do
context "first string shorter" $
it "should overlay" $
overlay "foo" "abc123" `shouldBe` "foo123"
context "first string longer" $
it "should overlay" $
overlay "abc123" "foo" `shouldBe` "abc123"
monthSpec :: Spec monthSpec :: Spec
monthSpec = describe "month" $ do monthSpec = describe "month" $ do