115 lines
2.1 KiB
Haskell
115 lines
2.1 KiB
Haskell
import Control.Concurrent
|
|
import Data.List
|
|
import System.Time
|
|
|
|
-- Library: ansi-terminal
|
|
import System.Console.ANSI
|
|
|
|
number :: (Integral a) => a -> [String]
|
|
number 0 =
|
|
["██████"
|
|
,"██ ██"
|
|
,"██ ██"
|
|
,"██ ██"
|
|
,"██████"]
|
|
number 1 =
|
|
[" ██"
|
|
," ██"
|
|
," ██"
|
|
," ██"
|
|
," ██"]
|
|
number 2 =
|
|
["██████"
|
|
," ██"
|
|
,"██████"
|
|
,"██ "
|
|
,"██████"]
|
|
number 3 =
|
|
["██████"
|
|
," ██"
|
|
,"██████"
|
|
," ██"
|
|
,"██████"]
|
|
number 4 =
|
|
["██ ██"
|
|
,"██ ██"
|
|
,"██████"
|
|
," ██"
|
|
," ██"]
|
|
number 5 =
|
|
["██████"
|
|
,"██ "
|
|
,"██████"
|
|
," ██"
|
|
,"██████"]
|
|
number 6 =
|
|
["██████"
|
|
,"██ "
|
|
,"██████"
|
|
,"██ ██"
|
|
,"██████"]
|
|
number 7 =
|
|
["██████"
|
|
," ██"
|
|
," ██"
|
|
," ██"
|
|
," ██"]
|
|
number 8 =
|
|
["██████"
|
|
,"██ ██"
|
|
,"██████"
|
|
,"██ ██"
|
|
,"██████"]
|
|
number 9 =
|
|
["██████"
|
|
,"██ ██"
|
|
,"██████"
|
|
," ██"
|
|
,"██████"]
|
|
|
|
colon :: [String]
|
|
colon =
|
|
[" "
|
|
," ██ "
|
|
," "
|
|
," ██ "
|
|
," "]
|
|
|
|
newline :: [String]
|
|
newline =
|
|
["\n"
|
|
,"\n"
|
|
,"\n"
|
|
,"\n"
|
|
,"\n"]
|
|
|
|
space :: [String]
|
|
space =
|
|
[" "
|
|
," "
|
|
," "
|
|
," "
|
|
," "]
|
|
|
|
leadingZero :: (Integral a) => a -> [[String]]
|
|
leadingZero num =
|
|
let (tens, ones) = divMod num 10
|
|
in [number tens, space, number ones]
|
|
|
|
fancyTime :: CalendarTime -> String
|
|
fancyTime time =
|
|
let hour = leadingZero $ ctHour time
|
|
minute = leadingZero $ ctMin time
|
|
second = leadingZero $ ctSec time
|
|
nums = hour ++ [colon] ++ minute ++ [colon] ++ second ++ [newline]
|
|
in concat $ concat $ transpose nums
|
|
|
|
main :: IO ()
|
|
main = do
|
|
time <- getClockTime >>= toCalendarTime
|
|
putStr $ fancyTime time
|
|
threadDelay 1000000
|
|
setCursorColumn 0
|
|
cursorUp 5
|
|
main
|