root/lang/gauche/oldtype/trunk/tool/tdiary2oldtype/convertToOT.scm @ 20760

Revision 20760, 2.4 kB (checked in by kiyoka, 6 years ago)
  • Property svn:executable set to *
Line 
1#!/usr/local/bin/gosh
2
3(use srfi-1)
4(use util.list)
5(use rfc.uri)
6
7;;
8;; "20081231" => "2008_12_31"
9;;
10(define (convert-date date)
11  (let ((y (substring date 0 4))
12        (m (substring date 4 6))
13        (d (substring date 6 8)))
14    (string-append y "_" m "_" d)))
15
16(define (output-oldtype-file username date entry-data)
17
18  (define (display-diary entry port)
19    (for-each
20     (lambda (lst)
21       (when (string? (car lst))
22         (begin
23            (display (car lst) port)
24            (newline port)
25            (newline port))))
26     entry))
27
28  (define (display-comment entry port)
29    (let1 name (assq-ref entry 'Name:)
30          (for-each
31           (lambda (x)
32             (let1 str (car x)
33                   (when (string? str)
34                     (when (not (#/http:\/\// str))
35                       (begin
36                         (display  (format "##(comment-data ~a ~a)"
37                                           (uri-encode-string name)
38                                           (uri-encode-string str))
39                                   port)
40                         (newline port))))))
41           entry)))
42
43  (call-with-output-file (format "./out/~a.~a.ot" username (convert-date date))
44    (lambda (port)
45      port
46      (begin
47        (for-each
48         (lambda (entry) ;; entry is a diary or a comment.
49           (cond
50            ((assq-ref entry 'Title:)
51             ;; diary
52             (display-diary entry port))
53            ;; comment
54            (else
55             (display-comment entry port))))
56         entry-data)
57        (display "##(comment)" port)
58        (newline port)))))
59
60
61
62(define (save-oldtype-data username diary-data comment-data)
63  (let1 h (make-hash-table 'string=?)
64        ;; make hash data ( key is string of date , value is alist of diary or comment)
65        (for-each
66         (lambda (pair)
67           (hash-table-push! h (car pair) (cdr pair)))
68         (append
69          diary-data
70          comment-data
71          ))
72
73        (hash-table-for-each
74         h
75         (lambda (k v)
76           (output-oldtype-file username k (reverse v))))))
77
78
79(define (main argv)
80  (let ((username       (cadr argv))         
81        (diary-file     (caddr argv))
82        (comment-file   (cadddr argv)))
83    (let ((diary-data
84           (call-with-input-file diary-file read))
85          (comment-data
86           (call-with-input-file comment-file read)))
87      (save-oldtype-data
88       username
89       diary-data
90       comment-data))))
91     
Note: See TracBrowser for help on using the browser.