Comment detail

年間カレンダー (Nested Flatten)
Date-Calcという同名のPerlのライブラリをCommon Lispで再現したものを
使用してみました。
ライブラリ機能のおまけで英仏独等々に対応させてみましたが、
日本語は対応していないという…。
(y-calendar 2008 7)  ;7はイタリア(数字で指定だと色んな意味で紛らわしいかも)
;==>
;       Gennaio 2008        
;Lun Mar Mer Gio Ven Sab Dom
;      1   2   3   4   5   6
;  7   8   9  10  11  12  13
; 14  15  16  17  18  19  20
; 21  22  23  24  25  26  27
; 28  29  30  31 
; ~~~
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(defpackage :doukaku-119 (:use :cl :date-calc))
(in-package :doukaku-119)

(defun y-calendar (y &optional (lang 1))
  (do ((m 1 (1+ m)) (col 4))
      ((> m 12))
    (format t "~&~%~V:@<~A ~D~>~%~{~A~^ ~}~%"
            (* col 7) (get-month-name m lang) y
            (get-week-day-name-list lang (1- col)))
    (do ((d 1 (1+ d))) (nil)
      (let ((dow (day-of-week y m d))
            (day (day-of-year y m d)))
        (when (= 1 d)
          (format t "~V,0T" (* col (1- dow))))
        (if (zerop day)
            (return)
            (format t "~VD~:[ ~;~%~]" (1- col) d (= 7 dow)))))))

(defun get-month-name (m &optional (lang 1))
  (aref (gethash lang date-calc::month-to-text) m))

(defun get-week-day-name-list (&optional (lang 1) (shoten 3))
  (map 'list (if shoten (lambda (name) (subseq name 0 shoten)) #'identity)
       (subseq (gethash lang date-calc::day-of-week-to-text) 1)))

Index

Feed

Other

Link

Pathtraq

loading...