-- Erzeugt den Kopf eines bestimmten Monatsbildes aus 1. Monatsname + Jahr und 2. Tageskürzeln cheading :: (String,Year) -> Picture Char cheading (m,y) = above (banner (m,y)) dnames -- Ein Bild aus einer Zeile von Tagesnamen als Kopf der Monatsdarstellung dnames :: Picture Char dnames = [" Su Mo Tu We Th Fr Sa"] -- Erzeugt ein einzeiliges Bild aus rechtsbündigem Monatsnamen und Jahreszahl banner :: (String,Year) -> Picture Char banner (m,y) = [rjustify 21 (m ++ " " ++ show y)] -- Erzeugt die formatierten Tage eines Monats als Bild. Dazu werden die Stringliste aller Tage des Monats in Wochengruppen zerlegt und diese zu Bildzeilen konkateniert entries :: (Dayname,Int) -> Picture Char entries = map concat . group 7 . pix -- Erzeugt ein Monatsbild aus Angabe des ersten Wochentages und der Monatslänge pix :: (Int,Int) -> Picture Char pix (d,s) = map (rjustify 3 . pic) [1-d..42-d] where pic n = if 1 <= n && n <= s then show n else ""