g000001 / common-lisp-users.jp

3 stars 0 forks source link

hsリーダーマクロの拡張 #11

Closed llibra closed 13 years ago

llibra commented 13 years ago

10 の作業中、l1sp.orgがHyperSpecの用語集も参照できることに気付いたんですが、

[[$$hs glossary/term]]を短く書けるように、次のような拡張案を考えました。 これまでの記法と互換性はあります。

;;; $$hs n [str]
;;;
;;; HyperSpecのnへのリンクを表示する。
;;; リンクの文字列は、strが指定されている場合はstr、それ以外はtermになる。
;;; nが"g:"で始まる場合、用語集の項目を参照する。
;;; それ以外の場合はシンボルを参照する。
(define-reader-macro (hs n . opts)
  (let-optionals* opts ((str #f))
    (let* ((matched (#/^g:(.*)$/ n))
           (prefix (if matched "glossary/" ""))
           (n (if matched (matched 1) n))
           (encoded (regexp-replace-all " " n "_"))
           (url #`"http://l1sp.org/cl/,prefix,encoded"))
      `((a (@ (href ,url)) ,(if str str n))))))

10 と合わせるために[[$$hs g:term]]という記法にしていますが、

[[$$hs g/term]]とか[[$$hs term gls]]とか他の記法も色々あると思います。

g000001 commented 13 years ago

これ良いですねー。g:term でOKではないでしょうか

llibra commented 13 years ago

e2e264b730 で実装しました。

g000001 commented 13 years ago

ありがとうございます!