Changeset 13617

Show
Ignore:
Timestamp:
06/10/08 21:03:22 (7 years ago)
Author:
kiyoka
Message:

Improved RSS feed feature.

Location:
lang/gauche/oldtype/trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/gauche/oldtype/trunk/Kahua/oldtype/oldtype/oldtype.kahua

    r13593 r13617  
    114114                (get-text-list oldtype-page))))) 
    115115            "" 
    116             #f 
    117116            )))) 
    118117   nodeset)) 
     
    276275 
    277276 
    278 (define (standard-page wikiname barcode nodes first-line rss-flag) 
     277(define (standard-page wikiname barcode nodes first-line) 
    279278  (html/ (head/ (title/ (string-append wikiname " / " first-line)) 
    280279                (link/ (@/ (rel "stylesheet") (type "text/css") 
     
    282281                (link/ (@/ (rel "stylesheet") (type "text/css") 
    283282                           (href (string-append "/kahua/" (kahua-worker-type) "/import/tooltips.css")))) 
    284                 (when/ rss-flag 
    285                        (link/ (@/ (rel "alternate") (type "application/rss+xml") 
    286                                   (href (string-append "/get-rss/" wikiname ))))) 
     283                (link/ (@/ (rel "alternate") (type "application/rss+xml") 
     284                           (href (string-append "/get-rss/" wikiname )))) 
    287285                (script/ (@/ (src (string-append "/kahua/" (kahua-worker-type) "/import/prototype.js"))      (type "text/javascript"))) 
    288286                (script/ (@/ (src (string-append "/kahua/" (kahua-worker-type) "/import/scriptaculous.js"))  (type "text/javascript"))) 
     
    363361         (if oldtype-page 
    364362             (oldtype-first-line oldtype-page) 
    365              "") 
    366          (if oldtype-page 
    367              (get-rss-entry-pages oldtype-page) 
    368              #f)))) 
     363             "")))) 
    369364 
    370365 
     
    379374;; get-rss entry 
    380375(define (gen-rss/ base-url index-page entry-pages) 
    381   (let ((wikiname       (name-of index-page)) 
    382         (build-date-utc (last 
    383                          (sort 
    384                           (map 
    385                            (lambda (e) 
    386                              (utc-of 
    387                               (get-latest-log 
    388                                (timeline-of e)))) 
    389                            entry-pages))))) 
     376  (let* ((wikiname       (name-of index-page)) 
     377         (entry-pages    (if (null? entry-pages) 
     378                             (list index-page) 
     379                             entry-pages)) 
     380         (build-date-utc (last 
     381                          (sort 
     382                           (map 
     383                            (lambda (e) 
     384                              (utc-of 
     385                               (get-latest-log 
     386                                (timeline-of e)))) 
     387                            entry-pages))))) 
    390388    (rss/ (@/ (version "2.0")) 
    391389          (channel/ 
     
    393391           (link/                 (string-append base-url "show-page/" wikiname)) 
    394392           (description/          (oldtype-first-line index-page)) 
    395            (lastBuildDate/        (oldtype:utc->date-string build-date-utc)) 
     393           (lastBuildDate/        (oldtype:utc->RFC822-date-string build-date-utc)) 
    396394           (docs/                 "http://blogs.law.harvard.edu/tech/rss") 
    397395           (generator/            (string-append "OldType version " *oldtype-version*)) 
     
    406404                                                       (string-append "#" (number->string lineno)) 
    407405                                                       ""))) 
    408                  (pubDate/          (oldtype:utc->date-string 
     406                 (pubDate/          (oldtype:utc->RFC822-date-string 
    409407                                     (utc-of 
    410408                                      (get-latest-log timeline))))))) 
  • lang/gauche/oldtype/trunk/Kahua/oldtype/oldtype/page.scm

    r13542 r13617  
    3434 
    3535(define-module oldtype.page 
     36  (use srfi-1) 
    3637  (use util.list) 
    3738  (use oldtype.log) 
     
    146147 
    147148(define-method get-rss-entry-pages ((self <oldtype-page>)) 
    148   (filter 
    149    (lambda (x) 
    150      x) 
    151    (map 
    152     (lambda (lineno) 
    153       (let* ((m (rxmatch #/\[\[([^\]]+)\]\]/ 
    154                          (get-text self lineno))) 
    155              (wikiname 
    156               (if m 
    157                   (rxmatch-substring m 1) 
    158                   #f))) 
    159         (if m 
    160             (cons 
    161              lineno 
    162              wikiname) 
    163             #f))) 
    164     (_get-rss-lineno-list self)))) 
     149  (filter-map 
     150   (lambda (lineno) 
     151     (let* ((m (rxmatch #/\[\[([^\]|]+)\]\]/ (get-text self lineno))) 
     152            (wikiname 
     153             (if m 
     154                 (rxmatch-substring m 1) 
     155                 #f))) 
     156       (if m 
     157           (cons 
     158            lineno 
     159            wikiname) 
     160           #f))) 
     161   (_get-rss-lineno-list self))) 
    165162 
    166163 
  • lang/gauche/oldtype/trunk/Kahua/oldtype/oldtype/util.scm

    r13542 r13617  
    5454          oldtype:date-string->date-alist 
    5555          oldtype:utc->date-string 
     56          oldtype:utc->RFC822-date-string 
    5657          oldtype:utc->ago-string 
    5758          oldtype:grouping-blog-entries 
     
    242243 
    243244;; 
     245;; Convert utc seconds to "2008-03-20T18:36:00+00:00" RFC822 
     246;; 
     247(define (oldtype:utc->RFC822-date-string utc) 
     248  (sys-strftime "%Y-%m-%dT%H:%M:%S+00:00" (sys-gmtime utc))) 
     249 
     250 
     251;; 
    244252;; Convert utc seconds to "    (10 seconds ago)" 
    245253;; 
  • lang/gauche/oldtype/trunk/src/test.scm

    r13593 r13617  
    307307            (lambda () 
    308308              (get-latest-lines oldtype-timeline))) 
    309              
     309 
     310      (test "The page that doesn't have RSS data." 
     311            '() 
     312            (lambda () 
     313              (get-rss-entry-pages  
     314               (oldtype:load-page "" "Entry1")))) 
     315 
    310316      (test-end) 
    311317