summaryrefslogtreecommitdiff
path: root/src/names.lisp
blob: e0a4e99411ca0d93248e9f6398bff6a0f628ef1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
;;;; names.lisp -- a protocol for getting the names of things, and
;;;; generally referring to objects with strings.

(in-package :dnd)

(defgeneric unique-name (object)
  (:documentation "Returns a unique name for an object, or NIL if it does not have one.")
  (:method ((ob t)) nil))



(defgeneric urlpath (object)
  (:documentation "Return the path to the object given a particular")
  (:method ((object has-uid))
    "If the object has a unique human readable name, urlify that name and
incorporate it into the urlpath. Otherwise use the object's uid.  

Returns /class/identifier."
    (format nil "/~a/~a/~a"
            (urlify (class-name (class-of object)))
            (urlify (uid object))
            (urlify (or (unique-name object) (uid object))))))