[Gauche-devel-jp] お知恵を拝借

Back to archive index

Makoto Satoh makot****@yahoo*****
2003年 10月 15日 (水) 09:57:58 JST


佐藤です。

Webで、WindowsのExplorerのようなインタフェースを実現しよ
うと思っています。

ファイルクラスを用意して、ルートディレクトリからそのファ
イルがあるディレクトリまでのディレクトリ階層は、ディレク
トリ名のリストで持たせました。

そのファイルを表示しているときに、そのファイルはどのディ
レクトリにあるのか、いわゆるbreadcrumbを作りたいと思って
います。

下記のようなコードを書いて、その下のような結果となり、一
応所望の動作をしているのですが、再帰の勉強としてここはこ
うしたほうがより良いというアドバイスをいただけたら幸いで
す。よろしくお願いします。

#!/usr/local/bin/gosh

(use text.html-lite)

(define dirs '("/" "foo" "bar" "baz"))

(define (breadcrumb dirs)
  (let* ((base "hoge.cgi?dir=/")
         (root `(,(html:a :href base " / "))))
    (let loop ((rest (cdr dirs))
               (prev-url base)
               (result root))
      (cond ((null? rest) (reverse result))
            (else
             (loop (cdr rest)
                   (string-append prev-url (car rest) "/")
                   (cons
                    (list (html:a :href (string-append prev-url (car rest) "/")
                                  (car rest))
                          " / ")
                    result)))))))

結果:

<html><body><a href="hoge.cgi?dir=/"> / </a
><a href="hoge.cgi?dir=/foo/">foo</a
> / <a href="hoge.cgi?dir=/foo/bar/">bar</a
> / <a href="hoge.cgi?dir=/foo/bar/baz/">baz</a
> / </body
></html
>

(この下にファイルを表示するつもりです)

--
Makoto Satoh



Gauche-devel-jp メーリングリストの案内
Back to archive index