implemented left

This commit is contained in:
Jonathan Lamothe 2019-09-02 09:30:49 -04:00
parent d71d3c86e9
commit 60c662396f
2 changed files with 26 additions and 2 deletions

View File

@ -19,7 +19,10 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
-}
module Mtlstats.Format (padNum) where
module Mtlstats.Format
( padNum
, left
) where
-- | Pad an 'Int' with leading zeroes to fit a certain character width
padNum
@ -36,3 +39,12 @@ padNum size n
pLen = size - sLen
pad = replicate pLen '0'
in pad ++ str
-- | Aligns text to the left within a field (clipping if necessary)
left
:: Int
-- ^ The width of the field
-> String
-- ^ The text to align
-> String
left n str = take n $ str ++ repeat ' '

View File

@ -26,8 +26,9 @@ import Test.Hspec (Spec, context, describe, it, shouldBe)
import Mtlstats.Format
spec :: Spec
spec = describe "Mtlstats.Format"
spec = describe "Mtlstats.Format" $ do
padNumSpec
leftSpec
padNumSpec :: Spec
padNumSpec = describe "padNum" $ do
@ -51,3 +52,14 @@ padNumSpec = describe "padNum" $ do
context "-1234, four digits" $
it "should be -1234" $
padNum 4 (-1234) `shouldBe` "-1234"
leftSpec :: Spec
leftSpec = describe "left" $ do
context "fit" $
it "should pad the text" $
left 5 "foo" `shouldBe` "foo "
context "overflow" $
it "should truncate the text" $
left 2 "foo" `shouldBe` "fo"